# wkhtmltopdf

> A wrapper for the wkhtmltopdf HTML to PDF converter using WebKit

Latest version **0.4.0** (published 2021-05-14) · 0 weekly downloads

## Install

```sh
npm install wkhtmltopdf
pnpm add wkhtmltopdf
yarn add wkhtmltopdf
bun add wkhtmltopdf
```

## Health

**Score 18/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.0 |
| Published | 2021-05-14 |
| First published | 2013-05-17 |
| Weekly downloads | 0 |
| TypeScript types | separate (@types/wkhtmltopdf) |
| Module format | CommonJS |
| Node | >=0.6 |
| Dependencies | 2 |
| Unpacked size | 10.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 610 |
| Author | Devon Govett |
| Maintainers | devongovett, zxlin |

## Links

- npm: https://www.npmjs.com/package/wkhtmltopdf
- Repository: https://github.com/devongovett/node-wkhtmltopdf
- Homepage: https://github.com/devongovett/node-wkhtmltopdf#readme
- Issues: http://github.com/devongovett/node-wkhtmltopdf/issues
- npm.io page: https://npm.io/package/wkhtmltopdf

## Dependencies (2)

- [slang](https://npm.io/package/slang.md) >=0.2
- [is-stream](https://npm.io/package/is-stream.md) ^1.0.1

## Recent versions

- 0.4.0 (latest) — 2021-05-14
- 0.3.4 — 2017-02-22
- 0.3.3 — 2016-07-18
- 0.3.1 — 2016-05-28
- 0.3.0 — 2016-04-14
- 0.2.0 — 2016-04-13
- 0.1.6 — 2016-03-29
- 0.1.5 — 2014-07-18
- 0.1.4 — 2013-11-08
- 0.1.3 — 2013-10-26
- 0.1.2 — 2013-06-18
- 0.1.1 — 2013-06-01
- 0.1.0 — 2013-05-17

## 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('<h1>Test</h1><p>Hello world</p>')
  .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

---
_Source: https://npm.io/package/wkhtmltopdf · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
