iText - İç İçe Tablo

Bu bölümde, iText kitaplığını kullanarak bir PDF belgesindeki bir tabloya yuvalanmış bir tablonun nasıl ekleneceğini göreceğiz.

Bir PDF'ye İç İçe Tablo Ekleme

Örneğini oluşturarak boş bir PDF Belgesi oluşturabilirsiniz. Documentsınıf. Bu sınıfı başlatırken, birPdfDocumentnesneyi bir parametre olarak, yapıcısına. Ardından, belgeye bir tablo eklemek için,Table sınıfını seçin ve bu nesneyi kullanarak belgeye ekleyin. add() yöntem.

Bu tabloya bir tablo eklemek için başka bir tablo (iç içe geçmiş tablo) oluşturmanız ve bunu kullanarak hücre nesnesine iletmeniz gerekir. add() yöntemi Cell sınıf.

Bir tablonun hücresine bir tablo eklemek için adımlar aşağıdadır.

Adım 1: Bir PdfWriter nesnesi oluşturma

PdfWritersınıfı, bir PDF için DocWriter'ı temsil eder. Bu sınıf pakete aittircom.itextpdf.kernel.pdf. Bu sınıfın yapıcısı, PDF'nin oluşturulacağı dosyanın yolunu temsil eden bir dizeyi kabul eder.

Aşağıda gösterildiği gibi yapıcısına bir dize değeri (PDF oluşturmanız gereken yolu temsil eden) ileterek PdfWriter sınıfını başlatın.

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

Bu tür bir nesne bir PdfDocument'e (sınıf) aktarıldığında, bu belgeye eklenen her öğe belirtilen dosyaya yazılacaktır.

Adım 2: Bir PdfDocument nesnesi oluşturma

PdfDocumentclass, iText'teki PDF Belgesini temsil eden sınıftır. Bu sınıf pakete aittircom.itextpdf.kernel.pdf. Bu sınıfı başlatmak için (yazma modunda), sınıfın bir nesnesini iletmeniz gerekir. PdfWriter yapıcısına.

Aşağıda gösterildiği gibi, yukarıda oluşturulan PdfWriter nesnesini yapıcısına ileterek PdfDocument sınıfını somutlaştırın.

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

Bir PdfDocument nesnesi oluşturulduktan sonra, sınıfının sağladığı ilgili yöntemleri kullanarak sayfa, yazı tipi, dosya eki ve olay işleyici gibi çeşitli öğeler ekleyebilirsiniz.

3. Adım: Belge nesnesini oluşturma

Document paketin sınıfı com.itextpdf.layoutkendi kendine yeten bir PDF oluştururken kullanılan kök öğedir. Bu sınıfın kurucularından biri, PdfDocument sınıfının bir nesnesini kabul eder.

Örnekleyin Document sınıfın nesnesini ileterek sınıf PdfDocument aşağıda gösterildiği gibi önceki adımlarda oluşturulur.

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

Adım 4: Bir Tablo nesnesi oluşturma

Tablesınıfı, satırlar ve sütunlar halinde sıralanmış hücrelerle dolu iki boyutlu bir ızgarayı temsil eder. Pakete aittircom.itextpdf.layout.element.

Örnekleyin Table aşağıda gösterildiği gibi sınıf.

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

Adım 5: Hücreyi oluşturma

Oluşturmak cell nesneyi örnekleyerek Cell paketin sınıfı com.itextpdf.layout, Aşağıda gösterildiği gibi.

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

Adım 6: İç içe geçmiş tablo oluşturma

Oluşturduktan sonra cell, iç içe geçmiş bir tablo oluşturun ve aşağıda gösterildiği gibi hücrelerini doldurun.

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

7. Adım: Hücreye iç içe tablo ekleme

Şimdi, yukarıda oluşturulan iç içe tabloyu kullanarak üst (kapsayıcı) tablonun hücresine ekleyin. add() yöntemi Cellsınıf. Ve bu hücreyi ana tabloya ekleyin.addCell() yöntemi Table sınıf, aşağıda gösterildiği gibi.

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

8. Adım: Belgeye tablo ekleme

Ekle table önceki adımda oluşturulan nesne add() yöntemi Document sınıf, aşağıda gösterildiği gibi.

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

Adım 9: Belgeyi Kapatma

Belgeyi kullanarak kapatın. close() yöntemi Document sınıf, aşağıda gösterildiği gibi.

// Closing the document 
document.close();

Misal

Aşağıdaki Java programı, iText kitaplığını kullanarak bir PDF belgesindeki bir tablonun hücresine (iç içe geçmiş tablo) nasıl tablo ekleneceğini gösterir. Adıyla bir PDF belgesi oluştururaddingNestedTable.pdf, tablo ekler, hücrelerinden birine başka bir tablo ekler ve yola kaydeder C:/itextExamples/.

Bu kodu adıyla bir dosyaya kaydedin 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..");     
   } 
}

Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -

javac AddNestedTable.java 
java AddNestedTable

Yürütmenin ardından, yukarıdaki program aşağıdaki mesajı görüntüleyen bir PDF belgesi oluşturur.

Nested Table Added successfully..

Belirtilen yolu doğrularsanız, oluşturulan PDF belgesini aşağıda gösterildiği gibi bulabilirsiniz.