Я создаю pdf для хранения в моей базе данных pg, используя руль для шаблона html / css. Контент загружается нормально, кукловод, кажется, добавляет дополнительную пустую страницу в конце. Я использую шаблон руля и css, чтобы разделить страницы и перебираю свои данные, чтобы отобразить их все.
let browser;
const fileName = "myPDF.hbs";
const data = [...someData]
// use puppeteer to take in compiled hbs doc and create a pdf
const generatePDF = async (fileName, data) => {
// manipulates the data that I need
const preparedData = prepareDataForPDF(data);
try {
// Only launch 1 browser
if (!browser) {
browser = await puppeteer.launch({
args: [
"--no-sandbox",
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
],
headless: true,
});
}
// But use a new context for each report
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
const content = await compile(fileName, preparedData);
await page.goto(`data: text/html, ${content}`, { waitUntil: "networkidle0" });
await page.setContent(content);
await page.emulateMedia("screen");
const pdf = await page.pdf({
format: "A4",
printBackground: true,
});
await context.close();
return pdf;
} catch (err) {
logger.error(err);
throw err;
}
};
generatePDF(fileName, data);