#javascript #angular #jspdf
#javascript #angular #jspdf
Вопрос:
Для проекта Angular я пытаюсь преобразовать строковую переменную, содержащую HTML-код, в PDF-файл. Я установил все зависимые компоненты, такие как:
- jspdf
- html2canvas
- rasterizehtml
Мой код выглядит следующим образом:
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 Ошибка: Не перехвачено (в обещании): Ошибка: Предоставленные данные не являются допустимой базовой 64-строкой jsPDF.convertStringToImageData Ошибка: Предоставленные данные не являются допустимой базовой 64-строкой jsPDF.convertStringToImageData в Object.x.convertStringToImageData (jspdf.min.js:50) в Object.x.addImage (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: 814) в zone .js:877 в ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421) в Object.onInvokeTask (core.js:3811) в ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420) в Zone.нажимайте ../node_modules/zone.js/dist/zone.js.Zone.RunTask (zone.js:188) на drainMicroTaskQueue (zone.js:595) на ZoneTask.нажимайте ../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [как вызываемый] (zone.js: 500) на invokeTask (zone.js :1540) в Image.globalZoneAwareCallback (zone.js:1566)
Как я могу это исправить? Заранее благодарю вас.