License
pdfspine's Apache-2.0 licensing, its clean-room reimplementation, dependency and bundled-data license attributions, and its relationship to PyMuPDF.
pdfspine is licensed under the Apache License, Version 2.0 — a permissive license with an explicit patent grant. This is the project's core reason to exist: a PyMuPDF-shaped PDF toolkit you can use in closed-source products, SaaS backends, and permissively-licensed open-source software without an AGPL obligation or a commercial license.
See the repository's LICENSE
and NOTICE files
for the authoritative text.
Apache-2.0, end to end
- Every first-party crate is Apache-2.0. There is no copyleft anywhere in the code pdfspine ships.
- The dependency graph is gated by
cargo-denyto exclude GPL / AGPL / LGPL / MPL / SSPL from the shipped wheel. License cleanliness is a tested, CI-enforced property — not just a statement of intent.
Clean-room
pdfspine is an independent, clean-room reimplementation. No code, tests, or
fixtures are derived from MuPDF, PyMuPDF, or any AGPL source. The API surface is
designed for compatibility with PyMuPDF (so existing import fitz code runs),
but the implementation underneath is original.
Dependency licenses
The shipped wheel is pure Rust with no C blob and no bundled prebuilt engine. Third-party Rust dependencies are distributed under their own permissive licenses — MIT, Apache-2.0, BSD, Zlib, ISC, Unicode, and similar — all of which are compatible with Apache-2.0. Their full license texts ship with each release, generated by the build's license tooling.
Bundled data attributions
A small amount of third-party data is bundled and carries its own attribution:
-
Adobe Glyph List (AGL) and Adobe ITC ZapfDingbats glyph list — Copyright 2002–2019 Adobe, licensed under BSD-3-Clause. The full license text is retained verbatim in each bundled data file. (Source: adobe-type-tools/agl-aglfn.)
-
Liberation fonts (Liberation Sans / Serif / Mono, 12 faces) — Copyright (c) 2010 Google Corporation and (c) 2012 Red Hat, Inc., licensed under the SIL Open Font License, Version 1.1 (
OFL-1.1). The renderer uses these metric-compatible faces as substitute glyph outlines for non-embedded standard-14 text fonts (Helvetica / Times / Courier, and the Arial / Times New Roman / Courier New aliases). The fonts are shipped unmodified. (Source: liberationfonts/liberation-fonts.) -
Noto symbol fonts (Noto Sans Math, Noto Sans Symbols, Noto Sans Symbols 2) — Copyright 2022 The Noto Project Authors / Google LLC, licensed under the SIL Open Font License, Version 1.1 (
OFL-1.1). The renderer uses these faces as substitute glyph outlines for the non-embedded pictographic standard-14 fonts Symbol (Noto Sans Math + Symbols 2) and ZapfDingbats (Noto Sans Symbols 2 + Symbols); the glyph shapes are Noto's, not Adobe URW's (whose Symbol/Dingbats faces are AGPL and intentionally not used). The fonts are shipped unmodified. (Source: notofonts.)
The authoritative, per-file provenance and full license headers live in the
repository under crates/pdf-fonts/data/, crates/pdf-fonts/fonts/liberation/,
and crates/pdf-fonts/fonts/symbols/ (see each directory's NOTICE and
PROVENANCE.md).
Relationship to PyMuPDF
PyMuPDF and MuPDF are projects of Artifex, licensed under AGPL-3.0 or a commercial license. pdfspine is not affiliated with or endorsed by Artifex. PyMuPDF is referenced here only to describe API compatibility.
Migrating from PyMuPDF
An honest account of pdfspine's PyMuPDF compatibility — the opt-in fitz shim, coverage at a glance, how gaps behave, the feature mapping, and what differs or is out of scope.
API reference
Overview of the complete public pdfspine API, with a map of how the reference pages are organised.