iText - Verschachtelte Tabelle
In diesem Kapitel erfahren Sie, wie Sie mithilfe der iText-Bibliothek eine verschachtelte Tabelle zu einer Tabelle in einem PDF-Dokument hinzufügen.
Hinzufügen verschachtelter Tabellen in einem PDF
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 eine Tabelle hinzuzufügen, müssen Sie eine andere Tabelle (verschachtelte Tabelle) erstellen und diese mit dem an das Zellenobjekt übergeben add() Methode der Cell Klasse.
Im Folgenden finden Sie die Schritte zum Einfügen einer Tabelle in die Zelle einer Tabelle.
Schritt 1: Erstellen eines PdfWriter-Objekts
Das PdfWriterKlasse repräsentiert den DocWriter für ein PDF. Diese Klasse gehört zum Paketcom.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 ihren Konstruktor übergeben (siehe Abbildung unten).
// Creating a PdfWriter
String dest = "C:/itextExamples/addingNestedTable.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 übergeben PdfWriter zu seinem Konstruktor.
Instanziieren Sie die PdfDocument-Klasse, indem Sie das oben erstellte PdfWriter-Objekt wie unten gezeigt an den Konstruktor übergeben.
// 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 Klasse PdfDocument.
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 contact = new Cell(); // Creating a cell
Schritt 6: Verschachtelte Tabelle erstellen
Nach dem Erstellen der cellErstellen Sie eine verschachtelte Tabelle und füllen Sie ihre Zellen wie unten gezeigt.
// Creating nested table for contact
float [] pointColumnWidths2 = {150f, 150f};
Table nestedTable = new Table(pointColumnWidths2);
// Populating row 1 and adding it to the nested table
Cell nested1 = new Cell();
nested1.add("Phone");
nestedTable.addCell(nested1);
Cell nested2 = new Cell();
nested2.add("9848022338");
nestedTable.addCell(nested2);
// Populating row 2 and adding it to the nested table
Cell nested3 = new Cell();
nested3.add("email");
nestedTable.addCell(nested3);
Cell nested4 = new Cell();
nested4.add("[email protected]");
nestedTable.addCell(nested4);
// Populating row 3 and adding it to the nested table
Cell nested5 = new Cell();
nested5.add("Address");
nestedTable.addCell(nested5);
Cell nested6 = new Cell();
nested6.add("Hyderabad");
nestedTable.addCell(nested6);
Schritt 7: Hinzufügen einer verschachtelten Tabelle zur Zelle
Fügen Sie nun die oben erstellte verschachtelte Tabelle mit der Taste in die Zelle der übergeordneten (Container-) Tabelle ein add() Methode der CellKlasse. Fügen Sie diese Zelle mit der Taste zur übergeordneten Tabelle hinzuaddCell() Methode der Table Klasse, wie unten gezeigt.
contact.add(nestedTable);
table.addCell(contact);
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 eine Tabelle zu einer Zelle einer Tabelle (verschachtelte Tabelle) in einem PDF-Dokument hinzufügen. Es wird ein PDF-Dokument mit dem Namen erstelltaddingNestedTable.pdf, fügt eine Tabelle hinzu, fügt eine weitere Tabelle in eine ihrer Zellen ein und speichert sie im Pfad C:/itextExamples/.
Speichern Sie diesen Code in einer Datei mit dem Namen AddNestedTable.java.
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.Table;
public class a4AddNestedTablesPdf {
public static void main(String args[]) throws Exception {
// Creating a PdfWriter object
String dest = "C:/itextExamples/addingNestedTable.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 [] pointColumnWidths1 = {150f, 150f};
Table table = new Table(pointColumnWidths1);
// Populating row 1 and adding it to the table
Cell cell1 = new Cell();
cell1.add("Name");
table.addCell(cell1);
Cell cell2 = new Cell();
cell2.add("Raju");
table.addCell(cell2);
// Populating row 2 and adding it to the table
Cell cell3 = new Cell();
cell3.add("Id");
table.addCell(cell3);
Cell cell4 = new Cell();
cell4.add("1001");
table.addCell(cell4);
// Populating row 3 and adding it to the table
Cell cell5 = new Cell();
cell5.add("Designation");
table.addCell(cell5);
Cell cell6 = new Cell();
cell6.add("Programmer");
table.addCell(cell6);
// Creating nested table for contact
float [] pointColumnWidths2 = {150f, 150f};
Table nestedTable = new Table(pointColumnWidths2);
// Populating row 1 and adding it to the nested table
Cell nested1 = new Cell();
nested1.add("Phone");
nestedTable.addCell(nested1);
Cell nested2 = new Cell();
nested2.add("9848022338");
nestedTable.addCell(nested2);
// Populating row 2 and adding it to the nested table
Cell nested3 = new Cell();
nested3.add("email");
nestedTable.addCell(nested3);
Cell nested4 = new Cell();
nested4.add("[email protected]");
nestedTable.addCell(nested4);
// Populating row 3 and adding it to the nested table
Cell nested5 = new Cell();
nested5.add("Address");
nestedTable.addCell(nested5);
Cell nested6 = new Cell();
nested6.add("Hyderabad");
nestedTable.addCell(nested6);
// Adding table to the cell
Cell cell7 = new Cell();
cell7.add("Contact");
table.addCell(cell7);
Cell cell8 = new Cell();
cell8.add(nestedTable);
table.addCell(cell8);
// Adding table to the document
doc.add(table);
// Closing the document
doc.close();
System.out.println("Nested Table Added successfully..");
}
}
Kompilieren Sie die gespeicherte Java-Datei und führen Sie sie an der Eingabeaufforderung mit den folgenden Befehlen aus:
javac AddNestedTable.java
java AddNestedTable
Bei der Ausführung erstellt das obige Programm ein PDF-Dokument mit der folgenden Meldung.
Nested Table Added successfully..
Wenn Sie den angegebenen Pfad überprüfen, finden Sie das erstellte PDF-Dokument wie unten gezeigt.