Gérer l'affichage en colonnes des PDF avec iText
iText est une librairie Java permettant de générer des documents PDF : http://itextpdf.com/.
Nous allons voir comment gérer l’affichage par colonne avec la classe MultiColumnText : http://api.itextpdf.com/com/itextpdf/text/pdf/MultiColumnText.html.
Pour cela, nous afficherons un long texte (Lorem ipsum dolor sit amet…) sur 3 colonnes par page.
Préparation
La version de la librairie iText utilisée est 5.0.2. Vous pourrez la télécharger sur le site officiel : http://itextpdf.com/.
Le texte que nous utiliserons a été généré à partir du site http://www.lipsum.com/ (9 paragraphes).
Ce texte est enregistré dans le fichier C:/lipsum.txt.
Création de la classe Java
Pour réaliser notre test, nous créons une classe Java appelée Columns.
Cette classe contient 2 attributs :
pathname
: chemin vers le fichier contenant le texte à afficher (C:/lipsum.txt dans notre cas)filename
: chemin vers le fichier PDF à générer
Pour l’instant, notre classe ne contient que ses attributs et un constructeur.
Nous allons tout d’abord lui ajouter une fonction permettant de charger les paragraphes à partir d’un fichier.
Chargement du texte
Une méthode sera dédiée à la lecture du texte à afficher.
Elle retournera une liste de chaînes de caractères qui représenteront les paragraphes.
Nous passerons rapidement sur cette fonction qui n’est pas très compliquée (lecture du fichier, enregistrement des lignes dans une liste, retour de la liste).
Génération du PDF
Pour finir, nous créerons une méthode qui va générer le fichier PDF contenant le texte lu à partir du fichier.
La présentation se fera sous forme de 3 colonnes par page.
Nous ne attarderons pas sur la création du document PDF en lui-même.
Pour plus de détails, vous pouvez vous référer au site officiel : http://itextpdf.com/examples/index.php?page=chapters.
La partie qui nous intéresse pour l’affichage par colonne correspond à l’utilisation de la classe MultiColumnText.
Après l’instanciation (MultiColumnText mct = new MultiColumnText()
), nous définissons les propriétés de l’affichage en colonne (mct.addRegularColumns(document.left(), document.right(), 10f, 3)
).
Nous utilisons la méthode addRegularColumns qui permet une répartition régulière des colonnes.
- 1er paramètre : position à gauche
- 2ème paramètre : position à droite
- 3ème paramètre : espacement entre les colonnes
- 4ème paramètre : nombre de colonnes
Pour plus de détails sur cette méthode, vous pouvez vous référer à la documentation officielle : http://api.itextpdf.com/com/itextpdf/text/pdf/MultiColumnText.html#addRegularColumns(float, float, float, int).
Exécution du code
Notre classe est maintenant terminée, nous pouvons la tester.
Vous pourrez alors voir le résultat dans le fichier C:/columns.pdf. Le code complet de la classe, le contenu du fichier à afficher et le résultat sont ici : http://demo.benjaminprevot.fr/gerer-laffichage-en-colonnes-des-pdf-avec-itext/source.zip.