在 Vue 中,将 html 内容导出为 PDF

本文介绍了如何在Vue项目中利用html2canvas和jspdf插件将HTML内容转换为PDF并下载。首先,html2canvas将HTML转化为Canvas图像,然后通过jspdf将Canvas内容整合成PDF文件。

需要用到两个插件:html2canvasjsPDF

npm install html2canvas --save
npm install jspdf --save
import html2canvas from 'html2canvas';
import jsPDF from "jspdf";

// download()为下载按钮绑定的方法
download() {
   // 下面的"print"为需要导出内容的id(把想导出的html内容用div包起来,加上id="print"即可)
   html2canvas(document.getElementById("print")).then(function(canvas) {
   	 // 此时这个canvas即选中的需要转换的html的canvas形式
   	 // document.body.appendChild(canvas); // 这句的意思是把canvas内容再加在当前页面内容的后面
   	 
     var url = canvas.toDataURL();
     
     var contentWidth = canvas.width;
     var contentHeight = canvas.height;
     
     //一页pdf显示html页面生成的canvas高度;
     var pageHeight = (contentWidth / 592.28) * 841.89;
     
     //未生成pdf的html页面高度
     var leftHeight = contentHeight;
     
     //页面偏移
     var position = 0;
     
     //a4纸的尺寸[595.28,595.28],html页面生成的canvas在pdf中图片的宽高
     var imgWidth = 595.28;
     var imgHeight = (592.28 / contentWidth) * contentHeight;

     var pdf = new jsPDF("", "pt", "a4");

     if (leftHeight < pageHeight) {
       pdf.addImage(url, "JPEG", 0, 0, imgWidth, imgHeight);
     } else {
       // 分页
       while (leftHeight > 0) {
         pdf.addImage(url, "JPEG", 0, position, imgWidth, imgHeight);
         leftHeight -= pageHeight;
         position -= 841.89;
         
         //避免添加空白页
         if (leftHeight > 0) {
           pdf.addPage();
         }
       }
     }
     
     pdf.save("xxx.pdf");
   });
 }



参考:

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值