grits-plugin-pdf

0.4.3 • Public • Published

NPM

Build Status

This module is a plugin for Grits.js, a static content builder that's designed for ease-of-use. It allows you to render HTML generated by Grits.js to PDF by way of PhantomJS.

Installation

Prerequisites

PhantomJS has a silent dependency on libfontconfig.so.1 (see phantomjs#10904), and you'll get strange failures until you install that dep. I've not yet discovered the fix for every platform, but here are the ones I've found:

CentOS
yum install urw-fonts
Ubuntu
sudo apt-get install libfontconfig

Install with NPM

Barring any prerequisites, NPM should be all that you need:

# Global Install
npm install -g grits grits-plugin-pdf

# Project Install
npm install --save grits grits-plugin-pdf

Basic Usage

Loading the Plugin

CLI
grits -v --plugin grits-plugin-pdf .
Config File
{
    "plugins": {
        "grits-plugin-pdf": { ..pdfConfig.. }
    }
}
Programmatic via Constructor
require("grits");
var grits = new Dasix.grits.Renderer({
    "plugins": {
        "grits-plugin-pdf": pdfConfig
    }
});
Programmatic via use()
require("grits");
var grits = new Dasix.grits.Renderer();
grits.use("grits-plugin-pdf", pdfConfig);

There are some subtleties with loading plugins, but they're beyond the scope of this document; see the Grits.js module and its documentation for more info.

Rendering PDFs

To flag a document for PDF rendering, add pdf: true to its front-matter, like so:

content/mycontent.md

---
pdf: true
---
# Some Great Content

It was a cold day..

Configuration

Here are the configuration options. They're mostly intuitive but I'll write full docs for them later..

{
    base		: "http://ph.local/",		// You can almost certainly ignore this..
    type        : "pdf",					// Output Type, can be: "pdf", "png", or "jpeg"
    format      : "Letter",					// PhantomJS paper size
    orientation : "portrait",				// Paper orientation	
    width       : "800",					// Overrides format when provided
    height      : "600",					// Overrides format when provided
    quality     : "100",					// Image quality; not used by "pdf" output type
    timeout     : 30000,					// PhantomJS page-load timeout
    phantomArgs : [],						// Additional args to pass to PhantomJS
    border      : "0.15in",					// Page margin, also accepts border { left: "12px" } et al
    concurrency : 3,						// Maximum number of concurrent PDF render ops
    httpHeaders : {},						// Optional headers to pass to PhantomJS
    header      : {							// Optional HTML header to apply to the output
        height   : "45mm",
        contents : "<div style=\"text-align: center;\">Author: Luke C</div>"
    },
    footer      : {							// Optional HTML footer to apply to the output
        height   : "28mm",
        contents : "<span style=\"color: #444;\">{{page}}</span>/<span>{{pages}}</span>"
    }
}

Useful Links

Package Sidebar

Install

npm i grits-plugin-pdf

Weekly Downloads

8

Version

0.4.3

License

MIT

Last publish

Collaborators

  • vmadman