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.

Quickstart

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

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
    

Basic Usage

  1. Create your document design in an SVG editor
  2. Replace text with variables using Jinja2 (e.g., {{ title }})
  3. Configure your content in YAML
  4. Generate PDFs with:
pdfbaker bake <config_file>

This will produce your PDF files in a dist/ directory where your configuration file lives. It will also create a build/ directory with intermediate files, which is only kept if you specify --keep-build-files (or --debug).

Examples

For working examples, see the examples directory:

Create all PDFs with:

pdfbaker bake examples/examples.yaml

Documentation

( on GitHub )

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 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.9.3.tar.gz (158.0 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.9.3-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pdfbaker-0.9.3.tar.gz
Algorithm Hash digest
SHA256 1f0a05fa88a2d7c6c471df3b5740e4634d20e9384a44bdd5e6d6d128ae44a75c
MD5 b181806653f35515327836f1031716a8
BLAKE2b-256 bc206a34cba920d63cb81db3916e7eac612558f67537e316c6967c4e746eaa90

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdfbaker-0.9.3.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.9.3-py3-none-any.whl.

File metadata

  • Download URL: pdfbaker-0.9.3-py3-none-any.whl
  • Upload date:
  • Size: 23.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.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6e4d3cff2d65f9088aa76bfd83a3ec5303e0e1b7e479b177a59a6c87f21df7d9
MD5 9f77a52be4fb76fe155a0278202a62b7
BLAKE2b-256 0c3fd68abc43862c48ce4d0b9b6a3b5696f7f73795b6c3792df818e468736007

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdfbaker-0.9.3-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