Skip to content

A CLI tool to generate PDF documents from HTML templates

License

Notifications You must be signed in to change notification settings

wadevries/pcloadletter

Repository files navigation

pcloadletter

A CLI tool to generate PDF documents from HTML templates


"PC LOAD LETTER" - WTF does that mean?!

PyPI Version Build Status

Installation

pip install pcloadletter

Usage

pcloadletter lets you generate a pdf document from an HTML Jinja template given some context data from the command line and/or a .yml/.json file.

usage: pcloadletter [-h] [-t TEMPLATE] [-o OUT] [-c CONTEXT_FILE] [extra_context ...]

Generate PDF file from a Jinja-rendered HTML template

positional arguments:
  extra_context         key=value pairs which are added to the template context (default: None)

optional arguments:
  -h, --help            show this help message and exit
  -t TEMPLATE, --template TEMPLATE
                        The invoice template to render. (default: invoice.html)
  -o OUT, --out OUT     Destination file. (default: invoice.pdf)
  -c CONTEXT_FILE, --context-file CONTEXT_FILE
                        A .yml or .json file containing context for the template. (default: None)

Examples:

    pcloadletter --template templates/invoice.html --out invoice.pdf invoice_number=2021-001 invoice_date=`date +%Y-%m-%d`

    pcloadletter --template report.html --context-file=report-data.yml addressee="Mr. M. Bolton"

For example, given a template file hello.html:

<!doctype html>
<html lang="en">
<head>
    <link rel="stylesheet" href="styles.css" />
</head>
<body>
    <h1>Hello {{ target }}!</h1>
</body>
</html>

and a stylesheet:

.h1 {
    font-style: italic;
}

we can render the pdf like so;

pcloadletter --template hello.html target="world out there"

The context could have been given in a context file hello.yml;

target: world out there
pcloadletter --template hello.html --context-file=hello.yml

The above commands will generate a file invoice.pdf in the current directory. You can change the destination using

--out=~/Documents/report.pdf