HTML页面转化为带有水印的PDF文件
我之前写过一篇如何把HTML页面转化为PDF文件,这里就不详讲了,主要讲如何增加水印
一、如何增加水印,在什么时候增加水印?
在用 html2Canvas 框架生成canvas后,操作canvas增加水印。代码如下:
1 downloadPDF(){
2 var title = 'RFM'
3 let self = this;
4 let targetDom = document.querySelector('#pdfDom');
5 this.$nextTick(()=>{ // 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
6 html2Canvas(targetDom, {
7 allowTaint: true,
8 height: targetDom.scrollHeight
9 }).then(function (canvas) { // 通过promise返回canvas元素
10 let context = canvas.getContext('2d');
11 self.printWater(context);
12 let PDF = new JsPDF('p', 'pt', 'a4')
13 // 中间操作代码省略
14 PDF.save(title + '.pdf') // 保存pdf文档,本地下载pdf文件
15 })
16 })
17 this.timeout = setTimeout(() => {
18 self.overflow = 'auto';
19 }, 1000);
20
21 },
22 // 打印水印
23 printWater(context) {
24 context.font='200px Palatino'
25 context.fillStyle = 'rgba(0,0,0,0.03)';
26 let height = 0;
27 context.save();
28 let pageHeight = context.canvas.height / 592.28 * 841.89
29 while(height < context.canvas.height) {
30 context.save();
31 context.translate(0,height) // 移动原点位置
32 context.rotate(Math.PI/4); // 旋转
33 context.fillText('我是个美女', 300 ,350);
34 context.restore();
35 height += 841.89;
36 }
37 context.restore();
38 },