Skip to main content

proofpress

CI PyPI License: Apache 2.0

Open-source pieces of a print-on-demand pipeline, extracted from production use.

Piece What it is
proof-pdf CLI and library that hold a print PDF to PDF/X-4 and PDF/A.
releaseart/lualatex TeX Live 2025 with LuaLaTeX.
releaseart/full lualatex plus Ghostscript, veraPDF and proof-pdf.

proof-pdf

verify runs four layers, each of which can be switched off:

  • PDF/A with veraPDF (--flavour 2b by default; --no-pdfa to skip).
  • PDF/X-4 structure: page boxes, /Trapped, the GTS_PDFX output intent and the XMP version key (--no-pdfx).
  • Geometry: trim and bleed against the finished size you expect. Runs only when --trim-mm is given (--bleed-mm, --tolerance-mm).
  • Colour: total ink coverage (--max-tac, 300% default), stray RGB (--strict-cmyk), effective image DPI (--min-dpi, 300 default), overprint and rich-black small text (--no-colour).

preview rasterises each page and draws the trim, bleed and safe guides from the PDF's own boxes, so a geometry finding can be seen.

pip install proof-pdf          # Python 3.15; needs verapdf and gs (Ghostscript) on PATH

proof-pdf verify job/ --trim-mm 105x148 --bleed-mm 3 --exclude '*_preview.pdf'
proof-pdf verify card.pdf --json          # machine-readable findings, for CI
proof-pdf preview card.pdf --dpi 150
proof-pdf --version                       # version, plus the commit when built from an image
  • Arguments are files or directories; a directory expands to every PDF beneath it, minus --exclude globs (relative to that directory).
  • A check whose tool is missing fails, it is never skipped: a file that can't be confirmed must not read as OK.
  • Errors fail the file and exit 1. Warnings are advisory. --quiet prints nothing, for exit-code-only use.

As a library, proof_pdf.core.verify_file(path, profile) returns a FileReport of Findings; see proof_pdf.models.Profile.

Docker images

docker run --rm --user "$(id -u):$(id -g)" -v "$PWD":/work releaseart/full verify job/ --trim-mm 105x148
docker run --rm --user "$(id -u):$(id -g)" -v "$PWD":/work releaseart/lualatex lualatex -interaction=nonstopmode book.tex

releaseart/lualatex is TeX Live 2025 (the collection-latex, luatex, latexrecommended and fontsrecommended sets plus a few common packages) on Debian, with no Java or Python. Add your own packages in a derived image with tlmgr install. releaseart/full adds Ghostscript, veraPDF (with a JRE) and proof-pdf.

Both are published for linux/amd64 and linux/arm64. :latest is the most recent build: the weekly one of main (Mondays, which also picks up base-image updates) or a tagged release, whichever is newer. :1.2.3 comes from a git tag and :tl2025 tracks the TeX Live year. Each image reports its commit in PROOFPRESS_REVISION and the OCI revision label.

Development

Python 3.15 and PDM.

git config core.hooksPath .githooks   # ruff + pyright before each commit
pdm install
bin/autoformat.sh                     # ruff format + fix, pyright
bin/test.sh                           # pytest
bin/docker/build.sh && bin/docker/smoke.sh

See CONTRIBUTING.md. To release, add the version to CHANGELOG.md and push a tag: git tag v1.2.3 && git push origin v1.2.3. The tag is the version; it publishes to PyPI (TestPyPI first), creates a GitHub Release and pushes both images.

Licence

Apache-2.0. Third-party terms, including Ghostscript (AGPL-3.0) and veraPDF, are in NOTICE.

Metadata

Release files for proof-pdf 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for proof-pdf 0.1.0
File Size Uploaded Provenance Actions
proof_pdf-0.1.0.tar.gz 46.4 kB With provenance Details for proof_pdf-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for proof-pdf 0.1.0
File Interpreter ABI Platform Actions
proof_pdf-0.1.0-py3-none-any.whl Python 3 none any Details for proof_pdf-0.1.0-py3-none-any.whl

Total release size: 80.1 kB

Release files / proof_pdf-0.1.0.tar.gz

Download URL proof_pdf-0.1.0.tar.gz
Size 46.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9d4319755b2763eedd863d8c21a36bc5a56ad959039c86b9d4568b0d3ef6a7d5
BLAKE2b-256 checksum
How to use checksums
f2b11c9c558dc1fd4cf2147f175ce212202aa6f7c894244b5b479cb38706be72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Release files / proof_pdf-0.1.0-py3-none-any.whl

Download URL proof_pdf-0.1.0-py3-none-any.whl
Size 33.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
836f865b696cb63f065b6adda232eae91cc82c4fc3c1ec8a0cda0f2afac7d874
BLAKE2b-256 checksum
How to use checksums
219275867a05e276d1612010499fe387a0606c2d71e5cd09865c2fe38c2b94f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

Security for proof-pdf 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for proof_pdf-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page