A command line tool to generate PDF from URL, HTML or Markdown files with electron.
I have a blog post explain why PDF Generation On The Web
Production ready? See it in action for the Myanmar Election!
npm install electron-pdf -g
For gnu/linux installations without a graphical environment:
$ sudo apt-get install xvfb # or equivalent
$ export DISPLAY=':99.0'
$ Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
$ electron-pdf ...
There is also an example docker machine here.
$ electron-pdf index.html ~/Desktop/index.pdf
$ electron-pdf index.md ~/Desktop/index.pdf
$ electron-pdf index.html ~/Desktop/index.pdf -c my-awesome-css.css
$ electron-pdf https://fraserxu.me ~/Desktop/fraserxu.pdf
The [BrowserWindow supports many options](https://github
.com/electron/electron/blob/master/docs/api/browser-window.md#new-browserwindowoptions) which you
may define by passing a JSON Object to the --browserConfig
option.
Some common use cases may include:
height
andwidth
- electron-pdf calculates the browser height and width based off of the dimensions of PDF page size multiplied by the HTML standard of 96 pixels/inch. So only set these values if you need to override this behaviorshow
- to display the browser window during generation
$ electron-pdf https://fraserxu.me ~/Desktop/fraserxu.pdf --browserConfig '{"show":true}'
electron-pdf ./index.html ~/Desktop/README.pdf -e
In your application, at the point which the view is ready for rendering
try {
// IE doesn't support this but that's ok, it runs it in Electron/Chrome
document.body.dispatchEvent(new Event('view-ready'))
} catch (e){}
A command line tool to generate PDF from URL, HTML or Markdown files
Options
--help Show this help
--version Current version of package
-i | --input String - The path to the HTML file or url
-o | --output String - The path of the output PDF
--browserConfig String - A valid JSON String that will be parsed into the options passed to electron.BrowserWindow
-c | --css String - The path to custom CSS
-b | --printBackground Boolean - Whether to print CSS backgrounds.
false - default
-s | --printSelectionOnly Boolean - Whether to print selection only
false - default
-p | --pageSize String - Can be A3, A4, A5, Legal, Letter, Tabloid or an Object containing height and width in microns
"A4" - default
-l | --landscape Boolean - true for landscape, false for portrait.
false - default
-m | --marginsType Integer - Specify the type of margins to use
0 - default
1 - none
2 - minimum
-d | --disableCache Disable HTTP caching
-w | --outputWait Integer – Time to wait (in MS) between page load and PDF creation
-e | --waitForJSEvent String - The name of the event to wait before PDF creation
'view-ready' - default
Usage
$ electron-pdf <input> <output>
$ electron-pdf <input> <output> -l
Examples
$ electron-pdf http://fraserxu.me ~/Desktop/fraserxu.pdf
$ electron-pdf ./index.html ~/Desktop/index.pdf
$ electron-pdf ./README.md ~/Desktop/README.pdf -l
$ electron-pdf ./README.md ~/Desktop/README.pdf -l -c my-awesome-css.css
Inspired by electron-mocha
MIT