Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/0tii/html-to-pdf
🖥️ An easy-to-use but reliable asynchronous library to create highly customizable PDFs from HTML or URL as buffer, base64 string and .pdf file using puppeteer.
https://github.com/0tii/html-to-pdf
convert html html-pdf html2pdf node npm pdf
Last synced: 29 days ago
JSON representation
🖥️ An easy-to-use but reliable asynchronous library to create highly customizable PDFs from HTML or URL as buffer, base64 string and .pdf file using puppeteer.
- Host: GitHub
- URL: https://github.com/0tii/html-to-pdf
- Owner: 0tii
- License: mit
- Created: 2022-06-21T08:07:57.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-09-28T07:17:28.000Z (about 1 year ago)
- Last Synced: 2024-10-06T06:42:56.679Z (about 1 month ago)
- Topics: convert, html, html-pdf, html2pdf, node, npm, pdf
- Language: JavaScript
- Homepage:
- Size: 39.1 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
README
# 🖥️ HTML2PDF
An easy-to-use but reliable asynchronous library to create highly customizable PDFs from HTML or URL as ``buffer``, ``base64 string`` and ``.pdf file``. Other than most npm-solutions for html-to-pdf conversion, this one leverages ``puppeteer`` as opposed to the deprecated and unmaintained ``phantomJS``. It also provides far more options to configure to your liking than most similar solutions. This *might* be the best html-to-pdf solution on npm at this point.## Installation
```
npm i [-g] better-html-pdf
```## Available functions
Other than the main converter function, HTML2PDF exposes two more functions that allow writing pdf file content as both ``base64`` or ``buffer``. Those functions are also used internally to replace the situationally unreliable ``puppeteer``-native file save function that is controlled through the ``path`` option.### Function signatures
Convert html to pdf
```typescript
html2pdf(html: string, options: Object) : Promise
```
Convert base64 file content to PDF file
```typescript
base64ToPdf(base64: string, file: string) : void
```
Convert file content buffer to PDF file
```typescript
bufferToPdf(buffer: Buffer, file: string) : void
```### Usage
Using HTML2PDF is quick and simple: Import the ``html2pdf`` function and pass it the html and options.
```javascript
const { html2pdf, base64ToPdf, bufferToPdf } = require('better-html-pdf');//[...]
// convert html to PDF
const fileContentB64 = await html2pdf('Test
', { avoidTableRowBreak: true, marginTop: 10, repeatTableHeader: false });
const fileContentBuffer = await html2pdf('Test
', { fileType: 'buffer', url: 'https://google.com/', viewPort: '1000x700' });//convert output to pdf file
base64ToPdf(fileContentB64, './test1.pdf');
bufferToPdf(fileContentBuffer, './test2.pdf');
```Full type declarations are included so ES6 imports are available, too.
```javascript
import { html2pdf } from 'better-html-pdf';//[...]
// convert html to PDF
const fileContentB64 = await html2pdf('Test
', { avoidTableRowBreak: true, marginTop: 10, repeatTableHeader: false });
```
### Options
This solution provides a great number of options to configure for your conversion, passed as a javascript object.
**Find a detailed doc of all options and defaults here**: [Options Documentation](https://github.com/0tii/html-to-pdf/blob/master/options.md).```javascript
{
fileType: 'base64', // 'base64' | 'buffer'
url: '', //if specified ignores html
viewPort: '1920x1080', //string (width)x(height)
timeout: 5000, //timeout for page loading in ms
landscape: false,
format: '', //letter | legal | tabloid | ledger | a0 | a1 | a2 | a3 | a4 | a5 | a6
repeatTableHeader: true, //repeat html table headers on each page - note: headers only repeat when in
repeatTableFooter: true, //repeat html table footers on each page - note: footers only repeat when in
displayHeaderFooter: true,
headerTemplate: '',
footerTemplate: '',
width: '1920', //document size in pixels or with units (in, mm, cm)
height: '1080', //document size in pixels or with units (in, mm, cm)
marginTop: 0, //num in pixels or with units (in, mm, cm)
marginBottom: 0, //num in pixels or with units (in, mm, cm)
marginLeft: 0, //num in pixels or with units (in, mm, cm)
marginRight: 0, //num in pixels or with units (in, mm, cm)
breakImages: false, //break images between pages
avoidTableRowBreak: true, //tries avoiding breaking table rows between pages
avoidDivBreak: false, //tries to avoid breaking divs between pages - can cause unwanted behavior
omitBackground: false, //hide html background, allows for transparency
pageRanges: '', //'1-12' | '3-5'
path: '', //file save path, if empty no file is created
disableJavascript: false, //disable javascript on the target site/html
preferCSSPageSize: false, //css-declared page size takes precedent over format, width and height
printBackground: true, //apply background styling
trueColors: true, //use unaltered colors
scale: 1, //render scale, must be between 0.1 and 2
screenMedia: false //use 'screen' instead of 'print' CSS media
}
```## Dependencies
HTML2PDF depends on `puppeteer`.