import PuppeteerHTMLPDF from "puppeteer-html-pdf"; import { nanoid } from 'nanoid' import fs from 'fs'; let config = {} export default function (eleventyConfig, pluginOptions) { config = pluginOptions; eleventyConfig.addTransform("toPDF", transformPDF); }; const transformPDF = async function(content) { if (this.outputPath && this.outputPath.toLowerCase().endsWith('.pdf')) { let htmlFile = `./${config.tempDir || "dist"}/${nanoid()}.html`; let pdfFile = `./${config.tempDir || "dist"}/${nanoid()}.pdf`; fs.writeFileSync(htmlFile, content); const htmlPDF = new PuppeteerHTMLPDF(); const options = { format: config.format || "A4", margin: config.margin || { top: "1cm", right: "1.25cm", bottom: "1cm", left: "1.25cm", }, path: pdfFile, // you can pass path to save the file }; htmlPDF.setOptions(options); const pdfContent = await htmlPDF.readFile(htmlFile, "utf8"); await htmlPDF.create(pdfContent); let contents = fs.readFileSync(pdfFile, 'binary'); fs.unlinkSync(htmlFile); fs.unlinkSync(pdfFile); return Buffer.from(contents,'binary'); } else return content; };