You are on page 1of 6

html5-to-pdf

HTML5 to PDF converter

Node module that converts HTML files to PDFs.
The PDF looks great because it is styled by HTML5 Boilerplate or Bootstrap.
What? - Yes! HTML is pushed into the HTML5 template index.html. Phantomjs
renders the page and saves it to a PDF. You can even customize the style of
the PDF by passing an optional path to your CSS and you can pre-process
your html file before it is converted to a PDF by passing in a pre-processing
function, for creating templates.

Getting started
npm install html5-to-pdf

Example usage
var html5pdf = require("html5-to-pdf");
var fs = require("fs");

fs.createReadStream("/path/to/document.html")
.pipe(html5pdf())
.pipe(fs.createWriteStream("/path/to/document.pdf"));

// --- OR ---

html5pdf().from("/path/to/document.html").to("/path/to/document.pdf", function () {
console.log("Done")
});

Options
Pass an options object (html5pdf({/* options */})) to configure the output.

options.phantomPath
Type: String Default value: Path provided by phantomjs module
Path to phantom binary

paperOrientation Type: String Default value: portrait 'portrait' or 'landscape' options.css Path to custom highlight CSS file (for code highlighting). relative to the current directory options. 'Legal'.phantomHost Type: String Default value: localhost Hostname to phantom options.options. 'in'.highlightCssPath Type: String Default value: [module path]/html5-to-pdf/templates/highlight.renderDelay Type: Number Default value: 500 Delay in milli-seconds before rendering the PDF (give HTML and CSS a chance to load) options. 'Letter' or 'Tabloid' options.template Type: String Default value: html5bp . 'cm'.cssPath Type: String Default value: [module path]/html5-to-pdf/templates/pdf.paperBorder Type: String Default value: 1cm Supported dimension units are: 'mm'. 'px' options.phantomPort Type: Number Default value: 0 Port to phantom options.css Path to custom CSS file. 'A5'. relative to the current directory options.paperFormat Type: String Default value: A4 'A3'. 'A4'.

The callback function cb will be invoked when the buffer has been created. The callback function cb will be invoked when the string has been created.preProcessHtml Type: Function Default value: function () { return through() } A function that returns a through stream that transforms the HTML before it is converted to html. path can be a single path. concat.paths(paths. or array of output paths if you specified an array of inputs.buffer(opts. opts) Create a readable stream from path and pipe to html5-to-pdf. concat. cb) Create a concat-stream and pipe output from html5-to-pdf to it. to. More examples From string to path var html5pdf = require("html5-to-pdf") . cb) Create a writeable stream to path and pipe output from html5-to-pdf to it. API from.from. cb) / to(path.from. from.1. string can be a single string or array of strings. opts) Create and concatenate readable streams from strings and pipe to html5-topdf. to. opts) Create and concatenate readable streams from paths and pipe to html5-topdf.string(string) Create a readable stream from string and pipe to html5-to-pdf.strings(strings. to.string(opts.path(path.The template to use with phantomjs. path can be a single path or array of paths. cb) Create a concat-stream and pipe output from html5-to-pdf to it. opts) / from(path.1) options. You can choose between html5bp (HTML5 Boilerplate) or htmlbootstrap(Boostrap 3. The callback function cb will be invoked when data has finished being written.path(path.

html". function () { console.html"] . bookPath) }) Transform html before conversion var html5pdf = require("html5-to-pdf") . outputPath) }) From multiple paths to multiple paths var html5pdf = require("html5-to-pdf") var htmlDocs = ["home. d) }) }) Concat from multiple paths to single path var html5pdf = require("html5-to-pdf") var htmlDocs = ["chapter1. pdfDocs = htmlDocs. function () { pdfDocs.from(htmlDocs).forEach(function (d) { console.from(htmlDocs).html".concat.pdf" html5pdf().string(html). split = require("split") . "contact.html".html"] .html". "chapter3.to(htmlDocs. "chapter2. ".var html = "foo===\n <strong>bar\n</strong> baz\n\nLorem ipsum dolor sit" .map(function (d) { return "out/" + d.to(bookPath.to(outputPath. bookPath = "/path/to/book.log("Created".log("Created".pdf" html5pdf(). function () { console.pdf") }) html5pdf(). outputPath = "/path/to/doc. through = require("through") . duplexer = require("duplexer") function preProcessHTML () { // Split the input stream by lines var splitter = split() . "about.log("Created".replace(".from.html".

'px' The template to use. "bar") + "\n") }) splitter.replace(/foo/g. 'cm'. --css-path [path] Path to runnings (header. --help output usage information -p. --highlight-css-path [path] Path to custom highlight-CSS file -f. 'in'. --render-delay [millis] chance to load) Supported dimension units are: 'mm'. --paper-border [measurement] -d.to("/path/to/document. --paper-format [format] 'A3'. --template [html5bp] -d. footer) Path to custom CSS file -z.html") . 'A4'.log("Done") }) CLI interface Installation To use html5-to-pdf as a standalone program from the terminal run npm install -g html5-to-pdf Usage Usage: html5-to-pdf [options] <html-file-path> Options: -h.pipe(replacer) return duplexer(splitter.from("/path/to/document. function () { console. 'Legal'.queue(data.// Replace occurences of "foo" with "bar" var replacer = through(function (data) { this. --phantom-path [path] Path to phantom binary -h. Either 'html5bp' or 'htmlbootstrap' Delay before rendering the PDF (give HTML and CSS a . 'Letter' or 'Tabloid' -r. --paper-orientation [orientation] 'portrait' or 'landscape' -b. replacer) } html5pdf({preProcessHtml: preProcessHtml}) . 'A5'. --runnings-path [path] -s.pdf".

-o. --output-path [path] <html-file-path> Path of where to save the PDF Path of the html file to convert .