Я пытаюсь добавить jsPDF в свой проект NativeScript (Angular + Typescript) для преобразования HTML в PDF. Я следовал этому руководству о том, как использовать jsPDF в NativeScript. Однако я продолжаю сталкиваться с той же ошибкой, когда пытаюсь кодировать пример:
let doc = new jsPDF();
doc.setFontSize(26);
doc.text(40, 40, "First PDF with NativeScript using jsPDF!");
let dataUrl = doc.output('datauristring');
if(dataUrl) {
dialogs.alert({
title: "jsPDF - Base64",
message: dataUrl,
okButtonText: "Copy to Clipboard"
}).then(() => {
clipboard.setText(dataUrl)
});
}
Я получаю следующую ошибку:
NativeScript обнаружил фатальную ошибку: ReferenceError: Can 'найти переменную: window
Я думал, что эти строки исправят эту ошибку, но это не так, я попытался добавить это в компонент, который я пытался использовать для генерации PDF, а также вmain.ts и app.component.ts:
global['window'] = {
'document': {
'createElementNS': () => { return {} }
}
};
global['document'] = {
'createElement': (str) => { return {} }
};
global['navigator'] = {};
//Imports
var base64 = require('base-64');
import * as jsPDF from 'jspdf';
global['btoa'] = (str) => {
return base64.encode(str);
};
global['atob'] = (bytes) => {
return base64.decode(bytes);
};
global['u8'] = {};
Однако я продолжаю получать ту же ошибку и не могу найти никаких различий между моим кодом и рабочим примером детской площадки . Я также добавил все библиотеки и плагин, необходимый для работы этого примера:
npm install jspdf --save
npm install @types/jspdf --save
npm install base-64 --save
npm install utf8 --save
tns plugin add nativescript-clipboard
EDIT Я также попытался понизить эти модули узлов до той же версии, что и игровая площадка. с помощью. Все та же ошибка.
EDIT Если я использую модули узлов так же, как на детской площадке, так что я просто добавляю их в каталог приложения, он работает так, как и положено. Тем не менее, это кажется плохой работой, есть ли другое решение?
Кто-то видит, что я делаю неправильно или чего мне здесь не хватает? Любая помощь будет очень хорошей, заранее спасибо!