CompilePDF — the only writer in the Print With Synergy stack. Rewrite, marks, impose, and trap producers built on top of codex-pdf.
Project description
compile-pdf
CompilePDF — the only writer in the Print With Synergy stack.
Four producers under one Python package, four FastAPI services in one Railway project, one Redis-backed Celery broker, one S3-compatible object bucket.
| Producer | Purpose |
|---|---|
compile_pdf.rewrite |
OCG flips, metadata patches, color-space swaps, hygiene strips, page lifecycle ops on a single PDF |
compile_pdf.marks |
Register / crop / color-bar / fold marks; 1-up proofing slugs; external mark template ingestion |
compile_pdf.impose |
Sheet-level step-and-repeat layout; work-and-turn / tumble; bleed handling |
compile_pdf.trap |
Ink-pair spread / choke trap with three engine slots (pure_python / ghostscript / external) |
Architectural invariants (mechanically enforced by scripts/consume_surface_audit.py):
- CompilePDF is the only writer in the stack.
- codex-pdf stays read-only — its
produce_surface_audit.pyenforces. - Every producer consumes Codex primitives through published surfaces; re-implementation is forbidden.
- Every producer emits deterministic bytes; same input + same plan + same engine fingerprint → same SHA-256 output.
Status
compile-pdf 0.5.1 on PyPI, built against codex-pdf 1.8.1. All four producers (rewrite, marks, impose, trap) are live, the CJD orchestrator + lineage store are wired, and retention-for-training is opt-in per request. See CHANGELOG.md for the release log and docs/ for operator + integrator documentation.
Install
pip install compile-pdf
For producers that need geometry primitives (marks, impose, trap):
pip install 'compile-pdf[geom]'
For the trap producer with Ghostscript engine fallback:
pip install 'compile-pdf[geom,trap-gs]'
CLI
compile-pdf rewrite --plan plan.json input.pdf output.pdf
compile-pdf marks --template tmpl.json input.pdf output.pdf
compile-pdf impose --layout layout.json input.pdf output.pdf
compile-pdf trap --policy policy.json input.pdf output.pdf
compile-pdf version
compile-pdf contract
compile-pdf health
compile-pdf cjd apply <job.json|job.xml>
compile-pdf lineage <id> [--chain]
Opting in to retention-for-training
Every producer endpoint (and the CJD orchestrator) accepts an explicit opt-in signal that retains the call's inputs and outputs for engine training. Off by default; engaged per-request.
curl -X POST $COMPILE_BASE/v1/rewrite/apply \
-H "X-Compile-Retain-For-Training: true" \
-H "X-Compile-Tenant: acme-co" \
-H "Content-Type: application/json" \
--data-binary @request.json
Operators wire it up by setting COMPILE_RETAIN_BUCKET and friends
(see docs/operations/retention.md). With no bucket configured the consent header is parsed and logged but nothing is written.
CLI defaults to local-mode (in-process) when COMPILE_API_BASE is unset; otherwise POSTs to the configured central or sidecar URL.
Docs
- Operator + integrator docs:
docs/ - Per-release log:
CHANGELOG.md
License
AGPL-3.0-or-later. See LICENSE.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file compile_pdf-0.5.2.tar.gz.
File metadata
- Download URL: compile_pdf-0.5.2.tar.gz
- Upload date:
- Size: 267.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5dc9e7272ddf82db11b2f7908cfdabd5a68763ba79ebe3686b61f031981049a
|
|
| MD5 |
4e6eb6a6d00896d6cb6d67e6059705cd
|
|
| BLAKE2b-256 |
c8f596ce9c00d739c6e7492950f5f2e7e48e9434af99151a5f1c533f1b2cc454
|
File details
Details for the file compile_pdf-0.5.2-py3-none-any.whl.
File metadata
- Download URL: compile_pdf-0.5.2-py3-none-any.whl
- Upload date:
- Size: 121.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fefbf744cf071795e4417d945a66387f9363d43e6bd0da9b0a71c9205cf1263c
|
|
| MD5 |
208c4946f34bd6602b0446927dd98870
|
|
| BLAKE2b-256 |
8a1a779e36224a03aa534bcea904c9a1d16c4fcb6e5d4820ef804a3e53612f64
|