jsPDF & html2canvas 不将图像写入 pdf
jsPDF & html2canvas not writing image to pdf
使用 jspdf 和 html2canvas 拍摄用户在 table 配置器上选择的配置的快照(选择 top/side/laminate 颜色)。它通过使用透明png更改每个图像的来源来实现。
我在将图像插入 pdf 时遇到问题。我可以毫无问题地将它附加到文档中,并将文本和其他图像毫无问题地写入 pdf。我担心我的形象太大了。生成的 base64 输出是巨大的。
我已将其写入控制台:
var doc = new jsPDF('p', 'pt','a4',true);
doc.setFontSize(16);
doc.setTextColor(80, 77, 78);
doc.text(15, 2, 'should be an image under here');
html2canvas($("#prod"), {
useCORS : true,
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/jpeg');
doc.addImage(imgData, 'JPEG', 15, 0, 34, 37);
console.log(imgData);
$('#prod').append(canvas);
}
});
doc.save('Spec_Sheet.pdf');
https://jsfiddle.net/x3x0e6ws/51/
所有图片均来自本地服务器。我在每个元素上都有一个最小高度,我什至尝试在 div 中添加文本来强制一个高度。
我该如何补救?
谢谢,
首先,非常感谢jsfiddle。
其次,您非常接近...只需将 doc.save 移动到 html2canvas 回调中即可。
解释原因:
当您调用 html2canvas 时,这是一个 "asynchronous" 调用。这就是函数的第二个参数是 "callback" 的原因。在实际完成渲染或添加 canvas
元素之前,代码继续下一行(在您的例子中是 doc.save
)!稍后,代码 html2canvas
代码 returns 到 canvas 渲染完成时的回调,并将图像添加到您的(已保存)pdf...!
var doc = new jsPDF('p', 'pt','a4',true);
doc.setFontSize(16);
doc.setTextColor(80, 77, 78);
doc.text(15, 2, 'should be an image under here');
html2canvas($("#prod"), {
useCORS : true,
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/jpeg');
doc.addImage(imgData, 'JPEG', 15, 0, 34, 37);
console.log(imgData);
$('#prod').append(canvas);
doc.save('Spec_Sheet.pdf');
}
});
使用 jspdf 和 html2canvas 拍摄用户在 table 配置器上选择的配置的快照(选择 top/side/laminate 颜色)。它通过使用透明png更改每个图像的来源来实现。
我在将图像插入 pdf 时遇到问题。我可以毫无问题地将它附加到文档中,并将文本和其他图像毫无问题地写入 pdf。我担心我的形象太大了。生成的 base64 输出是巨大的。
我已将其写入控制台:
var doc = new jsPDF('p', 'pt','a4',true);
doc.setFontSize(16);
doc.setTextColor(80, 77, 78);
doc.text(15, 2, 'should be an image under here');
html2canvas($("#prod"), {
useCORS : true,
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/jpeg');
doc.addImage(imgData, 'JPEG', 15, 0, 34, 37);
console.log(imgData);
$('#prod').append(canvas);
}
});
doc.save('Spec_Sheet.pdf');
https://jsfiddle.net/x3x0e6ws/51/
所有图片均来自本地服务器。我在每个元素上都有一个最小高度,我什至尝试在 div 中添加文本来强制一个高度。
我该如何补救?
谢谢,
首先,非常感谢jsfiddle。 其次,您非常接近...只需将 doc.save 移动到 html2canvas 回调中即可。
解释原因:
当您调用 html2canvas 时,这是一个 "asynchronous" 调用。这就是函数的第二个参数是 "callback" 的原因。在实际完成渲染或添加 canvas
元素之前,代码继续下一行(在您的例子中是 doc.save
)!稍后,代码 html2canvas
代码 returns 到 canvas 渲染完成时的回调,并将图像添加到您的(已保存)pdf...!
var doc = new jsPDF('p', 'pt','a4',true);
doc.setFontSize(16);
doc.setTextColor(80, 77, 78);
doc.text(15, 2, 'should be an image under here');
html2canvas($("#prod"), {
useCORS : true,
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/jpeg');
doc.addImage(imgData, 'JPEG', 15, 0, 34, 37);
console.log(imgData);
$('#prod').append(canvas);
doc.save('Spec_Sheet.pdf');
}
});