Add default options to the pdf plugin
This commit is contained in:
parent
9fd9dbc14a
commit
e3db7301f3
|
|
@ -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;
|
||||
};
|
||||
Loading…
Reference in a new issue