#cli #pdf

bin+lib html2pdf

Convert HTML to PDF using a Headless Chrome browser

8 releases (5 breaking)

0.6.0 Jan 16, 2023
0.5.1 Mar 21, 2022
0.5.0 Feb 24, 2022
0.4.0 Aug 13, 2021
0.1.0 Jul 19, 2021

#335 in Encoding

49 downloads per month

Apache-2.0 OR MIT

414 lines


Docs Crates.io

Just a CLI over the headless_chrome crate to create PDF.


Need the Rust toolchain: https://rustup.rs/.

cargo install html2pdf


html2pdf path/to/file.html

To remove logs, set the env var RUST_LOG to none :

RUST_LOG="none" html2pdf path/to/file.html


Just run html2pdf --help :

html2pdf 0.4.0
Generate a PDF from a local HTML file using a headless chrome

    html2pdf [FLAGS] [OPTIONS] <input>

        --background    Allow print background
    -h, --help          Prints help information
        --landscape     Use landscape mode
    -V, --version       Prints version information

        --footer <footer>    HTML template for the print footer. Should use the same format as the headerTemplate
        --header <header>    HTML template for the print header. Should be valid HTML markup with following classes used
                             to inject printing values into them: date for formatted print date, title for document
                             title, url for document location, pageNumber for current page number, totalPages for total
                             pages in the document. For example, `<span class=title></span>` would generate span
                             containing the title
        --margin <margin>    Margin in inches You can define margin like this: '0.4' the value is applied for all side,
                             '0.4 0.4' : first value is applied for top and bottom, second for left and right, '0.4 0.4
                             0.4 0.4' : first value is applied for top then, right, then bottom, and last for left
    -o, --output <output>    Output file. By default, just change the input extension to PDF
        --paper <paper>      Paper size. Supported values: A4, Letter, A3, Tabloid, A2, A1, A0, A5, A6
        --range <range>      Paper ranges to print, e.g. '1-5, 8, 11-13'
        --scale <scale>      Scale, default to 1.0
        --wait <wait>        Time to wait in ms before printing. Examples: 150ms, 10s

    <input>    Input HTML file


~280K SLoC