vue page generation pdf and open in new tab

vue page generation pdf and open in new tab

1. html page into a picture
npm install --save html2canvas
2. The picture generated pdf
npm install jspdf --save
3. Add htmlToPdf.js in the js
says:

import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'

export default {
    install(Vue, options) {
        Vue.prototype.getPdf = function (title) {
            let url;
            html2Canvas(document.querySelector('#pdfDom'), {
                allowTaint: true
            }).then(function (canvas) {
                let contentWidth = canvas.width
                let contentHeight = canvas.height
                let pageHeight = contentWidth / 592.28 * 841.89
                let leftHeight = contentHeight
                let position = 0
                let imgWidth = 595.28
                let imgHeight = 592.28 / contentWidth * contentHeight
                let pageData = canvas.toDataURL('image/jpeg', 1.0)
                let PDF = new JsPDF('', 'pt', 'a4')
                if (leftHeight < pageHeight) {
                    PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
                } else {
                    while (leftHeight > 0) {
                        PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
                        leftHeight -= pageHeighthhhhhhh
                        position -= 841.89
                        if (leftHeight > 0) {
                            PDF.addPage()
                        }
                    }
                }
                window.open(PDF.output('bloburl'))//新标签打开生成的pdf
            }
            )
        }
    }
}


4. main.js introduced and used in the

import htmlToPdf from '@/js/htmlToPdf.js'
Vue.use(htmlToPdf)

  1. The outer wrapping of the content to be generated pdf
    <div class="row" id="pdfDom">
      <PrescPrintTpl ref="printTpl"  :info="printDetail"></PrescPrintTpl>
    </div>
  1. Click to join in the methods generate (print) event
    this.getPdf (); // import in the main, it can be used directly
    Here Insert Picture Description
Released two original articles · won praise 0 · Views 13

Guess you like

Origin blog.csdn.net/y13488733540/article/details/105125683
Recommended