javascript - 使用 jspdf 将 HTML 转换为 pdf 时出错
问题描述
对于 Angular 项目,我正在尝试将包含 HTML 代码的字符串变量转换为 pdf 文件。我安装了所有依赖项,例如:
- jspdf
- html2canvas
- 光栅化html
我的代码如下所示:
b64DecodeUnicode(str) {
return decodeURIComponent(atob(str).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
getBill() {
//var blob = new Blob([this.b64DecodeUnicode(this.invoicePDF)], {type: "text/html;charset=utf-8"});
var doc = new jsPDF('p','pt','a4');
/* doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage('a6','l');
doc.text(20, 20, 'Do you like that?');
doc.save('Demo.pdf');*/
var htmlData = String(this.b64DecodeUnicode(this.invoicePDF));
doc.addHTML(htmlData, function () {
doc.save('myfilename' + '.pdf');
});
//FileSaver.saveAs(doc, "facture_"+this.order.reference+".html");
}
为此,我使用 jspdf,但出现此错误:
core.js:1673 错误错误:未捕获(承诺):错误:提供的数据不是有效的 base64 字符串 jsPDF.convertStringToImageData 错误:提供的数据不是有效的 base64 字符串 jsPDF.convertStringToImageData 在 Object.x.convertStringToImageData (jspdf .min.js:50) 在 Object.x.addImage (jspdf.min.js:50) 在 Object. (jspdf.min.js:188) 在 jspdf.min.js:188 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388) 在 Object.onInvoke (core.js:3820) 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387) 在 Zone.push../node_modules/zone.js/dist /zone.js.Zone.run (zone.js:138) 在 zone.js:872 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)在 resolvePromise (zone.js:
我该如何解决?先感谢您。
解决方案
推荐阅读
- c# - 只有两个单选按钮选择
- cryptography - 带有 ed25519 曲线签名的 BIP44
- sql - SQL - 根据带有条件的一条记录插入多行
- react-native - 在 React native 上删除底部和顶部项目 Picker IOS 中的行
- java - SM2Engine可以加密,但是怎么加信封呢?
- javascript - JS/TS 中使用 async/await 的异步有界队列
- python - 缺少必需的位置参数(日期时间)
- bind - 奇点中的挂载和绑定有什么区别?
- python - 使用 Safari 的 Develop->Show page source 时,Elements 和 Resources 有什么区别?
- javascript - 一个承诺用两种不同的类型解决