Skip to main content

formalizer

Convert a fillable PDF into a self-contained Typst package that anyone can edit and compile to a near-perfect replica.

Maintained by TtQ.

How it works

  1. Extract — PyMuPDF reads the PDF and outputs FIELDS.json (field schema) and pageN.svg background images.
  2. Codegen — The orchestrator writes a Typst package with a typed form() function and a pre-filled example.typ.
  3. Fill — Edit example.typ, replace the dummy values with real ones, compile with typst compile.
<out>/
  typst.toml      # package manifest
  lib.typ         # rendering engine
  FIELDS.json     # extracted field schema
  page1.svg       # vector page backgrounds
  form.typ        # generated API wrapper (do not edit)
  example.typ     # your starting point — edit this

Requirements

  • Python ≥ 3.10
  • typst CLI (for compiling the output package)

Installation

pip install formalizer
# or
uv add formalizer

Usage

CLI

# Generate a package (name defaults to --out basename)
formalizer --pdf form.pdf --out ./my-form

# Override the package name
formalizer --pdf form.pdf --out ./my-form --name custom-name

# Overwrite an existing output directory
formalizer --pdf form.pdf --out ./my-form -f

After generation the CLI auto-compiles example.typ → example.pdf so you can immediately preview the result.

Python API

from formalizer import generate

# Minimal — name defaults to the out directory basename
generate(pdf="form.pdf", out="./my-form")

# With options
generate(pdf="form.pdf", out="./my-form", name="custom-name", force=True)

Filling the form

Edit the generated example.typ and pass real values to form():

#import "form.typ": form

#form(
  first_name:  "Jane Smith",
  agree_terms: true,
  gender:      "F",
)

Then compile:

typst compile example.typ filled-form.pdf

Development

# Install in editable mode
pip install -e .

# Run tests
pip install pytest
pytest tests/ -v

Tests that invoke the typst CLI (test_cli, test_codegen_compiles) are skipped automatically if typst is not on PATH.

License

Apache 2.0

Metadata

Release files for formalizer 0.2.3

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

Source distribution (sdist)

Source distribution for formalizer 0.2.3
File Size Uploaded Provenance
formalizer-0.2.3.tar.gz 351.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for formalizer 0.2.3
File Interpreter ABI Platform
formalizer-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 363.8 kB

Release files / formalizer-0.2.3.tar.gz

Download URL formalizer-0.2.3.tar.gz
Size 351.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f0ceceda10dbbe1dd263ad3f4be104cba52b0d53601cfbb33856dbb794fa9f41
BLAKE2b-256 checksum
How to use checksums
1a2d55166c04e602130958abad379532a62aab3b267c2dfdf6131cf1346d0c22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 7, 2026.

Transparency log

Release files / formalizer-0.2.3-py3-none-any.whl

Download URL formalizer-0.2.3-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
416671d78076b7c1a1eb1a83e3a497525f99741252b85634d5ac1b49ab212156
BLAKE2b-256 checksum
How to use checksums
9c4fb83742ebab70afb65d2b8032173a5801bddf8339629238b232ae9bf10cf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 Apr 7, 2026.

Transparency log

Security for formalizer 0.2.3

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 formalizer-0.2.3.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 Apr 7, 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