h5页面导出为pdf两种方法(纯前端)

时间:2024-02-15 14:20:06
<div class="row" id="pdfDom">
                    <van-cell-grounp>
                            <van-cell>
                                业务咨询
                            </van-cell>
                            <van-cell>
                                业务咨询
                            </van-cell>
                            <van-cell>
                                业务咨询
                            </van-cell>
                            <van-cell>
                                业务咨询
                            </van-cell>
                    </van-cell-grounp>
                </div>                            
            <button @click="getPdf">文件下载</button>    
<script src="js/html2canvas.js"></script>
<script src="js/jspdf.js"></script>
<script src="js/vue.min.js" ></script>        
<script src="js/vant.min.js" ></script>
var app=new Vue({

    el:"#app",
    data:function(){
    
    return{
                            
             htmlTitle: "页面导出PDF文件名",
             url:""
                       
        }
    
    },     
    methods:{
        
        getPdf:function(){
                    var title = this.htmlTitle
                      html2canvas(document.querySelector(\'#pdfDom\'), {
                        allowTaint: true
                      }).then(function (canvas) {
                        var contentWidth = canvas.width
                        var contentHeight = canvas.height
                        var pageHeight = contentWidth / 592.28 * 841.89
                        var leftHeight = contentHeight
                        var position = 0
                        var imgWidth = 595.28
                        var imgHeight = 592.28 / contentWidth * contentHeight
                        var pageData = canvas.toDataURL(\'image/jpeg\', 1.0)
                        var 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 -= pageHeight
                            position -= 841.89
                            if (leftHeight > 0) {
                              PDF.addPage()
                            }
                          }
                        }
                        PDF.save(title + \'.pdf\');
                        console.log(PDF)                                                                                   
                      })                                
                },
        
                      
  }
})

以上为pdf.js加html2canvas.js方法

 

以下为pdfmake.js方法(这里写的例子只适合英文,中文暂时没研究)

<button onclick="demo()">导出PDF</button>
<script src="js/pdfmake.js" ></script>        
<script src="js/vfs_fonts.js" ></script>
function demo(){
var cont = {
                content: [
                    \'中英文测试\',
                    \'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines\'
                ]
            };
 pdfMake.createPdf(cont).download();

}