Génération PDF accessibles : Outils libres (2/2)

Dans le cadre d’une veille stratégique pour un de nos clients publics, nous avons étudié le sujet des outils de générations PDF. Il s’agit de produire des documents PDF respectant les normes d’accessibilité. L’article suivant constitue la 2ème partie sur les bibliothèques de génération PDF libres. 

1. Critères de sélection

Nous avons retenu dans cette partie, les solutions disposant :

  • d’une licence libre ;

  • des fonctionnalités de création et d’édition de PDF : les outils de conversion PDF seront étudiés ultérieurement ;

  • d’une activité de développement récente.

Les solutions qui ont été retenues en plus d’iText sont :

  • PDFBox : boîte à outils Java de la fondation Apache pour manipuler des PDF

  • PDF Clown : bibliothèque Java et .Net polyvalente

Nous listons ci-dessous les bibliothèques qui n’ont pas été retenues et les motifs

  • IcePDF1 : modèle freemium, version open source avec uniquement de la lecture de PDF

  • jPod2 : version open source non maintenu, dernière version 12/2013

  • JPedal3 : modèle freemium, version open source avec uniquement de la lecture de PDF

  • PDFJet4 : modèle freemium

2. iText

2.1 Présentation

Licence : AGPL (depuis la version 5)

Site Officiel : http://itextpdf.com/

Dernière version : 5.5.9 (03/2016)

IText est une librairie Java qui permet de générer des fichiers PDF à la volée. Elle a été développée par Bruno Lowagie, un développeur belge de l’Université de Gand en 1998. Le but d’iText est de permettre aux développeurs Java de créer des documents PDF sans connaître les détails du format. La bibliothèque iText est publiée sous double licence libre (MPL/LGPL) en 2000, étape considérée comme importante dans l’ouverture du standard PDF.

En 2009, la société iText Software Corp est fondée et la version 5 du logiciel passe sous une licence AGPL. Les utilisateurs qui ne veulent pas divulguer le code source de leurs applications utilisant iText doivent acheter une licence commerciale pour échapper aux obligation de la licence.

La solution iText a également été portée sur .Net sous le nom de iTextSharp. Un certain nombre de logiciels ont intégré la bibliothèque iText notamment Eclipse BIRT et Jasper Reports.

Si aujourd’hui certains utilisateurs sont restés sur la dernière version 2.1.7 sous licence MPL/LGPL du logiciel, la société dissuade l’utilisation de ces versions. Au-delà des bugs et des lacunes fonctionnelles, les raisons avancées sont également légales :, certaines parties du code d’iText sous MPL/LGPL porteraient atteinte aux droits de propriété intellectuelle. Une entreprise qui n’utiliserait pas iText à partir de la version 5.1 pour ses projets commerciaux, s’exposerait à des poursuites judiciaires des tiers5.

À noter que les PDF générés avec iText contient des filigranes spécifiques qui permettent à la société iText Software Corp de s’assurer du respect de la licence AGPL6. La société iText n’hésite pas à contacter les entreprises fautives pour parvenir à un arrangement commercial.

Il n’est pas possible de supprimer le code d’Itext qui génère les filigranes. En effet, les conditions AGPL7 interdisent expressément que la mention iText soir retiré en particulier la licence AGPL, les droits réservées iText dans les métadonnées du fichier PDF généré.

2.2 Fonctionnalités

IText est particulièrement adapté pour générer des documents PDF dans un environnement Web dynamique. Il permet en particulier de :

  • Faire un travail d’édition : blocs de texte, colonnes, tableaux, images, annotations, etc ;

  • Manipuler le contenu d’un PDF : extraire, modifier, fusionner, ajouter des entêtes, etc ;

  • Faire du cryptage et de la signature électronique.

Les fonctionnalités avancées d’iText 5 non incluses dans la version 2.1.7 sont notamment :

  • Le marquage des PDF (Tagged PDF) ;

  • Le support des normes d’archivage PDF/A-1, PDF/A-2 et PDF/A-3 ;

  • Le support de l’accessibilité PDF/UA ;

  • La conversion HTML, XML et CSS au PDF (XML Worker) ;

  • Le support des formulaires avec XFA Forms (XFA Worker) ;

  • La signature électronique PadES et XFA.

La bibliothèque iText permet donc à la fois de créer et de convertir des documents PDF qui respectent les spécifications avancées du standard PDF.

3 PDFBox

3.1 Présentation

Licence : Apache 2.0

Site Officiel : https://pdfbox.apache.org/

Dernière version : 2.0.0 (01/2016)

PDFBox est une librairie open source qui permet essentiellement de manipuler des PDF. Elle a été développée en 2002 par Ben Litchfield pour l’extraction de texte pour le moteur de recherche Lucene. Le projet rejoint la fondation Apache en 2009. Il est aujourd’hui maintenu par une vingtaine de collaborateurs.

Il est composé de 4 modules

  • PDFBox qui est le cœur de la librairie ;

  • FontBox pour gérer l’information sur les polices ;

  • XMPBox pour gérer les métadonnées XMP ;

  • Preflight pour vérifier la conformité de PDF à la norme PDF/A-1b.

3.2 Fonctionnalités

La librairie PDFBox est surtout adaptée pour lire ou modifier un PDF existant – extraction de texte, division, fusion de PDF ou remplissage de formulaires. L’interface API fournit un accès de bas niveau au fichier PDF. La création de documents est très rudimentaire et ne permet pas de créer nativement des objets sophistiqués comme des tableaux.

Le module TaggedPDF8 fournit un mécanisme pour incorporer des marquages dans un document, indispensable pour avoir un PDF accessible. Cependant il nécessite un effort de développement complémentaire important pour implémenter l’ensemble du standard PDF/UA dans PDFBox.

4 PDFClown

4.1 Présentation

Licence : LGPL

Site Officiel : http://pdfclown.org/

Dernière version : 0.1.2 (09/2013)

PDFClown est une librairie open source pour manipuler des PDF à travers plusieurs couches d’abstraction et répondant rigoureusement à la norme PDF 1.7. Cette librairie PDF se veut polyvalente en prenant en charge l’ensemble du cycle de vie du PDF (création, édition, affichage, lecture) au sein d’un seul outil. PDFClown est développé par l’italien Stefano Chizzolini.

4.2 Fonctionnalités

Le statut du développement et de support de l’ensemble du standard PDF 1.7 est détaillé sur le site officiel9. Les fonctionnalités autour de la syntaxe, le graphique, le texte et les polices sont relativement complètes.

La roadmap de PDFClown prévoit de développer en priorité le support de l’accessibilité et le marquage des PDF. Nous pouvons cependant émettre des doutes sur la réalisation à court terme de ce travail. En effet la version 0.2.0 prévue pour juillet 2015 n’a jamais été publiée et l’auteur ne s’est pas manifesté depuis.

5. Synthèse

5.1 Comparaison fonctionnelle

Le tableau ci-joint récapitule les fonctionnalités supportées par les bibliothèques de génération PDF étudiées :

iText 2.1.7

iText 5.x

PdfBox

PDFClown

Licence

MPL/LGPL

AGPL

Apache v2

LGPL

Type de détenteur

Entreprise

Entreprise

Fondation

Communauté

Date de la dernière version

07/2009

01/2016

03/2016

09/2013

Modification et édition

Oui

Oui

Oui

Oui

Division, fusion, extraction

Oui

Oui

Oui

Oui

Création et mise en page

Oui

Oui

Limité

Oui

Formulaires

Oui

Oui

Limité

Limité

Signature et cryptage

Oui

Oui

Limité

Non

Intégration native JasperReports

Oui

Limité*

Non

Non

Importation XML/HTML

Non

Oui

Non

Non

Marquage PDF (Tagged PDF)

Non

Oui

À implémenter

Planifié

PDF/A

Non

Oui

À implémenter

Planifié

PDF/UA

Non

Oui

Non

Planifié

* Officiellement uniquement avec JasperReports de la version 6.0.0 à la version 6.0.3

5.2 Recommandations

Il n’existe aujourd’hui aucune bibliothèque de PDF qui permet de créer des PDF compatibles avec le standard PDF/UA mis à part iText 5 qui est sous licence AGPL.

Nous allons aborder dans la partie suivante d’autres méthodes de génération PDF indirecte notamment :

  • la conversion XML avec XSL-FO ;

  • la conversion HTML avec CSS ;

  • l’export de documents avec LibreOffice ;

  • le remplissage de modèles de formulaire PDF.

Références