我正在尝试使用类似的方式从文档中在我的应用程序上生成PDF:
var doc = new jsPDF();
doc.html(document.body, {
callback: function (doc) {
doc.save();
}
});
但是我需要获取的是base64
内容形式的生成文件,并作为附件发送到电子邮件中。有没有办法直接在回调函数上获取此消息?
答案 0 :(得分:2)
值得注意的是 datauri 选项更改了文档位置,请参见jsPDF lib中的以下代码片段:
case 'datauri':
case 'dataurl':
return global.document.location.href = datauri;
这很好,除非您尝试使用 IFrame ,因为它会导致其主体被显示了刚刚生成的pdf的 embed 标记代替。
相反,最安全的选择是使用 datauristring ,因为这只会以base64字符串形式返回pdf:
var pdf = new jsPDF('p', 'pt', 'a4');
var base = pdf.output('datauristring'); // base64 string
console.log("base64 is ", base);
老实说,我不知道为什么有人会使用 datauri 选项而不是 datauristring 作为后者的行为,这也是大多数人期望的。
答案 1 :(得分:1)
您可以按照以下方式进行操作。
var pdf = new jsPDF('p', 'pt', 'a4');
pdf.html(document.getElementById('doc'), {
callback: function (pdf) {
// example text
pdf.text(20, 20, 'Hello world!');
pdf.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
var base = pdf.output('datauri'); // directly to base664
console.log("base64 is ");
console.log(base);
// you can generate in another format also like blob
var out = pdf.output('blob');
var reader = new FileReader();
reader.readAsDataURL(out);
reader.onloadend = function() { // for blob to base64
base64data = reader.result;
console.log("base64 data is ");
console.log(base64data );
}
pdf.save('DOC.pdf');
}
})
您可以在以下链接中找到有关 output()方法的更多信息。