1.0.5 • Published 6 years ago

add-html-to-pdf v1.0.5

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

add-html-to-pdf

Add custom HTML, CSS and images to an existing PDF document.

It uses a Docker image from pdf2htmlex to convert your PDF document to HTML format, inserts your HTML on each page using Cheerio and then converts back to PDF using wkhtmltopdf.

Installation:

npm install add-html-to-pdf --save

Required dependencies:

Docker: https://docs.docker.com/install/

wkhtmltopdf: https://wkhtmltopdf.org/downloads.html

Examples

Using inline HTML and CSS:

const pdf = require('add-html-to-pdf');

var options = {
  input: 'sample.pdf',
  output: 'done.pdf',
  html: "<div style='color:red'>This is awesome!</div>",
}

(async function() {
  await pdf.insertHTMLInPDF(options);
})()

Using a HTML file:

const pdf = require('add-html-to-pdf');

var options = {
  input: 'input.pdf',
  output: 'done.pdf',
  htmlFile: "index.html",
}

(async function() {
  await pdf.insertHTMLInPDF(options);
})()

Inserting on page 1 and 2 only:

const pdf = require('add-html-to-pdf');

var options = {
  input: 'input.pdf',
  output: 'done.pdf',
  htmlFile: "index.html",
  specificPages: [1,2]
}

(async function() {
  await pdf.insertHTMLInPDF(options);
})()

Options:

  input: Relative path of input. Must have .pdf extension if useDocker is set to true. Must have .html extension if useDocker is set to false.
  output: Relative path of output file. Defaults to './annotated.pdf'.
  html: HTML string to add to each page. Inline CSS can be used.
  htmlFile: Relative path of HTML file to add to each page (e.g. 'try.html').
  pages: Amount of pages in the PDF to add the HTML to. Defaults to 100.
  specificPages: Add HTML to specific pages only. Accepts an array of page numbers. Leave undefined to add HTML to all pages.
  useDocker: Whether to use Docker or not. If set to false, input has to be a html file. If set to true, input has to be a pdf file. Defaults to true.
  dockerOptions: Optional Docker Options, see https://www.npmjs.com/package/docker-cli-js

NB: Docker may require sudo priveleges on Linux.

An alternative that does not require Docker would be to install pdf2htmlEX (https://github.com/coolwanglu/pdf2htmlEX) and convert from PDF to HTML manually. Then supply the HTML document as input and set the useDocker flag to false.