Grunt plugin to convert markdown documents to PDF
Thin wrapper around markdown-pdf.
The PDF looks great because it is styled by HTML5 Boilerplate. What? - Yes! Your Markdown is first converted to HTML, then pushed into the HTML5 Boilerplate index.html
. Phantomjs renders the page and saves it to a PDF. You can even customise the style of the PDF by passing an optional path to your CSS and you can pre-process your markdown file before it is converted to a PDF by passing in a pre-processing function, for templating.
This plugin requires Grunt ~0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-markdown-pdf --save-dev
One the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-markdown-pdf');
In your project's Gruntfile, add a section named markdownpdf
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
markdownpdf: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
}
});
Type: String
Default value: Path provided by phantomjs module
Path to phantom binary
Type: Boolean
Default value: false
If set to true, a single PDF will be created containing the contents of all of the Markdown files.
Type: String
Default value: ../pdf.css
Path to custom CSS file, relative to the node_modules/markdown-pdf/html5bp
directory
Type: String
Default value: A4
'A3', 'A4', 'A5', 'Legal', 'Letter' or 'Tabloid'
Type: String
Default value: portrait
'portrait' or 'landscape'
Type: String
Default value: 1cm
Supported dimension units are: 'mm', 'cm', 'in', 'px'
Type: Number
Default value: 1000
Delay in millis before rendering the PDF (give HTML and CSS a chance to load)
Type: Function
Default value: null
Function to call before Markdown is converted to HTML. It is passed the Markdown file contents and must return a string
Type: Function
Default value: null
Function to call after Markdown has been converted to HTML but before it is converted to PDF. It is passed the Markdown file contents and must return a string
Type: Boolean
Default value: true
If set to true, pygments will be used to highlight code blocks.
In this example, the default options are used to convert all markdown files in the directory src/
to PDFs in the directory dest/
.
grunt.initConfig({
markdownpdf: {
options: {},
files: {
src: "src/*.md",
dest: "dest"
}
}
})
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
- 2013-06-14 v0.3.0 Use marked module for better markdown compatibility and performance
- 2013-05-30 v0.2.0 Allow concatenation of multiple source files to produce a single PDF
- 2013-05-19 v0.1.0 Callback hooks allowing markdown (and html) content to be pre-processed
- 2013-05-19 v0.0.0 Initial release