iText - Aggiunta di un'immagine a una tabella

In questo capitolo vedremo come aggiungere un'immagine a una tabella in un documento PDF utilizzando la libreria iText.

Aggiunta di un'immagine a una tabella

È possibile creare un documento PDF vuoto istanziando il file Documentclasse. Durante la creazione di un'istanza di questa classe, è necessario superare un filePdfDocumentoggetto come parametro, al suo costruttore. Quindi, per aggiungere una tabella al documento, è necessario creare un'istanza del fileTable class e aggiungi questo oggetto al documento usando il add() metodo.

Per aggiungere un'immagine a questa tabella, è necessario creare un'istanza del file Cell class, crea e un oggetto dell'immagine che deve essere aggiunto, aggiungi l'immagine al file cell oggetto utilizzando il add() metodo del Cell classe.

Di seguito sono riportati i passaggi per inserire un'immagine nella cella di una tabella.

Passaggio 1: creazione di un oggetto PdfWriter

Il PdfWriter class rappresenta il Doc Writer per un PDF, questa classe appartiene al pacchetto com.itextpdf.kernel.pdf. Il costruttore di questa classe accetta una stringa, che rappresenta il percorso del file in cui deve essere creato il PDF.

Istanziare la classe PdfWriter passando un valore stringa che rappresenta il percorso in cui è necessario creare un PDF, al suo costruttore, come mostrato di seguito.

// Creating a PdfWriter 
String dest = "C:/itextExamples/addingImage.pdf"; 
PdfWriter writer = new PdfWriter(dest);

Quando un oggetto di questo tipo viene passato a un PdfDocument (classe), ogni elemento aggiunto a questo documento verrà scritto nel file specificato.

Passaggio 2: creazione di un oggetto PdfDocument

Il PdfDocumentclass è la classe che rappresenta il documento PDF in iText. Questa classe appartiene al pacchettocom.itextpdf.kernel.pdf. Per istanziare questa classe (in modalità di scrittura), è necessario passare un oggetto della classePdfWriter al suo costruttore.

Istanziare il file PdfDocument class passando l'oggetto PdfWriter creato sopra al suo costruttore, come mostrato di seguito.

// Creating a PdfDocument  
PdfDocument pdfDoc = new PdfDocument(writer);

Una volta creato un oggetto PdfDocument, è possibile aggiungere vari elementi come pagina, font, file allegati e gestore eventi utilizzando i rispettivi metodi forniti dalla sua classe.

Passaggio 3: creazione dell'oggetto Documento

Il Document classe del pacchetto com.itextpdf.layoutè l'elemento principale durante la creazione di un PDF autosufficiente. Uno dei costruttori di questa classe accetta un oggetto della classePdfDocument.

Istanziare il file Document class passando l'oggetto della classe PdfDocument creato nei passaggi precedenti, come mostrato di seguito.

// Creating a Document  
Document document = new Document(pdfDoc);

Passaggio 4: creazione di un oggetto tabella

Il Tableclass rappresenta una griglia bidimensionale piena di celle, ordinate in righe e colonne. Appartiene al pacchettocom.itextpdf.layout.element.

Istanziare il file Table classe come mostrato di seguito.

// Creating a table 
float [] pointColumnWidths = {200F, 200F}; 
Table table = new Table(pointColumnWidths);

Passaggio 5: creazione della cella

Creare un cell oggetto istanziando il file Cell classe del pacchetto com.itextpdf.layout, come mostrato di seguito.

// Adding cell to the table
Cell cell = new Cell();  // Creating a cell

Passaggio 6: creazione di un'immagine

Per creare il file image oggetto, prima di tutto, crea un file ImageData oggetto utilizzando il create() metodo del ImageDataFactoryclasse. Come parametro di questo metodo, passare un parametro stringa che rappresenta il percorso dell'immagine, come mostrato di seguito.

// Creating an ImageData object 
String imageFile = "C:/itextExamples/javafxLogo.jpg"; 
ImageData data = ImageDataFactory.create(imageFile);

Ora, istanzia il file Image classe di com.itextpdf.layout.elementpacchetto. Durante l'istanza, passa il fileImageData oggetto creato sopra, come parametro del suo costruttore, come mostrato di seguito.

// Creating an Image object 
Image img = new Image(data);

Aggiungi il image oggetto alla cella utilizzando il add() metodo della classe cella, come mostrato di seguito.

// Adding image to the cell  
cell.add(img.setAutoScale(true));

Passaggio 7: aggiunta di celle alla tabella

Infine, per aggiungere questa cella alla tabella, chiama il file addCell() metodo del Table class e passare il cell oggetto come parametro di questo metodo, come mostrato di seguito.

table.addCell(cell);

Passaggio 8: aggiunta di una tabella al documento

Aggiungi il table oggetto creato nel passaggio precedente utilizzando il add() metodo del Document classe, come mostrato di seguito.

// Adding list to the document 
document.add(table);

Passaggio 9: chiusura del documento

Chiudere il documento utilizzando il file close() metodo del Document classe, come mostrato di seguito.

// Closing the document 
document.close();

Esempio

Il seguente programma Java mostra come aggiungere un'immagine a una cella di una tabella in un documento PDF utilizzando la libreria iText. Crea un documento PDF con il nomeaddingImage.pdf, aggiunge una tabella, inserisce un'immagine (javafxLogo.jpg) in una delle sue celle e la salva nel percorso C:/itextExamples/.

Salva questo codice in un file con il nome 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..");     
   } 
}

Compilare ed eseguire il file Java salvato dal prompt dei comandi utilizzando i seguenti comandi:

javac AddingImageToTable.java 
java AddingImageToTable

Al momento dell'esecuzione, il programma di cui sopra crea un documento PDF, visualizzando il seguente messaggio.

Image added to table successfully..

Se verifichi il percorso specificato, puoi trovare il documento PDF creato, come mostrato di seguito.