+
95
-

回答

可以使用html2canvas和jspdf两个js插件实现。

完整示例代码:

点击查看全文

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
    <title>BFW NEW PAGE</title>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/html2canvas.js"></script>
    <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jspdf.js"></script>

    <style>
        .elearea{
            width: 800px;
            height: 600px;
            overflow: hidden;
        }
    </style>
</head>

<body>
    <div class="elearea">
        <h1>Hello, World!</h1>
        <p>This is a simple example of using html2canvas.</p>
        <img src='//repo.bfw.wiki/bfwrepo/image/5d6539385ad28.png' />
    </div>

    <div  class="elearea">
        <h1>你好</h1>
        <p> wosh副标题</p>
        <img src='//repo.bfw.wiki/bfwrepo/image/5d65ea7d8bc8b.png' />
    </div>
    <button id="convertButton">图片分页保存到pdf文件</button>
    <script>
    
    var elements = document.getElementsByClassName('elearea');
   var pdf = new jsPDF('landscape', 'px', [800,600]);

        document.getElementById("convertButton").addEventListener("click", function() {
    var gli=0;        

for (var i = 0; i < elements.length; i++) {
    
     html2canvas(elements[i],{allowTaint: false,useCORS: true,backgroundColor: "transparent",width: 800,height: 600 }).then(function(canvas) {
          
                    var image = canvas.toDataURL("image/png");
                 
                 
                
                    pdf.addImage(image, 'JPEG', 0, 0,800, 600, '', 'FAST');
                    gli++
                    if(gli==elements.length){
                         pdf.save('test1.pdf');
                    }else{
                        pdf.addPage();
                    }
                    
                    
                    
                    
                
                 
                    
                     
                });
               ;

  
}

        });
    </script>
</body>

</html>

网友回复

我知道答案,我要回答