项目需求:根据HTML页面导出完整的PDF
技术栈: html2canvas 、 jspdf 、 Vue
首先将包下载到项目中,然后在制定页面引入依赖包
import html2Canvas from "html2canvas";
import JsPDF from "jspdf";
定义一个ID为pdfDom的HTML节点,也就是你想导出的那部分
<div class="right" id="pdfDom">这是PDF的内容<div>
<img src="" alt="" v-show="false" id="waterMarkImg"> // 图片水印的dom元素
首先页面会被转化为canvas,然后生成图片后导出PDF文件,那生成canvas的时候会出现不清晰的问题,那就将canvas的画布增大两倍,然后在转成PDF的时候再缩小,清晰度就会变高。
接下来在导出按钮上绑定事件,在点击事件里粘贴如下代码
let title = this.articleInfo.title; // 设置导出PDF的文件名
var element = document.getElementById("pdfDom"); // 获取需要导出的DOM节点
var shareContent = element; //需要截图的包裹的(原生的)DOM 对象
var width = shareContent.offsetWidth; //获取dom 宽度
var height = shareContent.offsetHeight; //获取dom 高度
var canvas = document.createElement("canvas"); //创建一个canvas节点
var scale = 2; //定义任意放大倍数 支持小数
canvas.width = width * scale;
canvas.height = height * scale;
canvas.get