import puppeteer from "puppeteer"; import { TemplateHelper } from "./templateHelper"; import { PermissionModule } from "../type/permissionTypes"; export abstract class PdfExport { static async renderFile({ template, title = "pdf-export Mitgliederverwaltung", filename, data, }: { template: PermissionModule; title: string; filename: string; data: any; }) { const { header, footer, body } = await TemplateHelper.renderFileForModule({ module: template, bodyData: data, title: title, }); const browser = await puppeteer.launch({ headless: true, args: ["--no-sandbox", "--disable-gpu", "--disable-setuid-sandbox"], }); const page = await browser.newPage(); await page.setContent(body, { waitUntil: "domcontentloaded" }); await page.pdf({ path: process.cwd() + `/export/${filename}.pdf`, format: "A4", printBackground: false, margin: { top: "15mm", bottom: "15mm", left: "10mm", right: "10mm", }, displayHeaderFooter: true, headerTemplate: header, footerTemplate: footer, }); await browser.close(); } }