ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – JSPDF – 如何将具有各种页面大小(高度和宽度)的多个图像导出到单个pdf文件

2019-10-02 19:35:09  阅读:802  来源: 互联网

标签:jspdf javascript jquery


我有多个不同大小(高度和宽度)的图像需要使用jspdf转换为PDF,但我无法使用addPage()函数来做到这一点.
是否可以将具有不同页面大小的图像导出为单个pdf?

解决方法:

我实际上能够使用addPage([imgWidth, imgHeight])添加具有不同图像大小的多个页面,除了第一页,其由新的jsPDF(‘l’,’pt’,’a4′)定义.

可以使用.deletePage(1)删除空白的第一页.如果愿意,您还可以在第一页添加一些文本.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" 
    integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/"
    crossorigin="anonymous"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
<script>
    function exportPdf(urls) {
        let pdf = new jsPDF('l', 'pt', 'a4');
        pdf.text(20, 20, 'Some text here');

        for (let i = 0; i < urls.length; i++) {
            let img = new Image();
            img.src = urls[i];
            img.onload = function () {
                const imgWidth = this.width;
                const imgHeight = this.height;
                const imgRatio = imgWidth / imgHeight;
                if (i >= 0) {
                    if (imgRatio > 0) {
                        pdf.addPage([imgWidth, imgHeight]);
                    }
                    else {
                        pdf.addPage([imgWidth, imgHeight], 'p');
                    }
                }                
                pdf.setPage(i + 2);
                pdf.addImage(img, 'JPEG', 0, 0, imgWidth, imgHeight, null, 'NONE');

                if (i == urls.length - 1) {
                    pdf.save('Photos.pdf');
                }
            }
        }
    }
</script>

更好但更复杂的方法是使用固定页面格式并计算图像大小和宽高比,然后相应地设置参数(并根据需要旋转图像),以便图像可以适合纸张,即a4在此案件.它可以是pdf.addImage(img,’JPEG’,adjustX,adjustedY,adjustWidth,adjustedHeight,null,’NONE’);或pdf.addImage(img,’JPEG’,adjustX,adjustedY,adjustedWidth,adjustedHeight,null,-90);

有关代码示例,请参阅我的answer to this question.

标签:jspdf,javascript,jquery
来源: https://codeday.me/bug/20191002/1843954.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有