add-html-to-pdf

1.0.5 • Public • Published

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.

Dependents (0)

Package Sidebar

Install

npm i add-html-to-pdf

Weekly Downloads

12

Version

1.0.5

License

MIT

Unpacked Size

8.81 kB

Total Files

7

Last publish

Collaborators

  • kaisle