Javascript PDF达到一定大小后无法添加内容

Javascript PDF达到一定大小后无法添加内容,javascript,pdf,html2canvas,jspdf,Javascript,Pdf,Html2canvas,Jspdf,我制作了一个递归函数,用于生成迭代某些div的PDF。当不再有div时,我保存PDF。我使用catpure将每个div的HTML代码压缩到画布中,将画布作为图像并生成PDF。此代码运行良好,除非PDF超过8MB,否则将停止添加内容: 我想知道jsPDF在生成PDF时是否有大小限制 var doc = new jsPDF(); appendDataToPDF(some_div, doc, 1); /* calling function below */ function appendDataT

我制作了一个递归函数,用于生成迭代某些div的PDF。当不再有div时,我保存PDF。我使用catpure将每个div的HTML代码压缩到画布中,将画布作为图像并生成PDF。此代码运行良好,除非PDF超过8MB,否则将停止添加内容:

我想知道jsPDF在生成PDF时是否有大小限制

var doc = new jsPDF();

appendDataToPDF(some_div, doc, 1); /* calling function below */

function appendDataToPDF(div, doc, top)
{
    html2canvas(div, {
        onrendered: function(canvas) {
            var img = canvas.toDataURL();
            doc.addImage(img, 'JPEG', 10, top, width, height);

            if(top > 200 /* some value to detect if limit of page reached */)
            {
                doc.addPage();
                top = 1;
            }
            else
                top += 40;

            div = div.nextSibling;

            if(div === null)
                doc.save('Test.pdf');
            else
                appendDataToPDF(div, doc, top);
        }
    });
}

我刚刚意识到问题是什么(讽刺的是,在增加了赏金之后)。我不知道为什么,但我只是在正文中附加了我要转换为PDF的div,它起了作用。现在将div中的所有内容转换为html。

除了计算机可用的资源之外,不应该有任何硬限制。我生成的最大值只是一个2.7MiB的21页pdf文件,但我只能将此文件保存在我的机器上。直接在新选项卡中显示会导致FF和Chrome崩溃,可能是因为data:uri太长,因为较小的文件可以正常工作

仅供参考,您实际上可以在当前版本中调用
doc.addHTML()
,该版本使用:


我遇到了类似的问题。似乎为了从DOM元素生成画布(以及PDF),DOM元素必须是呈现的HTML文档的一部分。我想它需要成为文档的一部分来计算所有维度。谢谢,我也不知道这个插件。
function appendDataToPDF(div, doc, top, left) {
    doc.addHTML(div, top, left, {w: width, h: height}, function() {
        if(top > 200) {
            doc.addPage();
            top = 1;
        }
        else
            top += 40;

        div = div.nextSibling;

        if(div === null)
            doc.save('Test.pdf');
        else
            appendDataToPDF(div, doc, top, left);
    });
}