Licences

pdfgym est assemblé à partir de bibliothèques open source et envoie leur code à ton navigateur pour faire le travail. La plupart sont sous licence permissive. Deux sont copyleft, et chacune vit sur exactement une route. Ci-dessous, chaque bibliothèque est regroupée par tâche, avec sa licence et où la lire.

Lire et écrire

Les deux moitiés de chaque opération. Le lecteur est aussi le vérificateur : il rouvre chaque résultat et rapporte ce qui a vraiment atteint la page.

BibliothèqueRôle iciLicenceSource
pdf.js Rôle iciLit et rend les PDF, et vérifie chaque résultat. LicenceApache-2.0 SourceTexte intégral
@cantoo/pdf-lib Rôle iciÉcrit les PDF. LicenceMIT SourceTexte intégral

Images et polices

Tout ce qui compose une page PDF à part le texte : l'encodeur JPEG, les décodeurs cachés dans pdf.js, le support TIFF, et le coupeur de polices qui garde les polices embarquées petites.

BibliothèqueRôle iciLicenceSource
@jsquash/jpeg Rôle iciFait tourner l'encodeur JPEG dans le navigateur. LicenceApache-2.0 SourceTexte intégral
mozjpeg, libjpeg-turbo Rôle iciL'encodeur JPEG lui-même. LicenceTrois licences de style BSD, IJG incluse SourceTexte intégral
harfbuzzjs Rôle iciRéduit les polices embarquées aux glyphes qu'un document dessine. LicenceMIT SourceTexte intégral
UTIF.js Rôle iciDécode les fichiers TIFF standard et multipages. LicenceMIT SourceTexte intégral
pako Rôle iciDécompresse les données d'image TIFF compressées pour UTIF.js. LicenceMIT et Zlib SourceTexte intégral
OpenJPEG Rôle iciDécode les images JPEG 2000 dans pdf.js. LicenceBSD-2-Clause SourceTexte intégral
JBIG2, from PDFium Rôle iciDécode les images JBIG2 dans pdf.js. LicenceBSD, The PDFium Authors SourceTexte intégral
qcms Rôle iciApplique les profils de couleur ICC dans pdf.js. LicenceMIT, Mozilla SourceTexte intégral

Suggérer du texte privé

Les outils de confidentialité suggèrent ce qui pourrait être une information personnelle. Le modèle et son exécuteur sont tous deux livrés au navigateur ; les suggestions ne le quittent jamais.

BibliothèqueRôle iciLicenceSource
Google BERT Mini Rôle iciModèle de base à quatre couches pour les suggestions d'informations privées. LicenceApache-2.0 SourceRelevé de source
ONNX Runtime Web 1.29.0 Rôle iciFait tourner ce détecteur dans un worker de navigateur. LicenceMIT SourceTexte intégral

Deux invités avec un règlement

Deux moteurs PDF bien connus, MuPDF et Ghostscript, sont sous AGPL v3. Faire tourner l'un d'eux derrière un service web oblige l'opérateur à publier tout le service sous les mêmes conditions.

pdfgym n'utilise ni l'un ni l'autre.

Les deux composants copyleft qu'il embarque restent chacun sur une seule route.

Le décodeur HEIC n'est récupéré qu'une fois qu'une photo HEIC ou HEIF est choisie sur HEIC en PDF. Le moteur de plaques du Contrôle prépresse n'est appelé que depuis Contrôle prépresse et tourne dans son propre worker.

Aucun autre outil n'importe ni ne lie l'un ou l'autre.

BibliothèqueRôle iciLicenceSource
@discourse/heic Rôle iciCharge le décodeur HEIC uniquement sur la route HEIC en PDF. LicenceApache-2.0 SourceTexte intégral
libheif 1.19.7 Rôle iciLit le conteneur HEIC dans le décodeur limité à sa route. LicenceLGPL-3.0-or-later SourceSource exacte
libde265 1.0.15 Rôle iciDécode l'image HEVC dans le décodeur limité à sa route. LicenceLGPL-3.0-or-later SourceSource exacte
Poppler 26.02.0 Rôle iciRend les plaques de séparation pour le Contrôle prépresse, dans son propre worker. LicenceGPL-2.0-or-later SourceTexte intégral
OpenJPEG 2.5.3 Rôle iciDécode les images JPEG 2000 dans ce même worker. LicenceBSD-2-Clause SourceTexte intégral

Les deux utilisent le code amont publié sans changements.

La compilation du Contrôle prépresse peut être refaite depuis des sources publiées : le relevé de source nomme les archives exactes de Poppler et OpenJPEG avec leurs sommes SHA-256, l'image Emscripten par digest, ainsi que l'adaptateur et le script de compilation qui ont produit le WebAssembly.

Questions fréquentes

Puis-je réutiliser ce code dans mon propre projet ?
Chaque bibliothèque garde sa propre licence, listée ci-dessus avec son texte intégral. Les licences permissives (MIT, BSD, Apache-2.0) permettent la réutilisation avec attribution ; le décodeur LGPL et le moteur de plaques GPL portent les devoirs copyleft décrits dans leurs textes.
Pourquoi les parties copyleft sont-elles cantonnées à une seule route ?
Pour que leurs devoirs restent petits et vérifiables. Le décodeur HEIC ne se charge que là où des photos HEIC sont lues, et le worker Poppler ne répond qu'au Contrôle prépresse. Rien d'autre n'importe ni ne lie l'un ou l'autre.
Les bibliothèques ont-elles été modifiées ?
Non. Tout est livré tel que publié en amont : les numéros de version et les relevés de source ci-dessus sont donc exacts. Les corrections de la communauté arrivent avec la mise à jour suivante au lieu de vivre dans un fork privé.
Où est le code propre du site ?
Les outils qui relient ces bibliothèques — l'espace de travail, les vérifications, les pages — sont le travail propre du projet. Les bibliothèques font le gros du travail selon les conditions ci-dessus ; la vérification qui refuse un mauvais téléchargement est la nôtre.

Où aller ensuite