chrome、firefox 的 Js pdf 浏览器崩溃
Js pdf browser crashes for chrome, firefox
我们正在使用 jsPDF 将 HTML 生成为 PDF。然而,在向我的 PDF 添加 40 个元素并将其呈现为 canvas 时,我的浏览器崩溃了。
我们正在使用以下函数将元素作为图像添加到 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 中。
如果您有很多图片,请尝试使用 addImage 的压缩参数。
https://github.com/MrRio/jsPDF/blob/master/src/modules/addimage.js#L720
您可能需要测试每个压缩选项,看看哪个压缩选项可以满足您的需求:'FAST'、'SLOW'、'MEDIUM'、'NONE'.
在测试过程中,我对包含大量图像的 PDF 进行了测试,这产生了巨大的差异。在处理过程中内存仍然很高,但它确实提高了速度和性能。
我们正在使用 jsPDF 将 HTML 生成为 PDF。然而,在向我的 PDF 添加 40 个元素并将其呈现为 canvas 时,我的浏览器崩溃了。
我们正在使用以下函数将元素作为图像添加到 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 中。
如果您有很多图片,请尝试使用 addImage 的压缩参数。
https://github.com/MrRio/jsPDF/blob/master/src/modules/addimage.js#L720
您可能需要测试每个压缩选项,看看哪个压缩选项可以满足您的需求:'FAST'、'SLOW'、'MEDIUM'、'NONE'.
在测试过程中,我对包含大量图像的 PDF 进行了测试,这产生了巨大的差异。在处理过程中内存仍然很高,但它确实提高了速度和性能。