123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- 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($(
- '<div id="pdfTip" class="pdfTip" style="width: 500px;height:50px;background:rgba(0,0,0,.5);color: red;position: fixed;top: 0;left: 0;right: 0;bottom: 0;margin: auto; z-index:9999;"><div style="text-align:center;line-height:50px;font-size:20px;font-weight:600;">正在生成PDF,请稍后...</div></div>'));
- 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('正在生成第<span class="pdfProgress">1</span>页,共<span class="pdfTotal"></span>页...');
- 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");
- // }));
- //}
|