Skip to content
/ pdfile Public

PDFile is a Node.js library for generating high-quality, dynamic PDFs using Handlebars templates and Puppeteer. It supports multi-page PDFs and offers full customization. Perfect for web developers, it enables easy creation of multi-page PDFs by simply designing HTML templates for output.

License

Notifications You must be signed in to change notification settings

AIM3r4j/pdfile

Repository files navigation

PDFile

PDFile is a Node.js library for generating high-quality, dynamic PDFs using Handlebars templates and Puppeteer. It supports multi-page PDFs and offers full customization. Perfect for web developers, it enables easy creation of multi-page PDFs by simply designing HTML templates for output.

Installation

npm i pdfile

Usage

Initialization

Import the function

import { generatePdf } from 'pdfile';

Call the function to generate the PDF

const generatedPdfFilePath = await generatePdf({
  [templateFilePath],
  [dataPerPage],
  [pdfFilePath],
  [useStream],
  [helpersFilePath],
  [puppeteerOptions],
  [pdfOptions],
});
Parameter Type Description Required Default
templateFilePath string Path to the Handlebars template file. Yes N/A
dataPerPage Array Array of objects containing data for each page of the PDF Yes N/A
pdfFilePath string The path where the generated PDF file will be saved. Required, if useStream is not passed or set to false. No N/A
useStream boolean Returns a readable stream of the PDF instead of saving it to disk if set to true No false
helpersFilePath string Path to a file containing custom Handlebars helpers. No N/A
puppeteerOptions object Puppeteer launch options (e.g., headless mode, executable path). <PuppeteerLaunchOptions> No
 { "headless": true, "args": ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"] } 
pdfOptions object Options for PDF generation (e.g., format, margins). <PDFOptions> No
 { "format": "A4", "margin": { "left": "10mm", "top": "10mm", "right": "10mm", "bottom": "10mm" }, "printBackground": true } 

Working Example

To quickly get started, you can use the 'example' folder and check out the working code given in the file 'file.service.ts'. Ensure all dependencies are installed beforehand.

PDF generated in this example:

plot

More details


JavaScript Handlebars Helper Syntax (Standard) Handlebars Helper Syntax (Custom)
if (a === b) {{#if (eq a b)}} {{#ifCond var1 '===' var2}}
if (a !== b) {{#if (not-eq a b)}} {{#ifCond var1 '!==' var2}}
if (a && b) {{#if (and a b)}} {{#ifCond var1 '&&' var2}}
if (a > b) {{#if (gt a b)}} {{#ifCond var1 '>' var2}}
if (a >= b) {{#if (gte a b)}} {{#ifCond var1 '>=' var2}}
if (a < b) {{#if (lt a b)}} {{#ifCond var1 '<' var2}}
if (a <= b) {{#if (lte a b)}} {{#ifCond var1 '<=' var2}}
if (a && b) {{#if (and a b)}} {{#ifCond var1 '&&' var2}}
if (a || b) {{#if (or a b)}} {{#ifCond var1 || var2}}

License

MIT

About

PDFile is a Node.js library for generating high-quality, dynamic PDFs using Handlebars templates and Puppeteer. It supports multi-page PDFs and offers full customization. Perfect for web developers, it enables easy creation of multi-page PDFs by simply designing HTML templates for output.

Resources

License

Stars

Watchers

Forks

Packages