html标签生成图片下载成为pdf
2021-12-23
写入mixins里面做成公用的
npm install jspdf
npm i html2canvas
import html2canvas from "html2canvas" import jsPDF from "jspdf" export const download = { methods: { addcanvas() {html2canvas(this.$refs.wrapper, { allowTaint: true, useCORS: true // 解决跨域问题 }).then(canvas => { let dataURL = canvas.toDataURL("image/png", 1); console.info(dataURL) // let oA = document.createElement("a"); // oA.download = '';// 设置下载的文件名,默认是'下载' // oA.href = dataURL; // document.body.appendChild(oA); // oA.click(); // oA.remove(); // 下载之后把创建的元素删除
let contentWidth = canvas.width; let contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; let pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 let leftHeight = contentHeight; //页面偏移 let position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 let imgWidth = 595.28; let imgHeight = 592.28 / contentWidth * contentHeight; let pdf = new jsPDF('', 'pt', 'a4') if (leftHeight < pageHeight) { pdf.addImage(dataURL, 'png', 0, 0, imgWidth, imgHeight); } else { while (leftHeight > 0) { pdf.addImage(dataURL, 'png', 0, position, imgWidth, imgHeight) leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if (leftHeight > 0) { pdf.addPage(); } } } pdf.save("tsx.pdf"); });
}, }, }