【发布时间】:2014-06-20 15:31:00
【问题描述】:
对于 PDF 生成问题的泛滥,我们深表歉意。我一直在研究一个使用分页符将页面转换为多页 pdf(带有 jsPDF)的项目。我(终于!)让该项目在谷歌浏览器中运行,但在 Firefox 中对其进行测试时,我能够生成第一页,但后两页显示为全黑。代码如下:
$(document).ready(function()
{
$("#runpdf").click(function(event)
{
var partsec = $("main_body page1");
html2canvas(document.body,
{
logging: true,
profile: true,
allowTaint: true,
letterRendering: true,
onrendered: function(canvas)
{
var sectionHeight = $("section").height();
var sectionWidth = $("#width").width();
var doc = new jsPDF();
var image = new Image();
var imageData = canvas.toDataURL("image/jpeg");
image = Canvas2Image.convertToJPEG(canvas);
doc.addImage(imageData,'JPEG', -115, 5, 440, 875);
doc.addPage();
var canvas1 = document.createElement('canvas');
canvas1.setAttribute('height', sectionHeight);
canvas1.setAttribute('width', sectionWidth);
var ctx = canvas1.getContext("2d");
ctx.drawImage(image, 0, 1025, sectionWidth, 1250, 0, 0, 1800, 950);
var image2 = new Image();
image2 = Canvas2Image.convertToJPEG(canvas1);
image2Data = image2.src;
doc.addImage(image2Data, 'JPEG', -105, 5, 440, 325);
doc.addPage();
var canvas2 = document.createElement('canvas');
canvas2.setAttribute('height', sectionHeight);
canvas2.setAttribute('width', sectionWidth);
var ctx1 = canvas2.getContext("2d");
ctx1.drawImage(image, 0, 2050, sectionWidth, 1250, 0, 0, 1800, 1000);
var image3 = new Image();
image3 = Canvas2Image.convertToJPEG(canvas2);
image2Data = image3.src;
doc.addImage(image2Data, 'JPEG', -105, 5, 440, 325);
doc.save('test.pdf');
}
});
});
});
如您所见,每个页面都是单独生成的,并且由于第一个页面正在运行,但第二个页面没有,我假设问题出在 getContext 或 drawImage 函数上。我怎样才能改变它或添加一些东西,使它能够在 Firefox 中正常工作。 再次感谢。
【问题讨论】:
-
jsPDF 确实存在与 FireFox 的兼容性问题。这个问题需要引起注意。
标签: javascript firefox pdf cross-browser jspdf