Сценарий, который у меня есть, состоит в том, что вместо элемента dom, который я выбираю для заполнения в jspdf, мне нужно получить выходные данные другого метода в угловом компоненте, в котором я работаю, преобразовать этот вывод в элемент dom, затем захватить этот элемент dom и закачать его в jspdf.
Я использую правильные версии html2canvas и jspdf, которые позволяют использовать метод .html, но я получаю сообщение об ошибке:
property .html does not exist on type .jsPDF
this.termsHistory
извлекает массив, а затем мы берем 2-й элемент массива (значение индекса 1, массив начинается с 0) и извлекаем .contentText этого объекта для закачки в новый div.
downloadPDF(termsId: string) {
const index1 = this.termsHistory.findIndex((p: { termsAndConditionId: string }) => {
return p.termsAndConditionId == termsId;
});
if(index1 >= 0) {
const content2 = (index: any) => {
return this.termsHistory[index].contentText;
};
const newDiv = document.createElement("div");
const divContent = document.createTextNode(content2(index1));
newDiv.appendChild(divContent);
newDiv.setAttribute("id", "jsPDFContent");
document.body.appendChild(newDiv);
document.getElementById('jsPDFContent').classList.add('pdf-export');
const data = document.getElementById('jsPDFContent');
window['html2canvas'] = html2canvas;
const doc = new jspdf('p', 'pt', 'letter');
doc.html(data, {callback: function(pdf){
const iframe = document.createElement('iframe');
iframe.setAttribute('style', 'position: absolute; right: 0; top: 0; bottom: 0; height: 100%; width: 500px;');
document.body.appendChild(iframe);
iframe.src = pdf.output('datauristring');
}});
};