Skip to main content

SVG Jinja templates + YAML config = PDF documents

Project description

pdfbaker

PyPI version Python Downloads sigstore tests codecov OSSF Scorecard pip-audit bandit Last commit License

Create PDF documents from YAML-configured SVG templates.

  • Separation of design and content: Design your layout visually in SVG, while managing content and configuration in YAML.
  • Instant templating: Turn any existing SVG into a configurable template with a single command.

Installation

pdfbaker is available on PyPI and can be installed using pipx:

pipx install pdfbaker

If you don't have pipx yet, install it first:

sudo apt install pipx
pipx ensurepath

Windows Requirements

If you are using Windows, GTK needs to be installed: GTK for Windows Runtime Environment Installer

  • Choose Install GTK+ libraries
  • Tick to setup path (otherwise add the install DLL folder manually)
  • Choose your installation location
  • Complete the installation

Optional Dependencies

  • For SVG to PDF conversion, CairoSVG is used by default. If you need Inkscape instead, install it:

    sudo apt install inkscape
    
  • For PDF compression, install Ghostscript:

    sudo apt install ghostscript
    
  • If your templates embed particular fonts, they need to be installed. For example for Roboto fonts:

    sudo apt install fonts-roboto
    

Quickstart: Create templated PDF from an SVG

The fastest way to get started is with the --create-from option:

  1. Design your document in an SVG editor or convert to SVG.

  2. Run pdfbaker with --create-from to scaffold a new project and generate your first PDF:

    pdfbaker --create-from mydesign.svg myproject/myproject.yaml
    

    This will create a directory structure like:

    myproject
    ├── myproject.yaml
    └── mydesign
        ├── config.yaml
        ├── pages
           └── main.yaml
        └── templates
            └── main.svg.j2
    

    and produce your PDF in myproject/dist/mydesign/mydesign.pdf.

  3. Edit the template and YAML files to customize your content and variables. This directory structure is just a starting point. Add more documents and customize as needed.

  4. For future builds, just run:

    pdfbaker myproject/myproject.yaml
    

    to regenerate your PDFs.

Documentation

Examples

For working examples, see the examples directory:

Create all PDFs with:

pdfbaker examples/examples.yaml

Development

All source code is on GitHub.

This project uses uv for dependency management. The uv.lock file ensures reproducible builds.

Create and activate the virtual environment:

uv venv
source .venv/bin/activate

Install development dependencies:

uv sync --dev

Tests

Run tests:

pytest

View test coverage:

pytest --cov=pdfbaker --cov-report=term-missing

Pre-commit hook

If you want to commit changes, install pre-commit (maybe using uv) and run

pre-commit install

This ensures the same checks run locally as in GitHub CI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdfbaker-0.11.0.tar.gz (168.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdfbaker-0.11.0-py3-none-any.whl (30.1 kB view details)

Uploaded Python 3

File details

Details for the file pdfbaker-0.11.0.tar.gz.

File metadata

  • Download URL: pdfbaker-0.11.0.tar.gz
  • Upload date:
  • Size: 168.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pdfbaker-0.11.0.tar.gz
Algorithm Hash digest
SHA256 c20b5cc91bc22250414ba3cfa72d5dd602368cdceb2dc9da88f42a3a3652162a
MD5 a54dbda8f1327f3f1ed71ad91124a8ce
BLAKE2b-256 67a131a2b856b260800ee50de6e25b334ddc80769d22bf984bd1a5cad77f6dce

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdfbaker-0.11.0.tar.gz:

Publisher: semantic-release.yaml on pythonnz/pdfbaker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pdfbaker-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: pdfbaker-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 30.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pdfbaker-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 259c7ff8d0ca7e079dcbf4aab8379f670ddbe231d3876351c3e7c91ae70764b0
MD5 b3da85d69ea0a0695fb66b7f334dcb92
BLAKE2b-256 3677ecdbbee8f86b10392ad6da0d5c49f6ba15ae473955b42a4796400ec2b6c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdfbaker-0.11.0-py3-none-any.whl:

Publisher: semantic-release.yaml on pythonnz/pdfbaker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page