Licences

pdfviz is assembled from open-source libraries and sends their code to your browser to do the work. Most are permissively licensed. Two are copyleft, and each of those lives on exactly one route. Below, every library is grouped by the job it does, with its licence and where to read it.

Read and write

The two halves of every operation. The reader is also the checker: it opens each result again and reports what actually reached the page.

LibraryRole hereLicenceSource
pdf.js Role hereReads and renders PDFs, and checks every result. LicenceApache-2.0 SourceFull text
@cantoo/pdf-lib Role hereWrites PDFs. LicenceMIT SourceFull text

Pictures and fonts

Everything a PDF page is made of besides text: the JPEG encoder, the decoders hiding inside pdf.js, TIFF support, and the font cutter that keeps embedded fonts small.

LibraryRole hereLicenceSource
@jsquash/jpeg Role hereRuns the JPEG encoder in the browser. LicenceApache-2.0 SourceFull text
mozjpeg, libjpeg-turbo Role hereThe JPEG encoder itself. LicenceThree BSD-style licences, IJG included SourceFull text
harfbuzzjs Role hereCuts embedded fonts down to the glyphs a document draws. LicenceMIT SourceFull text
UTIF.js Role hereDecodes standard and multi-page TIFF files. LicenceMIT SourceFull text
pako Role hereInflates compressed TIFF image data for UTIF.js. LicenceMIT and Zlib SourceFull text
OpenJPEG Role hereDecodes JPEG 2000 images inside pdf.js. LicenceBSD-2-Clause SourceFull text
JBIG2, from PDFium Role hereDecodes JBIG2 images inside pdf.js. LicenceBSD, The PDFium Authors SourceFull text
qcms Role hereApplies ICC colour profiles inside pdf.js. LicenceMIT, Mozilla SourceFull text

Suggesting private text

The privacy tools suggest what might be personal information. The model and its runner both ship to the browser; the suggestions never leave it.

LibraryRole hereLicenceSource
Google BERT Mini Role hereFour-layer base model for private-information suggestions. LicenceApache-2.0 SourceSource record
ONNX Runtime Web 1.29.0 Role hereRuns that detector in a browser worker. LicenceMIT SourceFull text

Two guests with house rules

Two well-known PDF engines, MuPDF and Ghostscript, are AGPL v3. Running either one behind a web service obliges the operator to publish the whole service under the same terms.

pdfviz uses neither.

The two copyleft components it does ship stay inside one route each.

The HEIC decoder is fetched only after a HEIC or HEIF photo is chosen on HEIC to PDF. The Print preflight plate renderer is addressed only from Print preflight and runs in a worker of its own.

No other tool imports or links either one.

LibraryRole hereLicenceSource
@discourse/heic Role hereLoads the HEIC decoder only on the HEIC to PDF route. LicenceApache-2.0 SourceFull text
libheif 1.19.7 Role hereReads the HEIC container inside the route-scoped decoder. LicenceLGPL-3.0-or-later SourceExact source
libde265 1.0.15 Role hereDecodes the HEVC image inside the route-scoped decoder. LicenceLGPL-3.0-or-later SourceExact source
Poppler 26.02.0 Role hereRenders separation plates for Print preflight, in its own worker. LicenceGPL-2.0-or-later SourceFull text
OpenJPEG 2.5.3 Role hereDecodes JPEG 2000 images inside that same worker. LicenceBSD-2-Clause SourceFull text

Both use the released upstream code with no changes.

The Print preflight build can be repeated from published sources: the source record names the exact Poppler and OpenJPEG archives with their SHA-256 sums, the Emscripten image by digest, and the adapter and build script that produced the WebAssembly.

Asked often

Can I reuse this code in my own project?
Each library keeps its own licence, listed above with its full text. Permissive licences (MIT, BSD, Apache-2.0) allow reuse with attribution; the LGPL decoder and the GPL plate renderer carry the copyleft duties described in their texts.
Why are the copyleft parts fenced onto single routes?
So their duties stay small and checkable. The HEIC decoder loads only where HEIC photos are read, and the Poppler worker answers only to Print preflight. Nothing else imports or links either one.
Were the libraries modified?
No. Everything ships as released upstream, which is why the version numbers and source records above are exact. Community fixes arrive with the next update instead of living in a private fork.
Where is the site's own code?
The tools that wire these libraries together - the workspace, the checks, the pages - are the project's own work. The libraries do the heavy lifting under the terms above; the verification that refuses a bad download is ours.

Where to go next