# pdfshift

> Convert HTML documents to PDF using the PDFShift.io API.

Latest version **2.0.1** (published 2019-11-04) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

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

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 2.0.1 |
| Published | 2019-11-04 |
| First published | 2018-05-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 16.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Cyril Nicodeme |
| Maintainers | cnicodeme |
| Keywords | html, pdf, api, pdfshift, convert, document |

## Links

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

## Dependencies (1)

- [cross-fetch](https://npm.io/package/cross-fetch.md) ^3.0.4

## Alternatives

- [@cantoo/pdf-lib](https://npm.io/package/@cantoo/pdf-lib.md) — 297.9K weekly downloads
- [datatables.net-buttons](https://npm.io/package/datatables.net-buttons.md) — 200.1K weekly downloads
- [@ckeditor/ckeditor5-export-pdf](https://npm.io/package/@ckeditor/ckeditor5-export-pdf.md) — 167.0K weekly downloads
- [scanbot-web-sdk](https://npm.io/package/scanbot-web-sdk.md) — 15.0K weekly downloads
- [@syncfusion/ej2-angular-pdfviewer](https://npm.io/package/@syncfusion/ej2-angular-pdfviewer.md) — 8.8K weekly downloads

## Recent versions

- 2.0.1 (latest) — 2019-11-04
- 2.0.0 — 2019-09-19
- 1.0.5 — 2019-07-09
- 1.0.4 — 2018-07-17
- 1.0.3 — 2018-06-20
- 1.0.2 — 2018-06-12
- 1.0.1 — 2018-05-04
- 1.0.0 — 2018-05-04

## README

PDFShift Node Package
=======================

This Node package provides a simplified way to interact with the [PDFShift](https://pdfshift.io) API.

## Documentation

See the full documentation on [PDFShift's documentation](https://pdfshift.io/documentation).

## Installation

You should not require this code directly. Instead, just run:

    npm install --save pdfshift

### Requirements

* [Request](https://www.npmjs.com/package/request)

## Usage

This library needs to be configured with your `api_key` received when creating an account.
Setting it is easy as:

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
```

### Basic example

#### With an URL

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

pdfshift.convert('https://www.example.com').then(function (binary_file) {
    fs.writeFile('result.pdf', binary_file, "binary", function () {})
}).catch(function({message, code, response, errors = null}) {})
```

#### With inline HTML data:

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

let data = fs.readFileSync('invoice.html', 'utf8');

pdfshift.convert(data).then(function (binary_file) {
    fs.writeFile('result.pdf', binary_file, "binary", function () {})
}).catch(function({message, code, response, errors = null}) {})
```

### Custom CSS

#### Loading CSS from an URL:

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

pdfshift.convert('https://www.example.com', {css: 'https://www.example.com/public/css/print.css'}).then(function (binary_file) {
    fs.writeFile('result.pdf', binary_file, "binary", function () {})
}).catch(function({message, code, response, errors = null}) {})
```

#### Loading CSS from a string:

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

pdfshift.convert('https://www.example.com', {css: 'a {text-decoration: underline; color: blue}'}).then(function (binary_file) {
    fs.writeFile('result.pdf', binary_file, "binary", function () {})
}).catch(function({message, code, response, errors = null}) {})
```

### Custom HTTP Headers

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://httpbin.org/headers')
    .setHTTPHeaders({
        'X-Original-Header': 'Awesome value'
    })
    .addHTTPHeader('user-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0') // Also works like this
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

### Accessing secured pages

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://httpbin.org/basic-auth/user/passwd')
    .auth('user', 'passwd')
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

### Using cookies

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://httpbin.org/cookies')
    .addCookie({name: 'session', value: '4cb496a8-a3eb-4a7e-a704-f993cb6a4dac'})
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

### Adding Watermark (Oh hi Mark!)

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://www.example.com')
    .watermark({
        image: 'https://pdfshift.io/static/img/logo.png',
        offset_x: 50,
        offset_y: '100px',
        rotate: 45
    })
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

### Custom Header (or Footer)

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://www.example.com')
    .footer({source: '<div>Page {{page}} of {{total}}</div>', spacing: '50px'})
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

### Protecting the generated PDF

```javascript
const pdfshift = require('pdfshift')('120d8e8a86d2....................');
const fs = require('fs');

// We use .prepare() instead of .convert to easily handle advanced configuration
pdfshift.prepare('https://www.example.com')
    .protect({
        user_password: 'user',
        owner_password: 'owner',
        no_print: true
    })
    .convert()
    .then(function (binary_file) {
        fs.writeFile('result.pdf', binary_file, "binary", function () {})
    })
    .catch(function({message, code, response, errors = null}) {})
```

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