# html2pdf-ts

> Convert HTML to PDF.

Latest version **1.2.23** (published 2024-11-18) · ISC license · 0 weekly downloads

## Install

```sh
npm install html2pdf-ts
pnpm add html2pdf-ts
yarn add html2pdf-ts
bun add html2pdf-ts
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.23 |
| Published | 2024-11-18 |
| First published | 2023-05-06 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 16.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 14 |
| Author | Vitor Ricardo |
| Maintainers | vitorric |
| Keywords | nodets, html2pdf-ts, html2pdf, htmltopdf, node pdf, node, npm node pdf, typescript pdf, html, pdf, puppeteer, convert, nodejs, typescript |

## Links

- npm: https://www.npmjs.com/package/html2pdf-ts
- Repository: https://github.com/vitorric/html2pdf
- Homepage: https://github.com/vitorric/html2pdf#readme
- Issues: https://github.com/vitorric/html2pdf/issues
- npm.io page: https://npm.io/package/html2pdf-ts

## Dependencies (1)

- [puppeteer](https://npm.io/package/puppeteer.md) ^23.8.0

## 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

- 1.2.23 (latest) — 2024-11-18
- 1.2.22 — 2024-07-31
- 1.2.21 — 2024-07-31
- 1.2.2 — 2024-07-31
- 1.2.1 — 2024-07-04
- 1.2.0 — 2024-07-04
- 1.1.1 — 2023-08-15
- 1.1.0 — 2023-08-15
- 1.0.32 — 2023-05-06
- 1.0.31 — 2023-05-06
- 1.0.3 — 2023-05-06
- 1.0.2 — 2023-05-06
- 1.0.1 — 2023-05-06
- 1.0.0 — 2023-05-06

## README

# HTML2PDF-TS

#### NPM badges

<!-- [START badges] -->
[![NPM html2pdf-ts package](https://img.shields.io/npm/v/html2pdf-ts.svg)](https://npmjs.org/package/html2pdf-ts)
[![npm downloads](https://img.shields.io/npm/dm/html2pdf-ts.svg?maxAge=604800)](https://npm-stat.com/charts.html?package=html2pdf-ts&from=2017-01-1)
[![npm downloads](https://img.shields.io/npm/dt/html2pdf-ts.svg?maxAge=604800)](https://npm-stat.com/charts.html?package=html2pdf-ts&from=2017-01-1)
<!-- [END badges] -->


Simple lib to convert HTML to PDF, using puppeteer and [qpdf](https://github.com/qpdf/qpdf) to protect him with password.

This package have the following features:
  
- [x] Simple convert HTML to PDF;
- [x] Convert HTML to PDF and protect it with password;
- [x] Queue to convert HTML to PDF one per time, saving memory.

# Install

First of all, install [qpdf](https://github.com/qpdf/qpdf) in your OS.

```javascript
npm i html2pdf-ts
```

```javacript
yarn add html2pdf-ts
```

# Example

To execute an example, just run:
  
```javascript
npm run start
```

or

```javascript
yarn start
```

Using the package:

The example below is for executing just 1 conversion, and it happens immediately.

```javascript
import { promises as fs } from 'fs';

import { html2pdf } from '../src/index';
import { HTML2PDFOptions } from '../src/types';

const exampleSingleConversion = async () => {
  const html = await fs.readFile('./example/page.html', 'utf-8');
  const options: HTML2PDFOptions = {
    format: 'A4',
    filePath: './example/example.pdf',
    landscape: false,
    protect: {
      password: '1234',
    },
    resolution: {
      height: 1920,
      width: 1080,
    },
  };

  await html2pdf.createPDF(html, options);
  console.log('PDF Generated...');
};

exampleSingleConversion();
```

In this other example, the queue is already used to control the conversion of HTML's into PDF's

```javascript
const exampleMultipleConversion = async () => {
  const array = Array.from({ length: 51 }, (_, i) => i);
  const html = await fs.readFile('./example/page.html', 'utf-8');

  for await (const i of array) {
    const options: HTML2PDFOptions = {
      format: 'A4',
      filePath: `./example/multiples/example_${i}.pdf`,
      landscape: false,
      protect: {
        password: '1234',
      },
      resolution: {
        height: 1920,
        width: 1080,
      },
    };

    await html2pdf.addToQueue(html, options);
  }

  await html2pdf.createPDF(html, {
    format: 'A4',
    filePath: `./example/multiples/another.pdf`,
    landscape: false,
    protect: {
      password: '1234',
    },
    resolution: {
      height: 1920,
      width: 1080,
    },
  });
};
```

To create the PDF without password, just remove the param **protect** from options.

In addition, you can read a html file and pass the content to create the PDF, or just pass a pure HTML as param.

# Tests

To execute tests run:
```
yarn test
``` 

With coverage:
```
yarn test:cov
``` 

# License

Released under the MIT License.

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