javascript - 如何使用 jsPDF 在 PDF 的两页中显示图像?

标签 javascript jquery pdf html2canvas jspdf

我有一个 html 页面。其中我有一个按钮,每当我单击此按钮时,它都会使用 html2canvas 将整个 html 页面转换为数据图像,并使用 jsPDF 库将其放入 PDF 中。 我正在使用的 javascript 是

$("#printButton").click(function(){
html2canvas([document.getElementById('form1')], {
        onrendered: function (canvas) {
            var imageData = canvas.toDataURL('image/jpeg',1.0); 
           var doc = new jsPDF('landscape');
           doc.addImage(imageData,'JPEG',5,20,200,150);
           doc.save('Test.pdf');
     }
    });
});

它只在第一页显示图像。但每当 html 页面大小更大时,我想剪切图像数据并将其放在 PDF 的两页中。 请帮我解决这个问题。

最佳答案

这可能不是完美的答案,但仍然有效

                $("#btnSaveAsPDF").click(function () {
                html2canvas($("#tblSaveAsPdf_canvas"), {
                onrendered: function (canvas) {
                var imageData = canvas.toDataURL("image/jpeg");
                var image = new Image();
                image = Canvas2Image.convertToJPEG(canvas);
                var doc = new jsPDF();
                doc.addImage(imageData, 'JPEG', 12, 10);
                var croppingYPosition = 1095;
                count = (image.height) / 1095;

                for (var i =1; i < count; i++) {
                        doc.addPage();
                        var sourceX = 0;
                        var sourceY = croppingYPosition;
                        var sourceWidth = image.width;
                        var sourceHeight = 1095;
                        var destWidth = sourceWidth;
                        var destHeight = sourceHeight;
                        var destX = 0;
                        var destY = 0;
                        var canvas1 = document.createElement('canvas');
                        canvas1.setAttribute('height', destHeight);
                        canvas1.setAttribute('width', destWidth);                         
                        var ctx = canvas1.getContext("2d");
                        ctx.drawImage(image, sourceX, 
                                             sourceY,
                                             sourceWidth,
                                             sourceHeight, 
                                             destX, 
                                             destY, 
                                             destWidth, 
                                             destHeight);
                        var image2 = new Image();
                        image2 = Canvas2Image.convertToJPEG(canvas1);
                        image2Data = image2.src;
                        doc.addImage(image2Data, 'JPEG', 12, 10);
                        croppingYPosition += destHeight;              
                    }                  
                var d = new Date().toISOString().slice(0, 19).replace(/-/g, "");
                filename = 'report_' + d + '.pdf';
                doc.save(filename);
            }

        });
    });

关于javascript - 如何使用 jsPDF 在 PDF 的两页中显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22991086/

相关文章:

ios - 在 iPad 上创建的打印和电子邮件文档

c# - 返回内存流 - 提供损坏的 PDF 文件或 "cannot accessed a closed stream"

javascript - 在 window.popstate 上获取新的 URL

javascript - Vue router 从 vue router 链接获取值

javascript - 在 html 元素上使用 jQuery ReplaceWith

javascript - 如果方法在 jQuery 的数组中可用,则执行函数

javascript - 给定一个外盒和内盒,确定内盒的位置

javascript - 如何使用 Javascript 为下载的 PDF 文件设置密码保护

javascript - 有没有一种技术可以用来使用调用函数的参数来调用函数?

javascript - `it()`函数在这里做什么?