</p>
<pre><code>captureScreen() {
const pdf = new jsPDF('p', 'mm');
const promises = $('.pdf-intro').map(function(index, element) {
return new Promise(function(resolve, reject) {
html2canvas(element, {allowTaint: true, logging: true}).then(function(canvas) {
resolve(canvas.toDataURL( 'image/jpeg', 1.0 ));
}).catch(function(error) {
reject('error in PDF page: ' + index);
});
});
});
Promise.all(promises).then(function(dataURLS) {
console.log(dataURLS);
for ( const ind in dataURLS) {
if (dataURLS.hasOwnProperty(ind)) {
console.log(ind);
pdf.addImage(dataURLS[ind], 'JPEG', 0, 0, pdf.internal.pageSize.getWidth(), pdf.internal.pageSize.getHeight());
pdf.addPage();
}
}
pdf.save('HTML-Document.pdf');
});
}
При этом мы должны импортировать jsPDF и html2Canvas в код </p>
<pre><code>import * as jsPDF from 'jspdf';
import * as html2canvas from 'html2canvas';
для этого вам нужно выполнить npm, установив следующее </p>
<pre><code>npm install jspdf --save
npm install --save @types/jspdf
npm install html2canvas --save
npm install --save @types/html2canvas
С этим добавьте следующее в файл angular.json внутри тега scripts </p>
<pre><code>"node_modules/jspdf/dist/jspdf.min.js"
Внутри component.html добавьте такой код, например:
<div>
<input type="button" value="CPTURE" (click)="captureScreen()" />
</div>
<div class="pdf-intro">HTHML content</div>
<div class="pdf-intro">HTHML content</div>
<div class="pdf-intro">HTHML content</div>
<div class="pdf-intro">HTHML content</div>
с этим кодом добавьте CSS, как вы обычно добавляете в component.css, он будет визуализирован.
Надеюсь, это решит вашу проблему.