使用pdfmake导出pdf文件

package配置pdfmake html2canvas,然后npm安装

javascript 复制代码
"pdfmake": "0.2.10",
"html2canvas": "1.4.1",

使用如下,

html里面组件加个id为exportPdf

然后调用下面的方法即可

输出的pdf为整个组件的截图

javascript 复制代码
import * as pdfMake from 'pdfmake/build/pdfmake';
import html2canvas from 'html2canvas';

exportPdf() {
    const widthScale = 2;
    const pdfWidth = 600 * widthScale; // pdf宽度
    const cntElem = document.getElementById('exportPdf');// 组件的id
    const width = cntElem.offsetWidth;
    const height = cntElem.scrollHeight;
    const scale = 3; // 数字越大,导出的pdf越清晰
    const opts = {
      scale: scale,
      width: width,
      height: height,
      useCORS: true,
    };

    html2canvas(cntElem, opts).then(canvas => {
      const contents = [];
      contents.push({
        image: canvas.toDataURL('image/jpeg'),
        width: pdfWidth,
      });

      pdfMake
        .createPdf({
          pageSize: {
            width: pdfWidth,
            height: pdfWidth / (width / height), // 按照实际高度比,自定义pdf高度
          },
          pageMargins: [0, 0],
          content: contents,
        })
        .download('11111');//1111是pdf的名称
    });
  }
相关推荐
学习3人组5 分钟前
Node.js 网站服务器开发
运维·服务器·node.js
rising start5 分钟前
五、CSS盒子模型(下)
前端·javascript·css
不吃香菜的猪1 小时前
el-upload实现文件上传预览
前端·javascript·vue.js
Q_Q19632884752 小时前
python+django/flask基于Echarts+Python的图书零售监测系统设计与实现(带大屏)
spring boot·python·django·flask·node.js·php
qq_427506082 小时前
基于Vue 3和Element Plus实现简单的钩子函数管理各类弹窗操作
前端·javascript·vue.js
粥里有勺糖2 小时前
视野修炼-技术周刊第126期 | TypeScript #1
前端·node.js·github
拉不动的猪3 小时前
# 关于初学者对于JS异步编程十大误区
前端·javascript·面试
玖釉-3 小时前
解决PowerShell执行策略导致的npm脚本无法运行问题
前端·npm·node.js
yivifu5 小时前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花5 小时前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js