jsPDF获取生成的文档为base64
jsPDF get the generated document as base64
我正在尝试在我的应用程序上生成 PDF,使用类似这样的文件,来自文档:
var doc = new jsPDF();
doc.html(document.body, {
callback: function (doc) {
doc.save();
}
});
但我需要的是获取此生成的文件,作为 base64
内容,作为电子邮件附件发送。有没有办法直接在回调中得到这个?
你可以像下面那样做。
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');
}
})
您可以在下面的 link.
中查看有关 output() 方法的更多信息
值得注意的是 datauri 选项会更改文档位置,请参阅 jsPDF 库中的以下代码片段:
case 'datauri':
case 'dataurl':
return global.document.location.href = datauri;
这很好,除非您尝试使用 IFrame,因为它会导致其正文被 embed 标记替换显示刚刚生成的 pdf。
相反,最安全的选择是使用 datauristring,因为这只是 returns base64 字符串中的 pdf:
var pdf = new jsPDF('p', 'pt', 'a4');
var base = pdf.output('datauristring'); // base64 string
console.log("base64 is ", base);
老实说,我不知道为什么有人会想要使用 datauri 选项而不是 datauristring 作为后者的行为这是最重要的无论如何,人们期待。
我正在尝试在我的应用程序上生成 PDF,使用类似这样的文件,来自文档:
var doc = new jsPDF();
doc.html(document.body, {
callback: function (doc) {
doc.save();
}
});
但我需要的是获取此生成的文件,作为 base64
内容,作为电子邮件附件发送。有没有办法直接在回调中得到这个?
你可以像下面那样做。
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');
}
})
您可以在下面的 link.
中查看有关 output() 方法的更多信息值得注意的是 datauri 选项会更改文档位置,请参阅 jsPDF 库中的以下代码片段:
case 'datauri':
case 'dataurl':
return global.document.location.href = datauri;
这很好,除非您尝试使用 IFrame,因为它会导致其正文被 embed 标记替换显示刚刚生成的 pdf。
相反,最安全的选择是使用 datauristring,因为这只是 returns base64 字符串中的 pdf:
var pdf = new jsPDF('p', 'pt', 'a4');
var base = pdf.output('datauristring'); // base64 string
console.log("base64 is ", base);
老实说,我不知道为什么有人会想要使用 datauri 选项而不是 datauristring 作为后者的行为这是最重要的无论如何,人们期待。