iText - Ajout d'une image à un tableau
Dans ce chapitre, nous verrons comment ajouter une image à un tableau dans un document PDF à l'aide de la bibliothèque iText.
Ajout d'une image à un tableau
Vous pouvez créer un document PDF vide en instanciant le Documentclasse. Lors de l'instanciation de cette classe, vous devez passer unPdfDocumentobjet en tant que paramètre, à son constructeur. Ensuite, pour ajouter un tableau au document, vous devez instancier leTable classe et ajoutez cet objet au document en utilisant le add() méthode.
Pour ajouter une image à ce tableau, vous devez instancier le Cell classe, créez et un objet de l'image qui doit être ajouté, ajoutez l'image à la cell objet utilisant le add() méthode de la Cell classe.
Voici les étapes pour insérer une image dans la cellule d'un tableau.
Étape 1: Création d'un objet PdfWriter
le PdfWriter classe représente le Doc Writer pour un PDF, cette classe appartient au package com.itextpdf.kernel.pdf. Le constructeur de cette classe accepte une chaîne, représentant le chemin du fichier où le PDF doit être créé.
Instanciez la classe PdfWriter en passant une valeur de chaîne représentant le chemin d'accès où vous devez créer un PDF, à son constructeur, comme indiqué ci-dessous.
// Creating a PdfWriter
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
Lorsqu'un objet de ce type est passé à un PdfDocument (classe), chaque élément ajouté à ce document sera écrit dans le fichier spécifié.
Étape 2: Création d'un objet PdfDocument
le PdfDocumentclass est la classe qui représente le document PDF dans iText. Cette classe appartient au packagecom.itextpdf.kernel.pdf. Pour instancier cette classe (en écriture), vous devez passer un objet de la classePdfWriter à son constructeur.
Instancier le PdfDocument classe en passant l'objet PdfWriter créé ci-dessus à son constructeur, comme indiqué ci-dessous.
// Creating a PdfDocument
PdfDocument pdfDoc = new PdfDocument(writer);
Une fois qu'un objet PdfDocument est créé, vous pouvez ajouter divers éléments tels que la page, la police, la pièce jointe et le gestionnaire d'événements à l'aide des méthodes respectives fournies par sa classe.
Étape 3: Création de l'objet Document
le Document classe du package com.itextpdf.layoutest l'élément racine lors de la création d'un PDF autonome. Un des constructeurs de cette classe accepte un objet de la classePdfDocument.
Instancier le Document class en passant l'objet de la classe PdfDocument créé dans les étapes précédentes, comme indiqué ci-dessous.
// Creating a Document
Document document = new Document(pdfDoc);
Étape 4: Création d'un objet Table
le Tableclass représente une grille bidimensionnelle remplie de cellules, triées en lignes et en colonnes. Il appartient au packagecom.itextpdf.layout.element.
Instancier le Table classe comme indiqué ci-dessous.
// Creating a table
float [] pointColumnWidths = {200F, 200F};
Table table = new Table(pointColumnWidths);
Étape 5: Création de la cellule
Créer un cell objet en instanciant le Cell classe du package com.itextpdf.layout, comme indiqué ci-dessous.
// Adding cell to the table
Cell cell = new Cell(); // Creating a cell
Étape 6: Création d'une image
Pour créer le image objet, tout d'abord, créez un ImageData objet utilisant le create() méthode de la ImageDataFactoryclasse. En tant que paramètre de cette méthode, transmettez un paramètre de chaîne représentant le chemin de l'image, comme indiqué ci-dessous.
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
Maintenant, instanciez le Image classe de la com.itextpdf.layout.elementpaquet. Lors de l'instanciation, passez leImageData objet créé ci-dessus, en tant que paramètre de son constructeur, comme indiqué ci-dessous.
// Creating an Image object
Image img = new Image(data);
Ajouter le image objet à la cellule en utilisant le add() méthode de la classe de cellules, comme indiqué ci-dessous.
// Adding image to the cell
cell.add(img.setAutoScale(true));
Étape 7: Ajout d'une cellule au tableau
Enfin, pour ajouter cette cellule au tableau, appelez le addCell() méthode de la Table classe et passer le cell objet comme paramètre de cette méthode, comme indiqué ci-dessous.
table.addCell(cell);
Étape 8: Ajout d'un tableau au document
Ajouter le table objet créé à l'étape précédente à l'aide du add() méthode de la Document classe, comme indiqué ci-dessous.
// Adding list to the document
document.add(table);
Étape 9: Fermeture du document
Fermez le document à l'aide du close() méthode de la Document classe, comme indiqué ci-dessous.
// Closing the document
document.close();
Exemple
Le programme Java suivant montre comment ajouter une image à une cellule d'un tableau dans un document PDF à l'aide de la bibliothèque iText. Il crée un document PDF avec le nomaddingImage.pdf, y ajoute un tableau, insère une image (javafxLogo.jpg) dans l'une de ses cellules et l'enregistre dans le chemin C:/itextExamples/.
Enregistrez ce code dans un fichier avec le nom AddingImageToTable.java.
import com.itextpdf.io.image.ImageData;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Table;
public class a3AddingImageToTable {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingImage.pdf";
PdfWriter writer = new PdfWriter(dest);
// Creating a PdfDocument object
PdfDocument pdfDoc = new PdfDocument(writer);
// Creating a Document object
Document doc = new Document(pdfDoc);
// Creating a table
float [] pointColumnWidths = {150f, 150f};
Table table = new Table(pointColumnWidths);
// Populating row 1 and adding it to the table
Cell cell1 = new Cell();
cell1.add("Tutorial ID");
table.addCell(cell1);
Cell cell2 = new Cell();
cell2.add("1");
table.addCell(cell2);
// Populating row 2 and adding it to the table
Cell cell3 = new Cell();
cell3.add("Tutorial Title");
table.addCell(cell3);
Cell cell4 = new Cell();
cell4.add("JavaFX");
table.addCell(cell4);
// Populating row 3 and adding it to the table
Cell cell5 = new Cell();
cell5.add("Tutorial Author");
table.addCell(cell5);
Cell cell6 = new Cell();
cell6.add("Krishna Kasyap");
table.addCell(cell6);
// Populating row 4 and adding it to the table
Cell cell7 = new Cell();
cell7.add("Submission date");
table.addCell(cell7);
Cell cell8 = new Cell();
cell8.add("2016-07-06");
table.addCell(cell8);
// Populating row 5 and adding it to the table
Cell cell9 = new Cell();
cell9.add("Tutorial Icon");
table.addCell(cell9);
// Creating the cell10
Cell cell10 = new Cell();
// Creating an ImageData object
String imageFile = "C:/itextExamples/javafxLogo.jpg";
ImageData data = ImageDataFactory.create(imageFile);
// Creating the image
Image img = new Image(data);
// Adding image to the cell10
cell10.add(img.setAutoScale(true));
// Adding cell110 to the table
table.addCell(cell10);
// Adding Table to document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Image added to table successfully..");
}
}
Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes -
javac AddingImageToTable.java
java AddingImageToTable
Lors de l'exécution, le programme ci-dessus crée un document PDF, affichant le message suivant.
Image added to table successfully..
Si vous vérifiez le chemin spécifié, vous pouvez trouver le document PDF créé, comme indiqué ci-dessous.