mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-13 08:13:49 +10:00
fix(printer-service): ensure profile image fully loads before PDF render
This commit is contained in:
@ -127,13 +127,33 @@ export class PrinterService {
|
|||||||
// Set the data of the resume to be printed in the browser's session storage
|
// Set the data of the resume to be printed in the browser's session storage
|
||||||
const numberPages = resume.data.metadata.layout.length;
|
const numberPages = resume.data.metadata.layout.length;
|
||||||
|
|
||||||
await page.goto(`${url}/artboard/preview`, { waitUntil: "networkidle0" });
|
await page.goto(`${url}/artboard/preview`, { waitUntil: "domcontentloaded" });
|
||||||
|
|
||||||
await page.evaluate((data) => {
|
await page.evaluate((data) => {
|
||||||
window.localStorage.setItem("resume", JSON.stringify(data));
|
window.localStorage.setItem("resume", JSON.stringify(data));
|
||||||
}, resume.data);
|
}, resume.data);
|
||||||
|
|
||||||
await page.reload({ waitUntil: "load" });
|
await Promise.all([
|
||||||
|
page.reload({ waitUntil: "load" }),
|
||||||
|
// Wait until first page is present before proceeding
|
||||||
|
page.waitForSelector('[data-page="1"]', { timeout: 15_000 }),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (resume.data.basics.picture.url) {
|
||||||
|
await page.waitForSelector('img[alt="Profile"]');
|
||||||
|
await page.evaluate(() =>
|
||||||
|
Promise.all(
|
||||||
|
// eslint-disable-next-line unicorn/prefer-spread
|
||||||
|
Array.from(document.images).map((img) => {
|
||||||
|
if (img.complete) return;
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// eslint-disable-next-line unicorn/prefer-add-event-listener
|
||||||
|
img.onload = img.onerror = resolve;
|
||||||
|
});
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const pagesBuffer: Buffer[] = [];
|
const pagesBuffer: Buffer[] = [];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user