1.1.5 • Published 7 months ago
html-export-pdf-cli v1.1.5
html-export-pdf-cli
Render HTML to PDF(with outline) using Puppeteer.
Features
- 🖥️ Converting HTML to PDF for
.html
,.htm
,.xhtml
file formats - 📑 Added PDF outline
- ⚙️ Configurations for generating PDF with Puppeteer —— pdfOptions
- 📂 Multi-file PDF generation
- ⌨️ Developed in TypeScript
- ⏬ Download web page
Installation
# Global installation
npm install -g html-export-pdf-cli
# Local installation
npm install --save-dev html-export-pdf-cli
The installed html-export-pdf-cli
command is available.
Usage
Generating a PDF
html-export-pdf-cli ./index.html -o result.pdf
Generating two PDFs
html-export-pdf-cli ./index.html ./home.html
# or
html-export-pdf-cli -t ./index.html -t ./home.html
html-export-pdf-cli --inputs ./index.html --inputs ./home.html
Generating some PDFs
This Library uses glob to parse the path you enter, and its syntax refers to the glob documentation.
html-export-pdf-cli ./pdf/*.html
Outline
html-export-pdf-cli ./index.html --outlineTags h1,h2 -o index.pdf
Using outlineContainerSelector specify an outline container selector
html-export-pdf-cli ./index.html --outlineContainerSelector .VPDoc --outlineTags h1,h2 -o index.pdf
Additional Scripts
html-export-pdf-cli ./index.html --additionalScripts a.js --additionalScripts b.js -o index.pdf
Additional Styles
html-export-pdf-cli ./index.html --additionalStyles a.css --additionalStyles b.css -o index.pdf
PDF Options
You can customize all configuration parameters for Puppeteer to generate PDF except path
.
Property | Modifiers | Type | Description | Default |
---|---|---|---|---|
footerTemplate | optional | string | HTML template for the print footer. Has the same constraints and support for special classes as PDFOptions.headerTemplate. | |
format | optional | PaperFormat | letter. | |
headerTemplate | optional | string | HTML template for the print header. Should be valid HTML with the following classes used to inject values into them:- date formatted print date- title document title- url document location- pageNumber current page number- totalPages total pages in the document | |
height | optional | string | number | Sets the height of paper. You can pass in a number or a string with a unit. | |
landscape | optional | boolean | Whether to print in landscape orientation. | false |
margin | optional | PDFMargin | Set the PDF margins. | undefined no margins are set. |
omitBackground | optional | boolean | Hides default white background and allows generating PDFs with transparency. | false |
pageRanges | optional | string | Paper ranges to print, e.g. 1-5, 8, 11-13. | The empty string, which means all pages are printed. |
preferCSSPageSize | optional | boolean | Give any CSS @page size declared in the page priority over what is declared in the width or height or format option. | false, which will scale the content to fit the paper size. |
printBackground | optional | boolean | Set to true to print background graphics. | false |
scale | optional | number | Scales the rendering of the web page. Amount must be between 0.1 and 2. | 1 |
timeout | optional | number | Timeout in milliseconds. Pass 0 to disable timeout. | 30_000 |
width | optional | string | number | Sets the width of paper. You can pass in a number or a string with a unit. |
Format
html-export-pdf-cli ./index.html -s A0 -o index.pdf
# or
html-export-pdf-cli ./index.html --pageSize A0 -o index.pdf
Margin
html-export-pdf-cli ./index.html -m top=10,bottom=10,left=10,right=10 -o index.pdf
# or
html-export-pdf-cli ./index.html --margin top=10,bottom=10,left=10,right=10 -o index.pdf
The order can be customized, even omitting a few.
html-export-pdf-cli ./index.html -m top=10 -o index.pdf
html-export-pdf-cli ./index.html -m right=10 -o index.pdf
html-export-pdf-cli ./index.html -m right=10,left=10 -o index.pdf
html-export-pdf-cli ./index.html -m top=10,left=10 -o index.pdf
Page Ranges
html-export-pdf-cli ./index.html --pageRanges 1-5 -o index.pdf
OmitBackground
html-export-pdf-cli ./index.html --omitBackground -o index.pdf
etc.
PaperFormat
PDFMargin
PDF File Name Convention
Rules for automatically generating PDF file names.
URL | Filename |
---|---|
https://www.example.com/ | www.example.com.pdf |
https://www.example.com:80/ | www.example.com.pdf |
https://www.example.com/resource | resource.pdf |
https://www.example.com/resource.extension | resource.pdf |
https://www.example.com/path/ | path.pdf |
https://www.example.com/path/to/ | path_to.pdf |
https://www.example.com/path/to/resource | resource.pdf |
https://www.example.com/path/to/resource.ext | resource.pdf |
file:///User/path/to/resource.html | resource.pdf |
Options
Key | Type | CLI option | Description | Default Value |
---|---|---|---|---|
inputs | string[] | --inputs | Input one or more local or online paths. | [] |
outFile | string | --outFile | Output file name. | {input}.pdf |
outDir | string | --outDir | Output directory. | process.cwd() |
headless | boolean | new | --headless | Whether to run the browser in headless mode. | new |
PDFOptions | object | Valid options to configure PDF generation via Page.pdf(). | ||
┗ scale | number | --scale | Scales the rendering of the web page. Amount must be between 0.1 and 2. | 1 |
┗ headerTemplate | string | --headerTemplate | HTML template for the print header. | |
┗ footerTemplate | string | --footerTemplate | HTML template for the print footer. | |
┗ preferCSSPageSize | boolean | --preferCSSPageSize | Give any CSS @page size declared in the page priority over what is declared in the width or height or format option. | false |
┗ printBackground | boolean | --printBackground | Set to print background graphics. | false |
┗ omitBackground | boolean | --omitBackground | Hides default white background and allows generating PDFs with transparency. | false |
┗ pageRanges | string | --pageRanges | Paper ranges to print, e.g. 1-5, 8, 11-13 . | |
┗ margin | object | -m, --margin | Set the PDF margins. e.g. top=10,bottom=10,left=10,right=10 . | |
┗ landscape | boolean | -l, --landscape | Whether to print in landscape orientation. | false |
┗ pageSize | string | -s, --page-size | Print to Page Size size. | letter |
┗ width | string | number | -w, --width | Print to Page Width width in MM. | |
┗ height | string | number | -h, --height | Print to Page Height height in MM. | |
┗ timeout | number | -t, --timeout | Set a max timeout of ms. | |
html | boolean | -x, --html | Output html file. | |
blockLocal | boolean | -b, --blockLocal | Disallow access to filesystem for local files. | false |
blockRemote | boolean | -r, --blockRemote | Disallow requests to remote servers. | false |
outlineContainerSelector | string | --outlineContainerSelector | Specify an outline container selector. | |
allowedPaths | string[] | --allowedPaths | Only allow access to given filesystem paths, repeatable. | [] |
ignoreHTTPSErrors | boolean | --ignoreHTTPSErrors | Whether to ignore HTTPS errors during navigation. | false |
allowedDomains | string[] | --allowedDomains | Only allow access to given remote domains, repeatable. | [] |
outlineTags | string[] | --outline-tags | Add outlines (bookmarks) to PDF. | h1,h2,h3,h4,h5,h6 |
additionalScripts | string[] | --additional-scripts | additional script tags to the HTML document. | [] |
additionalStyles | string[] | --additional-styles | additional style tags to the HTML document. | [] |
browserEndpoint | string | --browserEndpoint | Use a remote Chrome server with browserWSEndpoint. | |
browserArgs | string[] | --browserArgs | Launch Chrome with comma separated args. | [] |
media | string | --media | Emulate print or screen media, defaults to print. | print |
debug | boolean | --debug | Debug. | false |
warn | boolean | --warn | Enable warning logs. | false |
License
This library is under the MIT License.