add-html-to-pdf
v1.0.5
Published
Add custom HTML to each page of a PDF document. Style the elements with inline CSS.
Downloads
6
Maintainers
Readme
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.