Skip to content

hyfi06/node-html2pdf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@hyfi06/html2pdf

Create pdf from html string. Express middleware.

Install

npm install --save @hyfi06/html2pdf

Examples

const express = require("express");
const app = express();
const pdf = require("../index");

app.use(pdf);

app.use("/pdf", async function (req, res) {
  try {
    await res.html2pdf({
      filename: "example.pdf",
      htmlString: "<html><body>example</body></html>",
    });
  } catch (err) {
    console.log(err);
  }
});

app.listen(3000, function () {
  console.log("Listening http://localhost:3000");
});

Using express router:

const express = require("express");
const pdf = require("../index");

function pdfApi(app) {
  const router = express.Router();
  app.use("/pdf");

  router.get("/", pdf, async function (req, res) {
    try {
      await res.html2pdf({
        filename: "example.pdf",
        htmlString: "<html><body>example</body></html>",
      });
    } catch (err) {
      console.log(err);
    }
  });
}

module.exports = pdfApi;

Options and args

res.html2pdf({
      filename: '',
      htmlString: '',
      [options],
      [launchArgs]
    });
  • options <[Object]> Options object which might have the following properties:
    • scale <[number]> Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2.
    • displayHeaderFooter <[boolean]> Display header and footer. Defaults to false.
    • headerTemplate <[string]> HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them:
      • date formatted print date
      • title document title
      • url document location
      • pageNumber current page number
      • totalPages total pages in the document
    • footerTemplate <[string]> HTML template for the print footer. Should use the same format as the headerTemplate.
    • printBackground <[boolean]> Print background graphics. Defaults to false.
    • landscape <[boolean]> Paper orientation. Defaults to false.
    • pageRanges <[string]> Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
    • format <[string]> Paper format. If set, takes priority over width or height options. Defaults to 'Letter'.
    • width <[string]|[number]> Paper width, accepts values labeled with units.
    • height <[string]|[number]> Paper height, accepts values labeled with units.
    • margin <[Object]> Paper margins, defaults to none.
      • top <[string]|[number]> Top margin, accepts values labeled with units.
      • right <[string]|[number]> Right margin, accepts values labeled with units.
      • bottom <[string]|[number]> Bottom margin, accepts values labeled with units.
      • left <[string]|[number]> Left margin, accepts values labeled with units.
    • preferCSSPageSize <[boolean]> Give any CSS @page size declared in the page priority over what is declared in width and height or format options. Defaults to false, which will scale the content to fit the paper size.

See puppeteer docs.

  • launchArgs <[Array]<[string]> Additional arguments to pass to the browser instance. The list of Chromium flags can be found here, and here is the list of Firefox flags.

License

Licensed under the MIT License.