02 — Étude du marché : chaque famille d'outils qui travaille du PDF, et ce qu'on en retient
Colonnes : Retenu = = égaler la capacité · > la dépasser (avec le critère
mesurable) · 🔬 adopter comme oracle · 🚫 hors périmètre avec la raison. Les
licences sont celles connues en 2026-09 et doivent être relues avant toute décision de
compatibilité ou d'adaptateur.
2.1 Moteurs de lecture et de rendu
| Outil | Licence | Force | Retenu |
|---|---|---|---|
pdfium (Google ; Chrome, PdfRenderer Android, ancien Edge) |
BSD-3 | le déploiement le plus large ; API C stable FPDF_* ; option de build XFA |
> rendu ; adaptateur FPDF_* en remplacement direct (F-015) ; 🔬 via pypdfium2 (déjà) |
| MuPDF / mutool / mupdf.js (Artifex) | AGPL-3 / commercial | rapide, petit, WASM officiel | > ; 🔬 déjà ; sa double licence est la brèche du marché (07-brainstorm.md §10) |
| poppler / xpdf (Evince, Okular, import LibreOffice, cups-filters) | GPL-2/3 | omniprésent sous Linux ; poppler-utils ; API poppler-glib/Qt | > ; 🔬 déjà ; CLI compatibles pdftotext/pdftoppm/pdfinfo/pdfimages/pdfsig et une API façon poppler-glib pour les visualiseurs GNOME/KDE (F-015) |
| pdf.js (Mozilla ; Firefox, d'innombrables applis web) | Apache-2.0 | le visualiseur web de référence | > ; 🔬 déjà ; la cible WASM le remplace dans nos propres produits (F-050) |
| Ghostscript (Artifex) | AGPL-3 / commercial | RIP PostScript+PDF, ps2pdf, pilotes d'impression, gestion de la couleur |
🔬 déjà (-dUsePDFX3Profile, tiffsep, pnggray) ; remplacement du filtre CUPS (F-053) ; interpréteur PostScript = futur lointain |
| Moteur PDF de Skia, Cairo PDF | BSD-3 / LGPL-2.1+MPL | sortie vectorielle des navigateurs et de GTK | = API de dessin façon canvas (F-030) |
Apple PDFKit/Quartz, Windows.Data.Pdf, PdfRenderer Android (pdfium) |
propriétaire / BSD | visualiseurs et API des OS | = fidélité ; 🔬 optionnel (Preview.app sur le Mac) |
| SDK commerciaux : Foxit SDK, Apryse (PDFTron), Nutrient (PSPDFKit), Adobe PDF Library (Datalogics), PDF-XChange Core, Aspose.PDF, Syncfusion, LEADTOOLS, GdPicture, 3-Heights (PDF Tools AG), Qoppa jPDF, BFO, PDFlib, Solid Framework, Debenu/Foxit Quick PDF | commercial | gamme fonctionnelle complète, SDK multilangages, visualiseurs embarquables, serveurs | = l'enveloppe fonctionnelle complète plus les liaisons — c'est le marché que vise la licence propriétaire |
| PDFBox (Apache), OpenPDF (LGPL/MPL), iText (AGPL/commercial), PdfPig (Apache), PDFsharp/MigraDoc (MIT), PdfClown (LGPL) | diverses | les chevaux de bataille JVM/.NET | = forme de l'API haut niveau ; 🔬 corpus PDFBox (déjà), ressources de test iText (à ajouter) ; liaisons JVM/.NET (F-014) |
| pdfcpu (Apache), lopdf/pdf-rs/printpdf (MIT) | Apache / MIT | Go et Rust | = surface CLI de pdfcpu ; 🔬 corpus déjà |
| pypdf (BSD), pikepdf (MPL, qpdf), PyMuPDF (AGPL), pdfminer.six (MIT), pdfplumber (MIT), borb (AGPL/commercial) | diverses | Python — là où s'écrit la majorité de l'automatisation PDF | liaison Python avec une API familière (F-013) |
| pdf-lib, pdfkit, jsPDF (MIT), muhammara (Apache), react-pdf, pdfme | MIT / Apache | création JavaScript côté client | napi-rs + WASM (F-011/F-012) |
2.2 Génération et mise en page
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| ReportLab (+PLUS), fpdf2, TCPDF, mPDF, dompdf, FPDF | BSD / LGPL / GPL | générateurs programmatiques par langage | = constructeur de document (F-030) : texte façonné, tableaux, images, vecteur, sortie balisée par défaut |
| WeasyPrint (BSD), Prince (commercial), PagedJS (MIT), Vivliostyle (AGPL), PDFreactor, DocRaptor, wkhtmltopdf (LGPL, non maintenu), Puppeteer/Playwright PDF, Gotenberg | diverses | HTML+CSS → PDF (factures, rapports) | 🧭 un moteur CSS complet est un produit séparé ; = sous-ensemble CSS paginé sur apdf-layout (06-decisions.md D-9) |
| Typst (Apache), LaTeX (pdfTeX/LuaTeX/XeTeX ; LPPL/GPL), Apache FOP, Antenna House (commercial), groff, Pandoc, Quarto, Asciidoctor PDF | diverses | composition typographique | 🔬 pdfTeX/LuaTeX comme oracle de qualité d'écriture (sous-ensemble de police, balisage, métriques) ; = césure (ADR en attente), UAX #14 |
| InDesign, QuarkXPress, Affinity Publisher, Scribus (GPL), LibreOffice (MPL), Word, Google Docs, Canva | producteurs de PDF réels | leurs sorties peuplent les corpus | 🔬 particularités par producteur cataloguées (chaîne Producer → table des écarts connus) |
| Moteurs de rapport : JasperReports, BIRT, Crystal Reports, SSRS, Oracle BI Publisher | diverses | reporting d'entreprise → export PDF | = notre écrivain comme moteur PDF sous-jacent (liaisons JVM/.NET) |
2.3 Manipulation en ligne de commande et utilitaires
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| qpdf | Apache-2.0 | référence structurelle : QDF, --json, linéarisation, chiffrement, opérations de page |
🔬 déjà ; = mode QDF, sortie --json compatible (F-023) |
| cpdf (Coherent Graphics) | AGPL / commercial | la CLI la plus complète du marché (200+ opérations) | = cible de parité CLI pour apdf (F-015) |
| pdftk / pdftk-java | GPL | fusion, formulaires FDF, Bates, tampons | 🔬 déjà (FDF) ; = tous ses verbes (Phase 0 AE/AI) |
| poppler-utils, mutool, pdfcpu, img2pdf, pdfjam, PDFsam (AGPL basique), PDF Arranger (GPL), Stirling-PDF (MIT), PDF24, Sejda | diverses | opérations personnelles : fusionner, scinder, compresser, convertir, tourner, rogner | = toutes dans apdf et dans le visualiseur (F-050) |
| iLovePDF, Smallpdf, Adobe en ligne, CloudConvert, pdfcrowd | SaaS | funnel grand public | = vitrine pdf.asklera.fr (F-052) |
| exiftool, pdfinfo, pdfsig, pdfdetach, pdfresurrect | Perl Artistic / GPL | métadonnées, signatures, pièces jointes, historique des révisions | 🔬 ; = apdf info/meta, machine à remonter les révisions (F-020) |
2.4 Validation, préflight, conformité
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| veraPDF | double GPL/MPL | validateur PDF/A et PDF/UA de l'industrie ; corpus ; profils | 🔬 déjà ; > au niveau glyphe, TS 32005 ; cible 0 désaccord (Phase 0 AF) |
| JHOVE (PDF-hul), DROID/PRONOM, Siegfried, Apache Tika | LGPL / BSD / Apache | archives et bibliothèques : bonne formation, identification de format, métadonnées | 🔬 à ajouter (F-042) |
| callas pdfToolbox / pdfaPilot, Enfocus PitStop, Adobe Acrobat Preflight, 3-Heights Validator, Datalogics PDF Checker | commercial | préflight PDF/X, corrections, profils | = linter avec corrections suggérées (F-021), préflight (F-041) ; 🔬 versions d'essai comme calibrage (décision fondateur 2026-09-13) |
| PAC 2024, axesPDF/axesCheck, CommonLook, Equidox, Grackle, Foxit Compliance | freeware / commercial | accessibilité | > (PDF/UA fait) ; = remédiation guidée (F-043) |
| Arlington PDF Model + TestGrammar | Apache-2.0 | modèle machine d'ISO 32000-2 | 🔬 déjà ; = contribuer les écarts que nous avons trouvés (07 §5) |
| OSS-Fuzz (pdfium, poppler, mupdf, qpdf, ghostscript y sont inscrits) | — | fuzzing public continu | = notre propre fuzzing continu (Phase 0 AH, F-065) |
| Validateurs eCTD (Lorenz eValidator, GlobalSubmit, Extedo), guides de conformité technique FDA/EMA | commercial / public | contrôles du profil PDF pharmaceutique | = profil PDF eCTD dans le linter (03b §L) |
2.5 Signature et confiance
| Outil / norme | Licence | Force | Retenu |
|---|---|---|---|
| pyHanko | MIT | PAdES B-B/T/LT/LTA, validation, LTV, TS 32004, PKCS#11 | 🔬 déjà |
| DSS — Digital Signature Service (Commission européenne) | LGPL-2.1 | la référence de validation eIDAS : LOTL/TSL, niveaux AdES, procédures ETSI TS 119 102 | 🔬 à ajouter (F-034) |
| OpenSSL cms/ts, Bouncy Castle, EJBCA/SignServer | Apache / MIT / LGPL | CMS, TSA, PKI | 🔬 openssl déjà ; Bouncy Castle à ajouter pour la PQC (F-033) |
| OpenSC (opensc-project) | LGPL-2.1 | pilotes PKCS#11 + PC/SC pour 100+ cartes (PIV, CAC, eID belge, EstEID, DNIe, CNS, carte OpenPGP, YubiKey PIV, Feitian, SafeNet…) | 🔬 l'oracle de la couche carte à puce générique (F-036) ; pkcs11-tool, opensc-tool, pkcs15-tool |
| Intergiciels éditeurs : Cryptolib CPS (FR), Konnektor/HBA gematik (DE), BEID (BE), Web eID/DigiDoc (EE), AusweisApp/eCard-API (DE), CryptoPro CSP (RU), pilotes CFCA/GM (CN), emSigner/ePass (IN), ITI Assinador (BR) | diverses | écosystèmes de cartes nationales | = PC/SC + PKCS#11 génériques d'abord, puis des profils par carte (ISO 7816-15, IAS-ECC, PIV, CAC, EstEID…) en modules ; libcps-rs est un module parmi d'autres |
| CSC API v2.2 (2025-11-06), ARF EUDI Wallet, OAuth 2.0 | ouvert | signature qualifiée à distance | = client CSC (F-034) |
| Plateformes : Adobe Sign, DocuSign, Yousign, Universign, Docaposte, Certeurope, Ascertia SigningHub/ADSS, GlobalSign DSS, Entrust, Swisscom AIS, D-Trust sign-me, Namirial, InfoCert GoSign, Aruba, Intesi, Cryptomathic, Utimaco, LibreSign, Xodo Sign | SaaS / commercial | flux de signature | = composant de signature embarquable avec une abstraction de signataire externe (hachage → signature) pour que tout HSM/KMS/signataire cloud s'y branche (AWS KMS, Azure Key Vault/Managed HSM, GCP KMS, Thales Luna, nShield, Utimaco, CloudHSM) |
2.6 Chiffrement, sécurité, forensique, assainissement
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| Chiffrement qpdf / pdftk / Acrobat | — | R2–R6, clé publique | ✅ fait et au-delà (RC2-40, AES-GCM, dégradation nommée) |
Microsoft Information Protection (/Filter /MicrosoftIRMServices, .ppdf), Adobe LiveCycle Rights Management (/Adobe.APS), FileOpen (/FOPN_foweb), Adobe ADEPT (/EBX_HANDLER), Locklizard, Vitrium |
propriétaire | gestionnaires DRM d'entreprise/de livre numérique | = lecture/écriture des étiquettes MIP (XMP MSIP_Label_*) et détection des PDF chiffrés par MIP ; déchiffrement seulement avec le SDK/les clés de l'éditeur — 🚫 aucun contournement de DRM |
| peepdf, pdfid/pdf-parser (Didier Stevens), origami (Ruby), PDFStreamDumper, pdfresurrect, pdfxray | GPL / MIT | analyse de PDF malveillants : JS, actions, objets cachés, révisions | = mode forensique de l'inspecteur (F-025) |
| Éditeurs de CDR : OPSWAT Deep CDR, Votiro, Glasswall, Sasa, Forcepoint Zero Trust CDR | commercial | Content Disarm & Reconstruction pour passerelles inter-domaines | > CDR par construction : reconstruire un PDF depuis un modèle d'objets validé (F-025 apdf scrub --rebuild) ; guides : NSA « Inspection and Sanitization Guidance for PDF », NCSC « Safely importing data » |
| Bacs à sable/YARA/VirusTotal, Cuckoo/CAPE | — | détection | = export d'indicateurs compatibles YARA |
| Recherche : PDFex (Müller et al., CCS 2019), Shadow Attacks (NDSS 2021), « Processing Dangerous Paths » (NDSS 2021), habillage de signature/USF/ISA (S&P 2019), pdf-insecurity.org ; FORCEDENTRY (CVE-2021-30860, JBIG2 zero-click) | articles / CVE | classes d'attaques sur le chiffrement, les signatures, les décodeurs | = rapport de durcissement rejouant chaque classe (F-025, 07 §4) ; décodeurs JBIG2/JPX fuzzés en premier (Phase 0 AH) |
| Acrobat « Supprimer les informations masquées », Acrobat Redact, Adobe Sanitize | — | nettoyage RGPD, caviardage réel | = apdf scrub, apdf redact avec rapport de destruction (F-045) |
2.7 Éditeurs interactifs et visualiseurs
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| Acrobat Pro/Reader, Foxit Editor/Reader, PDF-XChange, Nitro, Kofax Power PDF, Master PDF Editor, PDF Studio, PDF Expert | commercial | édition de texte en place, formulaires, révision, OCR, comparaison, Bates | = surface d'édition complète (Phase 0 AE + F-050) |
| Okular, Evince, SumatraPDF, Zathura, Skim, Preview, Edge/Chrome/Firefox, Xodo, Kami, Drawboard, GoodNotes/Notability | libre/commercial | lecture, annotation, stylet | = visualiseur natif (egui) et WASM (F-050) |
| Bluebeam Revu (Nemetschek) | commercial | leader du balisage BTP/AEC : mesure, calques, sessions Studio | = dictionnaires de mesure (/Measure, /Viewport, /PtData), calques OCG avec /Intent /Design, jeux de balisage AEC (03b §P) |
| LibreOffice Draw, Inkscape, Illustrator, Affinity | — | édition vectorielle des pages PDF | = import/export SVG, édition au niveau objet (F-030) |
| Litera Compare, Draftable, Workshare, Adobe Compare | commercial | comparaison juridique (redlining) | = diff structurel + textuel + visuel (F-024) |
2.8 OCR, numérisation, compression de scans
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| Tesseract, OCRmyPDF (MPL), EasyOCR, PaddleOCR, docTR, NAPS2 | Apache / MPL | OCR libre, couche de texte invisible | 🧭 lier ou construire (D-6, F-054) ; l'OCR est un moteur externe |
| ABBYY FineReader Engine, Kofax OmniPage, Google Document AI, AWS Textract, Azure Document Intelligence | commercial / cloud | OCR haut de gamme | 🚫 cloud ; = interface d'OCR enfichable |
| LuraTech/Foxit PDF Compressor, ABBYY, CVISION, Kofax | commercial | MRC (Mixed Raster Content : masque JBIG2 + fond/premier plan JPX) | > compression MRC — nous possédons les encodeurs JBIG2 et JPX (F-046) |
| PDF/raster TWAIN, VueScan, ScanSnap, scanners certifiés JIIMA (JP) | — | scan → PDF | = lecture/écriture PDF/raster (ligne pdfraster absente du registre) |
2.9 Extraction structurée et « IA documentaire »
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| pdfplumber, Camelot, Tabula, pdfminer, PyMuPDF4LLM | MIT / AGPL | tableaux, mots positionnés | = extraction de tableaux (F-044) |
| Docling (IBM, MIT), Marker (GPL/commercial), Nougat, Unstructured (Apache), LlamaParse, GROBID (Apache), CERMINE, Adobe PDF Extract API | diverses | PDF → Markdown/JSON pour le RAG ; mise en page par des modèles de ML | > extraction « structure d'abord » : notre ordre de lecture est prouvé (UA, bidi) là où ils devinent ; Markdown/JSON avec provenance (F-044) |
| Bancs d'essai : OmniDocBench, DocLayNet, PubLayNet, PubTabNet, FinTabNet | données | vérité terrain de mise en page | 🔬 à ajouter comme oracles d'extraction |
| Rossum, Klippa, Mindee, Veryfi, Sensible, Parseur | SaaS | factures/reçus | = les factures électroniques structurées (03b §H) rendent l'extraction inutile là où le XML existe |
2.10 Prépresse, production d'impression, gestion de sortie
| Outil | Licence | Force | Retenu |
|---|---|---|---|
| callas pdfToolbox, Enfocus PitStop/Switch, Adobe Preflight, Quite Imposing | commercial | préflight, corrections, imposition | = préflight, imposition, corrections (F-041) |
| Kodak Prinergy/Preps, Heidelberg Prinect, Esko (ArtPro+, Automation Engine), Agfa Apogee, Xerox FreeFlow, EFI Fiery, Harlequin RIP (Global Graphics), Adobe PDF Print Engine, Caldera, Onyx | commercial | flux de production, RIP | = séparations de qualité RIP bit-exactes face à tiffsep de gs, recouvrement, trames (F-041) |
CUPS / cups-filters (pdftopdf, pdftoraster, pdftops), OpenPrinting |
Apache / GPL | pipeline d'impression Linux/macOS (poppler/mupdf/gs aujourd'hui) | > filtres apdftoraster/apdftopdf (F-053) |
| AFP/MO:DCA, IPDS, PCL/PCL-XL, PostScript, XPS/OpenXPS (ECMA-388), Metacode : Compart DocBridge, Crawford, Solimar, Xerox, ISIS Papyrus | commercial | flux de sortie mainframe/entreprise | = convertisseurs AFP ↔ PDF et XPS → PDF (03b §R) — une grande niche d'entreprise mal servie |
| CCM : Quadient Inspire, OpenText Exstream, Smart Communications, PDFlib PPS, XMPie, HP SmartStream | commercial | données variables (PDF/VT) | > PDF/VT écrit ; = générateur VDP (données → DPart) (F-041) |
| Ghent Output Suite, Altona, ECI, FOGRA, IDEAlliance/PRINTING United, GWG, PDF/X-Ready, CIP4 JDF/XJDF | données / normes | test et échange d'impression | 🔬 Ghent déjà ; 🧭 licence Altona ; = lecture des tickets de travail JDF/XJDF |
2.11 Accessibilité
| Outil | Force | Retenu |
|---|---|---|
| PAC 2024, axesPDF, CommonLook, Equidox, Grackle, autotag/vérificateur Acrobat, Crawford, allyant, vérificateur Word | vérification, remédiation, balisage automatique | > vérification faite ; = balisage automatique depuis la mise en page détectée, remédiation guidée, simulation d'ordre de lecture, génération de rapport VPAT/ACR (F-043) |
2.12 Archivage et préservation
| Outil | Force | Retenu |
|---|---|---|
| JHOVE, veraPDF, DROID, Siegfried, Archivematica, Preservica, Rosetta, VITAM (archives nationales françaises, open source), outils E-ARK | identification, validation, empaquetage SIP/AIP | 🔬 JHOVE/DROID/VITAM ; = conversion PDF/A à l'échelle (F-042), points d'empaquetage SIP (SEDA, E-ARK CSIP, BagIt) |
| Foxit/LuraTech, callas pdfaPilot, 3-Heights Document Converter, Solid, Adlib | commercial | conversion de masse |
2.13 Formulaires et flux documentaire
| Outil | Force | Retenu |
|---|---|---|
| Adobe AEM Forms / LiveCycle (XFA), SAP Interactive Forms by Adobe (XFA dans SAP ADS), Acrobat Prepare Form, Foxit, PDF-XChange | conception de formulaires, XFA en entreprise | = concepteur de formulaires (AcroForm + XFA statique), rendu XFA pour les sorties SAP/AEM (F-035) |
| pdftk fill_form, pdfcpu form, PyPDFForm, pdf-lib forms, fillpdf | remplissage | Phase 0 AE/AI, FDF/XFDF |
| Catalogues de formulaires publics : cerfa (FR), IRS (US), HMRC (UK), ATO (AU), CRA (CA), Elster (DE) | vrais AcroForm/XFA | = pré-remplissage et bac à sable JS (sous-ensemble) (F-035) |
2.14 Intégration IT d'entreprise
| Outil | Force | Retenu |
|---|---|---|
| ECM/GED : SharePoint, Box, Alfresco, OpenText, Documentum, M-Files, Hyland, Laserfiche, iManage, NetDocuments, Nuxeo | services de contenu | = connecteurs via apdf-server (F-051) ; IFilter Windows pour l'indexation de recherche, gestionnaires QuickLook/vignette (03b §T) |
| RPA/ETL : UiPath, Automation Anywhere, Power Automate, Zapier | activités PDF | = parité CLI/REST pour que ces activités nous appellent |
| SAP (ArchiveLink, ADS/XFA), Salesforce, ServiceNow, Workday, Oracle | génération/archivage PDF | = liaisons JVM/.NET + rendu XFA |
| Microsoft Purview/MIP, DLP Google Workspace, Symantec DLP | étiquetage, DLP | = lecture/écriture des étiquettes MIP (§2.6) |
2.15 Fuzzing, robustesse, corpus
| Ressource | Retenu |
|---|---|
| SafeDocs CC-MAIN-2021-31-PDF-UNTRUNCATED (≈8 M de PDF, 8 To, digitalcorpora.org), UNSAFE-DOCS (5 M dont « Voice of the Offense ») | = campagne à l'échelle (F-064) |
| GovDocs1, index pdf-corpora (PDF Association), Digital Corpora, corpus OPF, ressources de test iText/Tika | = corpus internes (jamais copiés dans le dépôt) |
| suites pdfium/pdf.js/mupdf/qpdf/PDFBox/pdfcpu | 🔬 en grande partie branchées ; iText et Tika à ajouter |
| OSS-Fuzz, ClusterFuzz, AFL++, libFuzzer, honggfuzz | = fuzzing continu (Phase 0 AH, F-065) |
2.16 Web et WASM
| Outil | Force | Retenu |
|---|---|---|
| pdf.js, mupdf.js, PDFium.js, Apryse WebViewer, Nutrient Web SDK, Foxit WebPDF, embedpdf, ViewerJS | visualiseurs de navigateur | = apdf-wasm : rendu, texte, formulaires, signature côté client (WebCrypto / CSC), diffusion HTTP par plages des fichiers linéarisés, Web Workers (F-012, F-050) |
| Gotenberg, Stirling-PDF, unoserver | serveurs | = apdf-server REST/Docker (F-051) |