(or PNGs, JPEGs, BMPs...)
The Renderer loads HTML templates into Pages, which are later rendered into the desired format. With render-vendor, you can:
- Generate PDFs in 10s of milliseconds (10-100x faster than several popular solutions);
- Handle jobs asynchronously;
- Swap internal components, e.g. Headless Chrome vs. PhantomJS; and
- Integrate easily into modern JS build pipelines (e.g. React, Glimmer, Vue). For Ember + Electron projects, consider using ember-render-vendor
yarn add render-vendor
npm install render-vendor
Open the Node.js REPL (i.e. type node
in your working directory from above),
then run the following:
const { Renderer } = require('render-vendor');
Renderer.load('https://isleofcode.com').then((page) => {
return page.render('./out.pdf');
}).catch((err) => {
console.error(err);
}).then(() => {
Renderer.destroy();
}).then(() => {
process.exit();
});
The process should exit automatically, and your directory should have a shiny
new out.pdf
!
⚠ BE CAREFUL: the default Renderer boots a parallel PhantomJS
process. It is not bound to your REPL / application's lifecycle. Make sure to
destroy()
any Renderers you create.
Are you building an Ember.js + Electron app? Check out ember-render-vendor, a companion lib that: uses the Broccoli build pipeline to:
- Synchronizes data between your main application and rendered Page objects; and
- Uses the Broccoli build pipeline to make writing parallel renderers as simple as writing components.
render-vendor is maintained by Isle of Code in Toronto. Initial release was sponsored by Common Sort.
Thanks also to @marcbachmann & contributors to node-html-pdf
, from which the
PhantomRender's internal render()
implementation was lovingly aped.
Assuming you've installed Node.js, try the following:
cd
into a working directory (ormkdir
a new one);- Run
npm init
and follow the prompts to create your firstpackage.json
; then - Run the
npm install
command above:npm install render-vendor
.