Я думаю, что это может быть решением, а также более чистым кодом:
async function printDocument() {
const pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF
const imgWidth = 208;
const position = 0;
let page1 = document.querySelector('.first-page');
let page1 = document.querySelector('.second-page');
const [imgPage1, imgPage2] = await Promise.all([html2canvas(page1), html2canvas(page2)]);
// Process first image
let imgHeight = imgPage1.height * imgWidth / imgPage1.width;
let contentDataURL = imgPage1.toDataURL('image/png');
pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
pdf.addPage();
// Process second image
imgHeight = imgPage2.height * imgWidth / imgPage2.width;
contentDataURL = imgPage2.toDataURL('image/png');
pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
pdf.save('dashboard.pdf'); // Generated PDF
}
РЕДАКТИРОВАТЬ: Я также заметил, что вы используете mm
единиц для документа PDF, еслиэто работает для вас, это нормально, но у меня был недавний опыт добавления изображений в PDF-документ, и единицы измерения 'px' служили для моей цели немного лучше.В любом случае, если это работает, это нормально.
РЕДАКТИРОВАТЬ 2: Есть другой ответ, объясняющий лучше, в чем проблема и почему, когда вы помещаете метод pdf.save('dashboard.pdf')
в html2canvas
, он работает.Вот ссылка Получение изображения на стр. 1 из 2 стр. Pdf