A Metalsmith plugin to export files to PDF.
Internally, it uses Chrome in headless mode with
Puppeteer to generate a PDF version
of any file registered in Metalsmith with print
CSS media.
This plugin requires Node.js 20 or later
$ npm install metalsmith-pdfize
const metalsmith = require('metalsmith');
const pdfize = require('pdfize');
metalsmith.use(pdfize({
pattern: ['page/cv/*', 'another/page/*html'],
printOptions: {
printBackground: true,
format: 'A4',
},
launchOptions: {},
});
The pdfize
function accepts an option object with 3 entries:
pattern
: a multimatch pattern(s) matching files that should be loaded and exported to PDFprintOptions
: an object that is directly passed to puppeteerPage#pdf()
function to control headless Chrome behaviour. See Puppeteer documentation for available options.launchOptions
an object that is passed to puppeteerPuppeteer#launch()
function to control headless Chrome behaviour. See Puppeteer documentation for available options. Theheadless
is set by default tonew
but it can be overridden if needed.
PDF files are registered into Metalsmith files list. Generated PDF files are
named after the file used as source with the .pdf
suffix. For instance, if a
pattern matches the file page/cv/index.html
, the generated PDF path will be
page/cv/index.html.pdf
. metalsmith-pdfize
does not support file
renaming,
metalsmith-renamer can be
used if you need to rename generated PDF.
{
"plugin": {
"metalsmith-pdfize": {
"pattern": ["page/cv/*", "another/page/*html"],
"printOptions": {
"printBackground": true,
"format": "A4"
}
}
}
}
MIT