iText - Hinzufügen eines Bildes zu einer Tabelle

In diesem Kapitel erfahren Sie, wie Sie mithilfe der iText-Bibliothek ein Bild zu einer Tabelle in einem PDF-Dokument hinzufügen.

Hinzufügen eines Bildes zu einer Tabelle

Sie können ein leeres PDF-Dokument erstellen, indem Sie das instanziieren DocumentKlasse. Während Sie diese Klasse instanziieren, müssen Sie a bestehenPdfDocumentObjekt als Parameter an seinen Konstruktor. Um dem Dokument eine Tabelle hinzuzufügen, müssen Sie die instanziierenTable Klasse und fügen Sie dieses Objekt dem Dokument mit der add() Methode.

Um dieser Tabelle ein Bild hinzuzufügen, müssen Sie das instanziieren Cell Klasse, erstellen und ein Objekt des Bildes, das hinzugefügt werden muss, fügen Sie das Bild zu cell Objekt mit dem add() Methode der Cell Klasse.

Im Folgenden finden Sie die Schritte zum Einfügen eines Bildes in die Zelle einer Tabelle.

Schritt 1: Erstellen eines PdfWriter-Objekts

Das PdfWriter Klasse repräsentiert den Doc Writer für ein PDF, diese Klasse gehört zum Paket com.itextpdf.kernel.pdf. Der Konstruktor dieser Klasse akzeptiert eine Zeichenfolge, die den Pfad der Datei darstellt, in der die PDF erstellt werden soll.

Instanziieren Sie die PdfWriter-Klasse, indem Sie einen Zeichenfolgenwert, der den Pfad darstellt, in dem Sie eine PDF-Datei erstellen müssen, an den Konstruktor übergeben, wie unten gezeigt.

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

Wenn ein Objekt dieses Typs an ein PdfDocument (Klasse) übergeben wird, wird jedes zu diesem Dokument hinzugefügte Element in die angegebene Datei geschrieben.

Schritt 2: Erstellen eines PdfDocument-Objekts

Das PdfDocumentKlasse ist die Klasse, die das PDF-Dokument in iText darstellt. Diese Klasse gehört zum Paketcom.itextpdf.kernel.pdf. Um diese Klasse zu instanziieren (im Schreibmodus), müssen Sie ein Objekt der Klasse übergebenPdfWriter zu seinem Konstruktor.

Instanziieren Sie die PdfDocument Klasse, indem Sie das oben erstellte PdfWriter-Objekt an den Konstruktor übergeben, wie unten gezeigt.

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

Sobald ein PdfDocument-Objekt erstellt wurde, können Sie verschiedene Elemente wie Seite, Schriftart, Dateianhang und Ereignishandler mit den entsprechenden Methoden seiner Klasse hinzufügen.

Schritt 3: Erstellen des Dokumentobjekts

Das Document Klasse des Pakets com.itextpdf.layoutist das Stammelement beim Erstellen einer autarken PDF-Datei. Einer der Konstruktoren dieser Klasse akzeptiert ein Objekt der KlassePdfDocument.

Instanziieren Sie die Document Klasse durch Übergeben des Objekts der Klasse PdfDocument in den vorherigen Schritten erstellt, wie unten gezeigt.

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

Schritt 4: Erstellen eines Tabellenobjekts

Das TableKlasse repräsentiert ein zweidimensionales Gitter, das mit Zellen gefüllt ist und in Zeilen und Spalten angeordnet ist. Es gehört zum Paketcom.itextpdf.layout.element.

Instanziieren Sie die Table Klasse wie unten gezeigt.

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

Schritt 5: Erstellen der Zelle

Ein ... kreieren cell Objekt durch Instanziierung der Cell Klasse des Pakets com.itextpdf.layout, Wie nachfolgend dargestellt.

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

Schritt 6: Erstellen eines Bildes

So erstellen Sie die image Objekt erstellen zunächst ein ImageData Objekt mit dem create() Methode der ImageDataFactoryKlasse. Übergeben Sie als Parameter dieser Methode einen Zeichenfolgenparameter, der den Pfad des Bildes darstellt, wie unten gezeigt.

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

Jetzt instanziieren Sie die Image Klasse der com.itextpdf.layout.elementPaket. Übergeben Sie beim Instanziieren dieImageData Objekt, das oben als Parameter für seinen Konstruktor erstellt wurde, wie unten gezeigt.

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

Ergänzen Sie die image Objekt auf die Zelle mit dem add() Methode der Zellklasse, wie unten gezeigt.

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

Schritt 7: Hinzufügen einer Zelle zur Tabelle

Um diese Zelle zur Tabelle hinzuzufügen, rufen Sie schließlich die auf addCell() Methode der Table Klasse und bestehen die cell Objekt als Parameter für diese Methode, wie unten gezeigt.

table.addCell(cell);

Schritt 8: Hinzufügen einer Tabelle zum Dokument

Ergänzen Sie die table Objekt, das im vorherigen Schritt mit dem erstellt wurde add() Methode der Document Klasse, wie unten gezeigt.

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

Schritt 9: Schließen des Dokuments

Schließen Sie das Dokument mit der close() Methode der Document Klasse, wie unten gezeigt.

// Closing the document 
document.close();

Beispiel

Das folgende Java-Programm zeigt, wie Sie mithilfe der iText-Bibliothek ein Bild zu einer Zelle einer Tabelle in einem PDF-Dokument hinzufügen. Es wird ein PDF-Dokument mit dem Namen erstelltaddingImage.pdf, fügt eine Tabelle hinzu, fügt ein Bild (javafxLogo.jpg) in eine seiner Zellen ein und speichert es im Pfad C:/itextExamples/.

Speichern Sie diesen Code in einer Datei mit dem Namen 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..");     
   } 
}

Kompilieren Sie die gespeicherte Java-Datei und führen Sie sie an der Eingabeaufforderung mit den folgenden Befehlen aus:

javac AddingImageToTable.java 
java AddingImageToTable

Bei der Ausführung erstellt das obige Programm ein PDF-Dokument mit der folgenden Meldung.

Image added to table successfully..

Wenn Sie den angegebenen Pfad überprüfen, finden Sie das erstellte PDF-Dokument wie unten gezeigt.