使用jspdf插件生成pdf。

原理:通过canvas将div截成图片。动态计算分页,然后将图片插入到pdf中。

注意:div中有图片,图片路径要写相对路径不然图片打印不出来。div的背景要设置成白色不然生成的pdf为黑色。

$(document).ready(function(){
 		//给时间控件加上样式
 	var downPdf = document.getElementById("renderPdf");
 	var show=document.getElementById("zz");
	var name = document.getElementById("name").innerHTML;
 	downPdf.onclick = function() {
     html2canvas(document.conn, {
         onrendered:function(canvas) {

             var contentWidth = canvas.width;
             var contentHeight = canvas.height;

             //一页pdf显示html页面生成的canvas高度;
             var pageHeight = contentWidth / 592.28 * 841.89;
             //未生成pdf的html页面高度
             var leftHeight = contentHeight;
             //pdf页面偏移
             var position = 0;
             //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
             var imgWidth = 595.28;
             var imgHeight = 592.28/contentWidth * contentHeight;

             var pageData = canvas.toDataURL('image/jpeg', 1.0);

             var 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(name+'.pdf');
         }
     })
 }
 });



猜你喜欢

转载自blog.csdn.net/qq_27224549/article/details/78341104