iText - zagnieżdżona tabela

W tym rozdziale zobaczymy, jak dodać zagnieżdżoną tabelę do tabeli w dokumencie PDF za pomocą biblioteki iText.

Dodawanie zagnieżdżonych tabel w pliku PDF

Możesz utworzyć pusty dokument PDF, tworząc wystąpienie Documentklasa. Podczas tworzenia wystąpienia tej klasy musisz przekazać plikPdfDocumentobiekt jako parametr do jego konstruktora. Następnie, aby dodać tabelę do dokumentu, musisz utworzyć wystąpienieTable i dodaj ten obiekt do dokumentu przy użyciu rozszerzenia add() metoda.

Aby dodać tabelę do tej tabeli, musisz utworzyć kolejną tabelę (tabelę zagnieżdżoną) i przekazać ją do obiektu komórki za pomocą add() metoda Cell klasa.

Poniżej przedstawiono kroki, aby wstawić tabelę do komórki tabeli.

Krok 1: Tworzenie obiektu PdfWriter

Plik PdfWriterreprezentuje DocWriter dla pliku PDF. Ta klasa należy do pakietucom.itextpdf.kernel.pdf. Konstruktor tej klasy akceptuje ciąg znaków reprezentujący ścieżkę do pliku, w którym ma zostać utworzony plik PDF.

Utwórz wystąpienie klasy PdfWriter, przekazując wartość ciągu (reprezentującą ścieżkę, w której należy utworzyć plik PDF) do jej konstruktora, jak pokazano poniżej.

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

Gdy obiekt tego typu jest przekazywany do PdfDocument (klasy), każdy element dodany do tego dokumentu zostanie zapisany w określonym pliku.

Krok 2: Tworzenie obiektu PdfDocument

Plik PdfDocumentclass to klasa reprezentująca dokument PDF w iText. Ta klasa należy do pakietucom.itextpdf.kernel.pdf. Aby utworzyć instancję tej klasy (w trybie pisania), musisz przekazać obiekt tej klasy PdfWriter do swojego konstruktora.

Utwórz wystąpienie klasy PdfDocument, przekazując utworzony powyżej obiekt PdfWriter do jej konstruktora, jak pokazano poniżej.

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

Po utworzeniu obiektu PdfDocument można dodać różne elementy, takie jak strona, czcionka, załącznik do pliku i moduł obsługi zdarzeń, używając odpowiednich metod udostępnionych przez jego klasę.

Krok 3: Tworzenie obiektu dokumentu

Plik Document klasa pakietu com.itextpdf.layoutjest elementem głównym podczas tworzenia samowystarczalnego pliku PDF. Jeden z konstruktorów tej klasy akceptuje obiekt klasy PdfDocument.

Utwórz wystąpienie Document class poprzez przekazanie obiektu klasy PdfDocument utworzone w poprzednich krokach, jak pokazano poniżej.

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

Krok 4: Tworzenie obiektu tabeli

Plik Tableclass reprezentuje dwuwymiarową siatkę wypełnioną komórkami, uporządkowaną w wierszach i kolumnach. Należy do pakietucom.itextpdf.layout.element.

Utwórz wystąpienie Table klasa, jak pokazano poniżej.

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

Krok 5: Tworzenie komórki

Stwórz cell obiekt, tworząc wystąpienie Cell klasa pakietu com.itextpdf.layout, jak pokazano niżej.

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

Krok 6: Tworzenie tabeli zagnieżdżonej

Po utworzeniu cell, utwórz tabelę zagnieżdżoną i wypełnij jej komórki, jak pokazano poniżej.

// 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);

Krok 7: Dodawanie tabeli zagnieżdżonej do komórki

Teraz dodaj powyższą utworzoną tabelę zagnieżdżoną do komórki tabeli nadrzędnej (kontenera) przy użyciu rozszerzenia add() metoda Cellklasa. I dodaj tę komórkę do tabeli nadrzędnej przy użyciu rozszerzeniaaddCell() metoda Table klasa, jak pokazano poniżej.

contact.add(nestedTable); 
table.addCell(contact);

Krok 8: Dodawanie tabeli do dokumentu

Dodaj table obiekt utworzony w poprzednim kroku przy użyciu add() metoda Document klasa, jak pokazano poniżej.

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

Krok 9: Zamknięcie dokumentu

Zamknij dokument za pomocą close() metoda Document klasa, jak pokazano poniżej.

// Closing the document 
document.close();

Przykład

Poniższy program w języku Java pokazuje, jak dodać tabelę do komórki tabeli (tabela zagnieżdżona) w dokumencie PDF przy użyciu biblioteki iText. Tworzy dokument PDF o nazwieaddingNestedTable.pdf, dodaje do niej tabelę, wstawia inną tabelę do jednej ze swoich komórek i zapisuje ją na ścieżce C:/itextExamples/.

Zapisz ten kod w pliku o nazwie 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..");     
   } 
}

Skompiluj i uruchom zapisany plik Java z wiersza polecenia, używając następujących poleceń -

javac AddNestedTable.java 
java AddNestedTable

Po uruchomieniu powyższy program tworzy dokument PDF z następującym komunikatem.

Nested Table Added successfully..

Jeśli zweryfikujesz określoną ścieżkę, możesz znaleźć utworzony dokument PDF, jak pokazano poniżej.