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
iText
dans Eclipse -
Étapes pour créer un fichier PDF à l’aide de la bibliothèque
iText
en Java -
Étapes pour lire le fichier PDF à l’aide de la bibliothèque
iText
en 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 deiText
est 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
iText
est 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
iText
offre 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.xml
apparaît dans votre dossier de projet. -
Ouvrez le
pom.xml
et 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
iText
lors de l’écriture. Vous pouvez mettre à niveau vers les versions les plus récentes si elles sont disponibles. -
Accédez à
Fichier
dans 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
PdfWriter
en passant le nom du fichier en paramètre au constructeur. - Procédez à la création d’une instance de la classe
PdfDocument
en passant la classePdfWriter
au 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
Paragraphe
est 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’instanceDocument
en 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
PdfReader
en passant le chemin du fichier au constructeur. - Créez une instance de classe
PdfDocument
en passant l’instance dePdfReader
au 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 classePdfTextExtractor
en passant la page actuelle du document. - Pour obtenir la page courante, vous devez invoquer la méthode
getPage()
de la classeDocument
et 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.