vue页面导出pdf文档并上传pdf格式给后台

  1. 下载依赖
    yarn add html2canvas // 将页面html转换成图片
    yarn add jspdf // 将图片生成pdf
  2. 定义全局函数,创建htmlToPdf.js文件
  3. import html2Canvas from 'html2canvas'
    
    import JsPDF from 'jspdf'
    
    export default {
    
        install(Vue, options) {
    
            Vue.prototype.getPdf = function (pdfFileName, isDownload, hide) {
    
                return new Promise((resolve, reject) => {
    
                    // this.$message.loading('正在下载', 2.5)
    
                    let ele = document.getElementById('pdfDom')
    
                    pdfFileName = pdfFileName || 'pdf'
    
                    window.pageYoffset = 0 // 滚动置顶
    
                    document.documentElement.scrollTop = 0
    
                    document.body.scrollTop = 0
    
                    html2Canvas(ele, {
    
                        allowTaint: true,
    
                        windowWidth: document.body.scrollWidth,
    
                        windowHeight: document.body.scrollHeight
    
                    }).then(canvas => {
    
                        // const _this = this
    
                        // 未生成pdf的html页面高度
    
                        var leftHeight = canvas.height
    
                        var a4Width = 555.28 // 原A4宽 592 因为要设置边距 20 ,这里要减掉 40
    
                        var a4Height = 801.89 // 原A4高   841 因为要设置边距 20 ,这里要减掉 40
    
                        // 一页pdf显示html页面生成的canvas高度;
    
                        var a4HeightRef = Math.floor(canvas.width / a4Width * a4Height)
    
    
    
                        // pdf页面偏移
    
                        var position = 0
    
    
    
                        var pageData = canvas.toDataURL('image/jpeg', 1.0)
    
    
    
                        var pdf = new JsPDF('x', 'pt', 'a4')
    
                        // let printIndex = 1
    
                        const canvas1 = document.createElement('canvas')
    
                        let height
    
                        pdf.setDisplayMode('fullwidth', 'continuous', 'FullScreen')
    
    
    
                        function createImpl(canvas) {
    
                            if (leftHeight > 0) {
    
                                // printIndex+&

你可能感兴趣的:(vue.js,javascript,前端)