有什么方法可以结合使用 JSPDF 和 html2canvas 来加速移动浏览器上的 PDF 下载?

Is there any way to speed up PDF download on mobile browsers using a combination of JSPDF and html2canvas?

我正在使用 html2canvas 和 jspdf 的组合从 DOM 文件创建 PDF,以将 DOM 的一部分转换为图像,然后将其添加到已创建相应的 PDF 文件。

这在桌面浏览器上运行良好,但在移动浏览器上速度极慢。

您可以通过转到下面提到的 link 然后选择任何模板,然后单击下载选项来在移动浏览器上测试该问题。

https://countenance-proto.herokuapp.com/resumevariation

这是相应的 canvas 到 pdf 转换的功能代码。

 printTemplate = () => {
        const input = document.getElementById("main-document");

        html2canvas(input, {
            scale: 2
        })
            .then((canvas) => {
                const imgData = canvas.toDataURL('image/png');
                const pdf = new jsPDF("p", "mm", "a4", true);

                let width = pdf.internal.pageSize.getWidth();
                let height = pdf.internal.pageSize.getHeight();

                pdf.addImage(imgData, 'PNG', 0, 0, width, height, '', 'FAST');
                pdf.save("countenance-resume.pdf");
            });

    }

我希望它与在桌面上下载 pdf 所需的时间相当,甚至更少。

尝试使用

const imgData = canvas.toDataURL('image/jpeg', 1.0);
pdf.addImage(imgData, 'JPEG', 0, 0, width, height, '', 'FAST');

而不是

const imgData = canvas.toDataURL('image/png');
pdf.addImage(imgData, 'PNG', 0, 0, width, height, '', 'FAST');

据我所知,jsPDF无论如何都会将PNG图像转换为JPEG,因此转换需要更长的时间,如果直接使用JPEG可以避免这种情况。