vue前端转化PDF文件(不用前端)

原创
小哥 3年前 (2022-11-10) 阅读数 46 #大杂烩

1.安装两个环境

1.将页面html转换为图片

npm install --save html2canvas 

2.生成图片pdf

npm install jspdf --save

2.配置一个js文件-htmlToPdf.js

文件地址
src/utils/htmlToPdf.js

import html2Canvas from html2canvas
import JsPDF from jspdf
export default {
    install(Vue, options) {
        Vue.prototype.getPdf = function(idStr, title) {
            html2Canvas(document.querySelector(# + idStr), {
                // allowTaint: true,
                useCORS: true
            }).then(function(canvas) {
                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
                // canvas.crossOrigin="anonymous";
                let pageData = canvas.toDataURL(image/jpeg, 1.0);

                let PDF = new JsPDF(, pt, a4)
                //有两种高度需要区分,一种是html页面的实际高度,以及生成的pdf页面高度(841.89)
                //当含量不超过pdf一个页面显示范围而不分页。
                if (leftHeight < pageHeight) {
                    PDF.addImage(pageData, JPEG, 0, 0, imgWidth, imgHeight)
                } else {
                    while (leftHeight > 0) {
                        PDF.addImage(pageData, JPEG, 0, position, imgWidth, imgHeight)
                        leftHeight -= pageHeight
                        position -= 841.89
                        if (leftHeight > 0) {
                            //避免添加空白页
                            PDF.addPage()
                        }
                    }
                }
                PDF.save(title + .pdf)
            })
        }
    }
}

3.在main.js文件中的全局定义

src/main.js

/*引入导出js*/
import htmlToPdf from ./utils/htmlToPdf;
Vue.use(htmlToPdf);

4.在需要导出的页面上,调用我们的getPdf方法

导出报告
//printReport为导出div部分的id
/*导出PDF报告*/ //printReport为导出div部分的id,将导出分析报告。PDF的文件名 headelReport(){ this.getPdf("printReport","分析报告"); },
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门