var whiteImg = "data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMraHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk2QjIxRjMxMDY4RDExRUE5NEYyRUI4OUU5NEFDQzE5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk2QjIxRjMyMDY4RDExRUE5NEYyRUI4OUU5NEFDQzE5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTZCMjFGMkYwNjhEMTFFQTk0RjJFQjg5RTk0QUNDMTkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTZCMjFGMzAwNjhEMTFFQTk0RjJFQjg5RTk0QUNDMTkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDg8QDw4MExMUFBMTHBsbGxwfHx8fHx8fHx8fAQcHBw0MDRgQEBgaFREVGh8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx//wAARCAAIAxUDAREAAhEBAxEB/8QASwABAQAAAAAAAAAAAAAAAAAAAAgBAQAAAAAAAAAAAAAAAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAARAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/AKpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//2Q=="; function ExportPdf(printId, pdfName) { $('body').append($( '
正在生成PDF,请稍后...
')); html2canvas(document.querySelector("#" + printId), { allowTaint: true, scale: 1 }).then((function (canvas) { //未生成pdf的html页面高度 var leftHeight = canvas.height; var ph = 30; var a4Width = 595.28; var a4Height = 841.89 ; //一页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'); var index = 1, canvas1 = document.createElement('canvas'), height; pdf.setDisplayMode('fullwidth', 'continuous', 'FullScreen'); $('#pdfTip >div').html('正在生成第1页,共页...'); function createImpl(canvas) { if (leftHeight > 0) { index++; var checkCount = 0; if (leftHeight > a4HeightRef) { for (var i = position + a4HeightRef; i >= position; i--) { var isWrite = true; for (var j = 0; j < canvas.width; j++) { var c = canvas.getContext('2d').getImageData(j, i, 1, 1).data; if (c[0] != 0xff || c[1] != 0xff || c[2] != 0xff) { isWrite = false; break; } } if (isWrite) { checkCount++; if (checkCount >= 10) { break; } } else { checkCount = 0; } } height = Math.round(i - position) || Math.min(leftHeight, a4HeightRef); if (height <= 0) { height = a4HeightRef; } } else { height = leftHeight; } canvas1.width = canvas.width; canvas1.height = height; // console.log(index, 'height:', height, 'pos', position); var ctx = canvas1.getContext('2d'); ctx.drawImage(canvas, 0, position, canvas.width, height, 0, 0, canvas.width, height); //var pageHeight = Math.round(a4Width / canvas.width * height); // pdf.setPageSize(null, pageHeight) if (position != 0) { pdf.addPage(); } //pdf.addImage(whiteImg, "jpeg", 0, 0, a4Width, ph); var h = a4Width / canvas1.width * height; pdf.addImage(canvas1.toDataURL('image/jpeg', 1.0),'JPEG',0,0,a4Width,h); //pdf.addImage(whiteImg, "jpeg", 0, 0, a4Width, h + ph); leftHeight -= height; position += height; $('#pdfTip .pdfProgress').text(index + 1); $('#pdfTip .pdfTotal').text(index + Math.ceil(leftHeight / a4HeightRef)); if (leftHeight > 0) { setTimeout(createImpl, 500, canvas); } else { pdf.save(pdfName + '.pdf'); $('#pdfTip').remove(); } } } //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight < a4HeightRef) { pdf.addImage(pageData, 'JPEG', 0, 0, a4Width, a4Width / canvas.width * leftHeight); pdf.save(pdfName + '.pdf'); } else { try { pdf.deletePage(0); $('.pdfTip').show(); $('.pdfTotal').text(index + Math.ceil(leftHeight / a4HeightRef)); setTimeout(createImpl, 500, canvas); } catch (err) { console.log(err); } } })); } //function ExportPdf(printId,name) { // html2canvas(document.querySelector("#" + printId), // { // allowTaint: !0, // scale: 2 // }).then((function(canvas) { // var contentWidth = canvas.width, // contentHeight = canvas.height, // pageData = canvas.toDataURL("image/jpeg", 1), // pdfX, // pdfY = contentHeight / 2 * .75, // whiteHeight = 60, // pdfW = 595.32, // pdfH = 841.89, // imgX = contentWidth / 2 * .75, // imgY = contentHeight / 2 * .75, // imgH = 721.89, // position = 60, // pageTempHeight = contentHeight / 2 * .75, // PDF = new jsPDF("", "pt", "a4"); // if (imgY < imgH) // PDF.addImage(whiteImg, "jpeg", 0, 0, pdfW, 60), // PDF.addImage(pageData, "jpeg", 0, 0, imgX, imgH), // PDF.addImage(whiteImg, "jpeg", 0, 781.89, pdfW, 60); // else // for (; pageTempHeight > 0;) // PDF.addImage(pageData, "jpeg", 0, position, imgX, imgY), // PDF.addImage(whiteImg, "jpeg", 0, 0, pdfW, 60), // PDF.addImage(whiteImg, "jpeg", 0, 782.89, pdfW, 60), // position -= imgH, // (pageTempHeight -= imgH) > 0 && PDF.addPage(); // PDF.save(name + ".pdf"); // })); //}