Créer et lire un PDF en Java à l'aide de la bibliothèque iText
- PDF et bibliothèques pour travailler avec des fichiers PDF
-
Fonctionnalités de la bibliothèque
iText -
Étapes pour installer la bibliothèque
iTextdans Eclipse -
Étapes pour créer un fichier PDF à l’aide de la bibliothèque
iTexten Java -
Étapes pour lire le fichier PDF à l’aide de la bibliothèque
iTexten Java
La bibliothèque iText est une bibliothèque open-source pour créer, manipuler et lire des fichiers PDF en Java. Cet article traite de la bibliothèque iText, de son installation dans Eclipse, ainsi que de la création et de la lecture de fichiers PDF en Java à l’aide de la bibliothèque iText.
PDF et bibliothèques pour travailler avec des fichiers PDF
Le format de document portable (PDF) est un format d’échange de données largement utilisé à l’aide de fichiers. Le PDF est indépendant du matériel, du système d’exploitation et du logiciel.
Par conséquent, il est très populaire et souvent utilisé pour le texte, les images et d’autres types de données.
De nombreuses bibliothèques sont disponibles pour créer, lire et travailler avec des fichiers PDF. Certaines de ces bibliothèques sont données ci-dessous.
-
iText- La version communautaire deiTextest une bibliothèque open source. Il lit, crée et manipule les fichiers PDF à l’aide de Java.Il a une structure hiérarchique et peut exécuter des fichiers PDF arbitrairement complexes pour générer les résultats souhaités. La librairie
iTextest disponible en Java et .NET. -
Bibliothèque
Adobe PDF- Adobe a développé cette bibliothèque pour créer, manipuler et lire des fichiers PDF. Nous pouvons également utiliser cette bibliothèque pour imprimer le pdf.Cette bibliothèque fonctionne avec différents langages tels que C++, Java et .NET.
-
PDFBox- Il s’agit d’une autre bibliothèque open source. Apache a développé cette bibliothèque pour créer, éditer et afficher des fichiers PDF, et elle peut être utilisée avec Java. -
Rapports Jasper- Cet outil de création de rapports peut générer des rapports dans des fichiers PDF.
Fonctionnalités de la bibliothèque iText
Examinons quelques-unes des fonctionnalités de la bibliothèque iText.
- Création de fichiers PDF - Nous pouvons créer des fichiers PDF arbitrairement complexes et interactifs à l’aide de la bibliothèque
iText. Nous pouvons également insérer des images dans le fichier PDF. - Nous pouvons créer des signets, ajouter des numéros de page et ajouter des filigranes au fichier PDF à l’aide de la bibliothèque
iText. - Nous pouvons effectuer des opérations de fractionnement et de fusion sur les fichiers PDF.
- La bibliothèque
iTextoffre une possibilité de travailler avec des formulaires interactifs dans des fichiers PDF. - Nous pouvons enregistrer un fichier PDF en tant qu’image dans différents formats tels que JPG, PNG, etc.
Étapes pour installer la bibliothèque iText dans Eclipse
La bibliothèque iText est un logiciel open source tiers qui doit être installé séparément de votre projet Java avant de l’utiliser. Cet article vous guide à travers les étapes d’installation de iText dans Eclipse.
Eclipse est l’un des IDE les plus populaires utilisés pour le développement d’applications en Java. Cet article suppose que vous avez déjà installé Java et Eclipse.
Même si vous travaillez sur un autre IDE, le processus d’installation est similaire.
Voyons les étapes pour ajouter la bibliothèque iText à votre projet Eclipse.
-
Créez un projet dans Eclipse (“Fichier” -> “Nouveau” -> “Projet Java”).
-
Faites un clic droit sur le projet, un menu déroulant apparaît.
-
Naviguez jusqu’à
Configurer. -
Cliquez sur
Convertir en projet Maven. -
Vous remarquerez qu’un nouveau fichier nommé
pom.xmlapparaît dans votre dossier de projet. -
Ouvrez le
pom.xmlet ajoutez les dépendances suivantes dans la balise<project>et après la balise<build>.<dependencies> <dependency> <groupId>com.itextpdf</groupId> <artifactId>barcodes</artifactId> <version>7.2.1</version> <!-- barcodes depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>font-asian</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.2.1</version> <!-- forms depends on kernel and layout --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>hyph</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.2.1</version> <!-- kernel depends on io --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>layout</artifactId> <version>7.2.1</version> <!-- layout depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>pdfa</artifactId> <version>7.2.1</version> <!-- pdfa depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>sign</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>commons</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>styled-xml-parser</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>svg</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.13.3</version> </dependency> </dependencies>Notez que le projet utilise la dernière version (7.2.1) de la librairie
iTextlors de l’écriture. Vous pouvez mettre à niveau vers les versions les plus récentes si elles sont disponibles. -
Accédez à
Fichierdans la barre de menu et cliquez surActualiser.
Cela importera les bibliothèques nécessaires dans le projet. Vous devez disposer d’une connexion Internet stable car les bibliothèques sont téléchargées à partir du référentiel maven.
Étapes pour créer un fichier PDF à l’aide de la bibliothèque iText en Java
Une fois les bibliothèques installées, vous pouvez utiliser la bibliothèque iText pour créer des fichiers pdf à l’aide du programme Java.
La bibliothèque iText a une classe nommée PdfWriter qui crée un nouveau fichier pdf à écrire dedans. Une fois le fichier ouvert, vous ajoutez du texte, une image, etc.
Laissez-nous comprendre les étapes pour créer un fichier pdf et y ajouter du texte et une image.
- Créez une instance de la classe
PdfWriteren passant le nom du fichier en paramètre au constructeur. - Procédez à la création d’une instance de la classe
PdfDocumenten passant la classePdfWriterau constructeur. Cette classe est responsable de l’écriture dans le fichier pdf. - Enfin, vous allez créer une instance de classe
Document. Il s’attache à l’instance de classePdfDocument.
Cette classe est utilisée pour joindre des éléments individuels au fichier pdf.
- À ce moment, vous êtes prêt à écrire du texte et des images dans le fichier pdf.
Étapes pour écrire le texte dans le fichier PDF en Java à l’aide de la bibliothèque iText
Voyons les étapes pour écrire un texte dans le fichier.
- Une classe
Paragrapheest utilisée pour écrire le texte dans le pdf. Vous devez donc créer une instance de la classeParagraphe. - Vous pouvez ajouter le texte en appelant la méthode
add(). - Vous pouvez modifier l’apparence du texte en appelant différentes méthodes telles que
setTextAlignment(),setFont(), etc. - Enfin, vous ajoutez l’instance
paragrapheà l’instanceDocumenten appelant la méthodeadd().
Enfin, lorsque vous avez ajouté toutes les instances au document, vous devez le fermer en appelant la méthode close() de la classe Document.
Exemple de code pour créer un PDF en Java à l’aide de la bibliothèque iText
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
createPdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void createPdf(String file) throws IOException {
PdfWriter writer = new PdfWriter(file);
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);
PdfFont myFont = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
Paragraph p1 = new Paragraph();
p1.add("Hello, This is Delftstack!");
p1.setTextAlignment(TextAlignment.CENTER);
p1.setFont(myFont);
p1.setFontSize(28);
doc.add(p1);
Paragraph p2 = new Paragraph();
p2.add("We help you understand the concepts.");
p2.setFontSize(18);
doc.add(p2);
doc.close();
}
}
Le fichier pdf créé à l’aide du code ci-dessus est donné ci-dessous.

Étapes pour lire le fichier PDF à l’aide de la bibliothèque iText en Java
La bibliothèque iText fournit une classe PdfReader pour lire un fichier pdf. Le fichier pdf peut être lu en suivant les étapes ci-dessous.
- Tout d’abord, vous devez créer une instance de la classe
PdfReaderen passant le chemin du fichier au constructeur. - Créez une instance de classe
PdfDocumenten passant l’instance dePdfReaderau constructeur. - Si votre fichier pdf contient plusieurs pages, vous devrez parcourir chaque page. Pour obtenir le nombre de pages, vous pouvez invoquer la méthode
getNumberOfPages()en utilisant l’instance de la classePdfDocument. - Parcourez chaque page.
- Appelez la méthode
getTextFromPage()de la classePdfTextExtractoren passant la page actuelle du document. - Pour obtenir la page courante, vous devez invoquer la méthode
getPage()de la classeDocumentet transmettre le numéro de la page courante. - La méthode
getTextFromPage()est statique, vous n’avez donc pas besoin d’une instance de classe. - La méthode renvoie tout le texte de la page en cours. Vous pouvez le stocker dans une variable
String. - Traitez le texte (par exemple, affichez-le sur la console).
- Appelez la méthode
Exemple de code pour lire un PDF en Java à l’aide de la bibliothèque iText
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
readpdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void readpdf(String file) throws IOException {
PdfReader pr = new PdfReader(file);
PdfDocument doc = new PdfDocument(pr);
int num = doc.getNumberOfPages();
for (int i = 1; i <= num; i++) {
String str = PdfTextExtractor.getTextFromPage(doc.getPage(i));
System.out.println(str);
}
}
}
Production:
Hello, This is Delftstack!
We help you understand the concepts.
Conclusion
Cet article aborde les bases de la lecture et de l’écriture du fichier pdf à l’aide de la bibliothèque iText. Cependant, la bibliothèque iText peut effectuer des opérations complexes sur le fichier pdf.
Pour en savoir plus sur la librairie iText et ses fonctionnalités, visitez la documentation.