Objectif
Comparer 3 extracteurs de PDF écrits en java : pdfbox 1.2.0, pdfrenderer et bfopdf.
Introduction
Toujours pour récupérer des données issues de pdf, il faut extraire des images ou plus généralement des pages à partir des pages de pdf. Pour ce faire, j’ai testé 3 solutions gratuites permettant de le faire : pdfbox 1.1.0 puis 1.2.1 puis finalement 1.2.0, pdfrenderer et un produit contraint gratuitement : bfopdf.
40 pdf téléchargés et 8 pdf générés avec PDFCreator ont été utilisés pour les tests : 40 pdf issus des sites revell et monogram représentant des notices d’instructions de maquettes plastiques, plus 7 fichiers générés par PDFCreator à partir d’un même fichier, un arc-en-ciel initialement en png, converti en jpg, gif, bmp 1 bit ( 2 couleurs), bmp 4 bits ( 16 couleurs ), bmp 8 bits ( 256 couleurs ) et 24 bits ( « couleurs » ), et un utilisant toutes les images.
Protocole de tests
- Télécharger les jar depuis les sites respectifs
- Créer un projet eclipse avec 3 packages, pour chaque package,
- Créer une classe qui liste les pdf du répertoire en question et qui appelle une classe ( thread ) d’extraction des pages ( png, rgb ou argb, 72 dpi ) généralement trouvée dans les cookbooks, tutoriaux et exemples. Ceci est dû à la non-gestion des exceptions java dans certains cas.
- Analyser les résultats qualitativement et quantitativement selon le tableau ci-dessous
Critère | Pdfbox 1.2.0 | pdfrenderer | Bfopdf 2.1.11 | Observation |
Vitesse d’exécution | 19 | 11 | 10 | Minutes |
Pages générées | 491 | 433 | 503 | Certaines l’étant partiellement suite aux cas non gérés dans la norme pdf ( ps compressé ) ou des exceptions |
Précision des dessins | Bfopdf ne génère qu’en 72 dpi, pdfbox et pdfrenderer, paramétrables, ont été contraints à ce facteur limitant | |||
Png ok | Ok | Ok | Ok | |
Jpg ok | Ok | Ok | Ok | |
Gif ok | Ok | Ok | ||
Bmp 2 couleurs | Ok | Ok | ||
Bmp 16 couleurs | Ok | Ok | ||
Bmp 256 couleurs | Ok | Ok | ||
Bmp couleurs | Ok | Ok | Ok | |
Taille d’une page de référence sortie en png | 72 | 177 | 153 | Ko ( en rgb ou en argb ) Argb = rgb + luminosité Page 11 de la notice du t-80 ud référencé 03078.pdf chez revell 595 * 842 pixels |
Qualité des textes | moyenne | ok | ok | En 72 dpi. Ils sont mieux écrits en 98 dpi. |
Qualité des couleurs | Contrastés Grillage trop contrasté | Trop contrasté manque de détails Grillage monochrome noir | Manque de contraste Grillage acceptable | Pour les détails, voir comment ressort le grillage du moteur à l’arrière de la tourelle, le grillage ressort différemment |
Utilisabilité de l’image | ok | ok | Limitée … | Un gros « DEMO » rose s’affiche en surimpression avec la version gratuite. A traiter pour l’enlever. A voir pour le faire. |
Rendu des dessins incomplets | Pavés noirs, images en négatif, des pixels défectueux | Pages vierges, dessins absents | R.A.S ! | |
Sources fournis | oui | oui | Non | |
Verbosité des messages d’erreurs | très verbeux | Assez peu verbeux | Peu verbeux | Souvent les messages annoncent les fonctions PS non gérées ou les traces d’erreur java |
Quelques compléments
- La dernière version stable de pdfbox au moment de l’écriture de ce billet et buggée. Elle est sensée corrigée la version 1.2.0 pour du texte mais elle restitue nettement moins d’images, d'où l’utilisation de l’avant dernière version.
- 72 dpi est la définition sur Mac, les PC utilisent 98 dpi, et pdfbox est bien meilleur avec une plus grande définition.
- Bfopdf indique sur son site que le tiff en 200 dpi monochrome est excellent pour être faxé
- Pdfrenderer ne fournit pas de n° de version pour ses jars. Au mieux, nous avons accès au svn de l’application.
- Il faut utiliser une poignée de jar externes en plus de pdfbox lui-même pour utiliser les classes. Il y a peut être une incompatibilité de versions qui expliquerait les défaillances de pdfbox 1.2.1
- Pdfrenderer, qui ne fait que visualiser des pdf, peut être utilisée avec des applets avec l’api Graphics2D.
Pour approfondir les sujets
Site pdfbox : http://pdfbox.apache.org/
Site pdfrenderer : https://pdf-renderer.dev.java.net/
Site bfopdf : http://bfo.co.uk/products/download.jsp
Pdf guide de référence : http://www.adobe.com/devnet/pdf/pdfs/PDFReference.pdf ( entre autre pour le codage des opérateurs )
pdfbox
pdfrenderer
bfopdf
pdfbox
pdfrenderer
bfopdf
Aucun commentaire:
Enregistrer un commentaire