js pdf浏览器崩溃了chrome,firefox

时间:2016-01-21 12:51:07

标签: jquery image pdf jspdf html2canvas

我们正在使用jsPDF生成HTML到PDF。然而,当我向我的PDF添加40个元素并将其渲染到画布时,我的浏览器会崩溃。

我们使用以下功能添加元素作为图像到pdf。

function addElement(element, doc, opt, newPage, callback) {
        var thiscreen = element;
        //Get the original background color.
        var originalBGColor = thiscreen.style.backgroundColor;
        //Change the background color of the element to desired color.
        if (opt.bgColor)
            thiscreen.style.backgroundColor = opt.bgColor;
        var options = options || {};
        options.elements = [thiscreen];
        //Increment the in-progress counter.
        counter++;
        console.log('adding' + counter);
        console.log(element);
        //The complete callback method.
        options.complete = setTimeout(function(images) {
            //Decrement the in-progress counter since the image is successfully generated..
            counter--;
            console.log('complete' + counter);
            console.log(element);
            var queue = html2canvas.Parse(thiscreen, images, options),
                canvas = html2canvas.Renderer(queue, options);
            //Reset the background color.
            thiscreen.style.backgroundColor = originalBGColor;
            //Add the generated image to PDF document.
            doc.addImage(canvas.toDataURL(), 'png', opt.x, opt.y, opt.width, opt.height);
            //Call the callback method if any
            if (callback) {
                callback();
            }
        }, 500);
        //Conver the html to PNG using html2canvas util.
        html2canvas.Preload(thiscreen, options);
    }

我们也试过使用以下解决方案。

var blob = doc.output("blob");
window.open(URL.createObjectURL(blob));

或者有没有办法将低分辨率图像添加到pdf。

1 个答案:

答案 0 :(得分:1)

如果您有大量图片,请尝试将压缩参数与addImage配合使用。

https://github.com/MrRio/jsPDF/blob/master/src/modules/addimage.js#L720

您可能需要测试每个压缩选项,以查看哪个压缩选项可以处理您需要的选项:'FAST','SLOW','MEDIUM','NONE'。

在测试期间,我已经完成了大量图像的PDF,这已经产生了巨大的差异。处理过程中内存仍然很高,但确实提高了速度和性能。