1.0.1 • Published 8 months ago

pdf-master-ts v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

PDF Master

All credits to the original author

The simplest way to generate static and dynamic PDF in NodeJS. Converts HTML(with .hbs extension) template into PDF.

MIT License

Features

  • Generate PDF from HTML file.
  • Generate dynamic PDFs
  • Add custom header and footer to PDF

Installation

To use PDF master in your project, run:

  npm install pdf-master-ts

How to Use

Step 1 - Add required packages and generate a PDF

const express = require("express");
const pdfMaster = require("pdf-master-ts");

const app = express();

app.get("", async (req, res) => {
  const pdf = await pdfMaster.generatePdf("pdfHtmlFormat.hbs");
  res.contentType("application/pdf");
  res.status(200).send(pdf);
});

generatePdf() syntax and parameters

generatePdf(
  templatePath, //<string>
  data, //<object>   Pass data to template(optional)
  options //<object>   PDF format options(optional)
);

Step 2 - Create your HTML Template (save the template with .hbs extension instead of .html)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <h1>Hello World</h1>
  </body>
</html>

Render dynamic data in template and PDF format options

const express = require("express");
const pdfMaster = require("pdf-master-ts");

const app = express();

app.get("", async (req, res) => {

  var students = {
      {
          id: 1,
          name: "Sam",
          age: 21
      },
      {
          id: 2,
          name: "Jhon",
          age: 20
      },
      {
          id: 3,
          name: "Jim",
          age: 24
      }
  }

  let options = {
    displayHeaderFooter: true,
    format: "A4",
    headerTemplate: `<h3> Header </h3>`,
    footerTemplate: `<h3> Copyright 2023 </h3>`,
    margin: { top: "80px", bottom: "100px" },
  };

  let PDF = await pdfMaster.generatePdf("template.hbs", students, options);
  res.contentType("application/pdf");
  res.status(200).send(PDF);
});

Read more on options

template for the above example (save the template with .hbs extension)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
  </head>
  <body>
    <h1>Student List</h1>
    <ul>
      {{#each students}}
      <li>Name: {{this.name}}</li>
      <li>Age: {{this.age}}</li>
      <br />
      {{/each}}
    </ul>
  </body>
</html>

Resources

Contributing

Feel free to contribute. Your contribution will be appreciated.

License

pdf-master-ts is MIT licensed.