☝️ A next version with better performance and features is coming soon.
To try it out, check its documentation in the next branch.
A simple express service that generates a pdf based on the submitted HTML using Chromium and Puppeteer.
## build
yarn install
yarn build
## Running the server
node ./dist/src/index.js
## Or simply
yarn start
docker run --rm -p 3000:3000 --name=pdf-generator quay.io/isneezy/pdf-generator-service
Check our docker repository for available tags
The webserver started by express.js has one JSON endpoint to generate PDFs.
Will generate a PDF based on the given payload
data and returns the pdf file as a stream
{
"goto": "", // optional - URL to the HTML content/handlebars template to be converted to PDF. This option overrides the content when present.
"content": "", // required when goto is not present - HTML string/handlebars template to be converted to PDF,
"context": {}, // object with the data to be passed to handlebars template engine
"orientation": "portrait", // optional - possible values ["portrait", "landscape"]
"format": "A4", // optional - possible values ["Letter", "Legal", "Tabloid", "Ledger", "A0", "A1", "A2", "A3", "A4", "A5", "A6"]
"header": "", // optional - HTML template for the print header. See https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagepdfoptions
"footer": "" // optional - HTML template for the print footer. available context variables date: title, url, pageNumber, totalPages and pageNumber. Note these variables should be used with 3 mustaches ex: {{{ pageNumber }}}
}
{
"content": "<h2>Hello from Express PDF Generator Service</h2><p>Writen by {{ author }}</p>",
"context": { "author": "Ivan Vilanculo <mail@example.com>" },
"orientation": "portrait",
"format": "A5",
"footer": "<p>{{ name }} © {{{ date }}}, page {{{ pageNumber }}} of {{{ totalPages }}}</p>"
}
PDF Generator Service can generate TOCs for your document. All you have to do is simply add the template for your TOCs inside an element with .print-toc
class.
Note:
- This feature highly relies on semantic HTML, which means that all heading tags (h1, h2, h3, h4, h5, and h6) will be used to create your TOCs.
Add
toc-ignore
class to a heading tag if you want to ignore. - TOCs will always appear or be rendered on the first pages of your document.