Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devongovett/node-wkhtmltopdf
A wrapper for the wkhtmltopdf HTML to PDF converter using WebKit
https://github.com/devongovett/node-wkhtmltopdf
Last synced: about 2 months ago
JSON representation
A wrapper for the wkhtmltopdf HTML to PDF converter using WebKit
- Host: GitHub
- URL: https://github.com/devongovett/node-wkhtmltopdf
- Owner: devongovett
- Created: 2013-05-17T03:13:46.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2023-03-09T09:29:31.000Z (over 1 year ago)
- Last Synced: 2024-07-28T11:44:50.002Z (about 2 months ago)
- Language: JavaScript
- Size: 58.6 KB
- Stars: 605
- Watchers: 22
- Forks: 146
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
node-wkhtmltopdf [![Build Status](https://travis-ci.org/devongovett/node-wkhtmltopdf.svg)](https://travis-ci.org/devongovett/node-wkhtmltopdf)
================A Node.js wrapper for the [wkhtmltopdf](http://wkhtmltopdf.org/) command line tool. As the name implies,
it converts HTML documents to PDFs using WebKit.## Installation
First, you need to install the `wkhtmltopdf` command line tool on your system.
The **easiest way** to do this is to
[download](http://wkhtmltopdf.org/downloads.html#stable) a prebuilt version for your system. **DO NOT** try to use
the packages provided by your distribution as they may not be using a patched Qt and have missing features.Finally, to install the node module, use `npm`:
npm install wkhtmltopdf
Be sure the `wkhtmltopdf` command line tool is in your PATH when you're done installing. If you don't want to do this for some reason, you can change
the `require('wkhtmltopdf').command` property to the path to the `wkhtmltopdf` command line tool.## Usage
### wkhtmltopdf(source, [options], [callback]);
```javascript
var wkhtmltopdf = require('wkhtmltopdf');// URL
wkhtmltopdf('http://google.com/', { pageSize: 'letter' })
.pipe(fs.createWriteStream('out.pdf'));
// HTML
wkhtmltopdf('Test
Hello world
')
.pipe(res);// Stream input and output
var stream = wkhtmltopdf(fs.createReadStream('file.html'));// output to a file directly
wkhtmltopdf('http://apple.com/', { output: 'out.pdf' });// Optional callback
wkhtmltopdf('http://google.com/', { pageSize: 'letter' }, function (err, stream) {
// do whatever with the stream
});// Repeatable options
wkhtmltopdf('http://google.com/', {
allow : ['path1', 'path2'],
customHeader : [
['name1', 'value1'],
['name2', 'value2']
]
});// Ignore warning strings
wkhtmltopdf('http://apple.com/', {
output: 'out.pdf',
ignore: ['QFont::setPixelSize: Pixel size <= 0 (0)']
});
// RegExp also acceptable
wkhtmltopdf('http://apple.com/', {
output: 'out.pdf',
ignore: [/QFont::setPixelSize/]
});
````wkhtmltopdf` is just a function, which you call with either a URL or an inline HTML string, and it returns
a stream that you can read from or pipe to wherever you like (e.g. a file, or an HTTP response).## Options
There are [many options](http://wkhtmltopdf.org/docs.html) available to
wkhtmltopdf. All of the command line options are supported as documented on the page linked to above. The
options are camelCased instead-of-dashed as in the command line tool. Note that options that do not have values, must be specified as a boolean, e.g. **debugJavascript: true**There is also an `output` option that can be used to write the output directly to a filename, instead of returning
a stream.### Debug Options
Apart from the **debugJavascript** option from wkhtmltopdf, there is an additional options **debug** and **debugStdOut** which will help you debug rendering issues, by outputting data to the console. **debug** prints and **stderr** messages while **debugStdOut** prints any **stdout** warning messages.
## Tests
Run `npm test` and manually check that generated files are like the expected files. The test suit prints the paths of the files that needs to be compared.
**TODO** - Find a way to automatically compare the PDF files.
## License
MIT