diff --git a/_config/eleventy-plugin-pdf.js b/_config/eleventy-plugin-pdf.js index 33ce693..e525a34 100644 --- a/_config/eleventy-plugin-pdf.js +++ b/_config/eleventy-plugin-pdf.js @@ -3,27 +3,34 @@ import { nanoid } from 'nanoid' import fs from 'fs'; let config = {} -export default function (eleventyConfig, pluginOptions) { - config = pluginOptions; +export default function (eleventyConfig, pluginOptions = {}) { + config = Object.assign({ + // Plugin defaults + tempDir: "dist", // Directory where the temporary files are created + debug: false, // Keep the generated temporary html file for debugging + format: "A4", // Default pdf format + margin: { // PDF file margins + top: "1cm", + right: "1.25cm", + bottom: "1cm", + left: "1.25cm", + } + }, 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`; + let tempFileName = config.debug ? this.page.fileSlug : nanoid(); + let htmlFile = `./${config.tempDir}/${tempFileName}.html`; + let pdfFile = `./${config.tempDir}/${tempFileName}.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", - }, + format: config.format, + margin: config.margin, path: pdfFile, // you can pass path to save the file }; htmlPDF.setOptions(options); @@ -32,7 +39,9 @@ const transformPDF = async function(content) { await htmlPDF.create(pdfContent); let contents = fs.readFileSync(pdfFile, 'binary'); - fs.unlinkSync(htmlFile); fs.unlinkSync(pdfFile); + if (!config.debug) { + fs.unlinkSync(htmlFile); fs.unlinkSync(pdfFile); + } return Buffer.from(contents,'binary'); } else return content; }; \ No newline at end of file