如何将 html2pdf PDF 转换为 base64?

max*_*uty 1 javascript html2pdf jspdf

我在让html2pdf.js正确给我回调以便我可以将其转换为 base64 字符串时遇到一些问题。

我已经尝试过这个:

html2pdf().from(el).then(function(pdf) { 
   // pdf is null when I log this...
   console.log(pdf);
}).save();
Run Code Online (Sandbox Code Playgroud)

以及许多其他变体,使用output()以下所有内容:

var pdf = new jsPDF();
html2pdf().from(element).set({ pdf: pdf }).toPdf().save();
Run Code Online (Sandbox Code Playgroud)

一切都无济于事。

我目前正在v.0.9.0. 我真正需要得到的是 base64,这样我就可以将其发送回服务器并将其附加到电子邮件中 ​​- 对我来说如何实现这一点并不重要,但我在弄清楚如何使用它时遇到了问题正确回调。

我已经搜索了 github 上的文档和问题

max*_*uty 9

缺少的是对该方法的调用outputPdf()。您还应该确保您已升级到 html2pdf 插件的最新版本,因为旧版本没有此支持。

您的新代码应如下所示:

html2pdf().from(el).outputPdf().then(function(pdf) {
    // This logs the right base64
    console.log(btoa(pdf));
});
Run Code Online (Sandbox Code Playgroud)

文档中:

[outputPdf] 将类型和选项发送到 jsPDF 对象的输出方法,并将结果作为 Promise 返回(使用 .then 访问)

简单地使用output()不会返回承诺,您必须使用outputPdf().