iText - ตารางที่ซ้อนกัน

ในบทนี้เราจะดูวิธีการเพิ่มตารางซ้อนลงในตารางในเอกสาร PDF โดยใช้ไลบรารี iText

การเพิ่มตารางที่ซ้อนกันใน Pdf

คุณสามารถสร้างเอกสาร PDF เปล่าโดยการสร้างไฟล์ Documentชั้นเรียน. ในขณะที่สร้างอินสแตนซ์คลาสนี้คุณต้องผ่านไฟล์PdfDocumentวัตถุเป็นพารามิเตอร์ไปยังตัวสร้าง จากนั้นในการเพิ่มตารางลงในเอกสารคุณต้องสร้างอินสแตนซ์ไฟล์Table คลาสและเพิ่มวัตถุนี้ลงในเอกสารโดยใช้ add() วิธี.

ในการเพิ่มตารางลงในตารางนี้คุณต้องสร้างตารางอื่น (ตารางที่ซ้อนกัน) และส่งต่อไปยังวัตถุเซลล์โดยใช้ add() วิธีการของ Cell ชั้นเรียน.

ต่อไปนี้เป็นขั้นตอนในการแทรกตารางลงในเซลล์ของตาราง

ขั้นตอนที่ 1: การสร้างวัตถุ PdfWriter

PdfWriterคลาสแทน DocWriter สำหรับ PDF คลาสนี้เป็นของแพ็คเกจcom.itextpdf.kernel.pdf. คอนสตรัคเตอร์ของคลาสนี้ยอมรับสตริงซึ่งแสดงถึงพา ธ ของไฟล์ที่จะสร้าง PDF

สร้างอินสแตนซ์คลาส PdfWriter โดยส่งค่าสตริง (แสดงถึงเส้นทางที่คุณต้องการสร้าง PDF) ไปยังตัวสร้างดังที่แสดงด้านล่าง

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

เมื่อออบเจ็กต์ประเภทนี้ถูกส่งผ่านไปยัง PdfDocument (คลาส) ทุกองค์ประกอบที่เพิ่มลงในเอกสารนี้จะถูกเขียนลงในไฟล์ที่ระบุ

ขั้นตอนที่ 2: การสร้างวัตถุ PdfDocument

PdfDocumentคลาสคือคลาสที่แสดงถึงเอกสาร PDF ใน iText คลาสนี้เป็นของแพ็คเกจcom.itextpdf.kernel.pdf. ในการสร้างอินสแตนซ์คลาสนี้ (ในโหมดการเขียน) คุณต้องส่งผ่านอ็อบเจ็กต์ของคลาส PdfWriter ไปยังผู้สร้าง

สร้างอินสแตนซ์คลาส PdfDocument โดยส่งออบเจ็กต์ PdfWriter ที่สร้างไว้ข้างต้นไปยังตัวสร้างดังที่แสดงด้านล่าง

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

เมื่อสร้างวัตถุ PdfDocument แล้วคุณสามารถเพิ่มองค์ประกอบต่างๆเช่นหน้าแบบอักษรสิ่งที่แนบมาของไฟล์และตัวจัดการเหตุการณ์โดยใช้วิธีการตามลำดับที่จัดเตรียมโดยคลาสของมัน

ขั้นตอนที่ 3: การสร้างวัตถุเอกสาร

Document คลาสของแพ็คเกจ com.itextpdf.layoutเป็นองค์ประกอบหลักในขณะที่สร้าง PDF แบบพอเพียง หนึ่งในตัวสร้างของคลาสนี้ยอมรับอ็อบเจ็กต์ของคลาส PdfDocument

เริ่มต้นไฟล์ Document คลาสโดยส่งผ่านวัตถุของคลาส PdfDocument สร้างขึ้นในขั้นตอนก่อนหน้าดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 4: การสร้างวัตถุตาราง

Tableคลาสแสดงตารางสองมิติที่เต็มไปด้วยเซลล์เรียงลำดับเป็นแถวและคอลัมน์ มันเป็นของแพ็คเกจcom.itextpdf.layout.element.

เริ่มต้นไฟล์ Table คลาสดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 5: สร้างเซลล์

สร้างไฟล์ cell วัตถุโดยการสร้างอินสแตนซ์ไฟล์ Cell คลาสของแพ็คเกจ com.itextpdf.layoutตามที่แสดงด้านล่าง

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

ขั้นตอนที่ 6: การสร้างตารางที่ซ้อนกัน

หลังจากสร้างไฟล์ cellสร้างตารางที่ซ้อนกันและเติมข้อมูลในเซลล์ดังที่แสดงด้านล่าง

// 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: การเพิ่มตารางที่ซ้อนกันลงในเซลล์

ตอนนี้เพิ่มตารางที่ซ้อนกันที่สร้างไว้ด้านบนลงในเซลล์ของตารางพาเรนต์ (คอนเทนเนอร์) โดยใช้ไฟล์ add() วิธีการของ Cellชั้นเรียน. และเพิ่มเซลล์นี้ในตารางหลักโดยใช้addCell() วิธีการของ Table ชั้นเรียนดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 8: การเพิ่มตารางลงในเอกสาร

เพิ่มไฟล์ table วัตถุที่สร้างขึ้นในขั้นตอนก่อนหน้าโดยใช้ add() วิธีการของ Document ชั้นเรียนดังที่แสดงด้านล่าง

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

ขั้นตอนที่ 9: การปิดเอกสาร

ปิดเอกสารโดยใช้ close() วิธีการของ Document ชั้นเรียนดังที่แสดงด้านล่าง

// Closing the document 
document.close();

ตัวอย่าง

โปรแกรม Java ต่อไปนี้สาธิตวิธีการเพิ่มตารางในเซลล์ของตาราง (ตารางซ้อนกัน) ในเอกสาร PDF โดยใช้ไลบรารี iText สร้างเอกสาร PDF ที่มีชื่อaddingNestedTable.pdfเพิ่มตารางเข้าไปแทรกตารางอื่นในเซลล์ใดเซลล์หนึ่งและบันทึกไว้ในเส้นทาง C:/itextExamples/.

บันทึกรหัสนี้ในไฟล์ที่มีชื่อ 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..");     
   } 
}

คอมไพล์และเรียกใช้ไฟล์ Java ที่บันทึกไว้จากพรอมต์คำสั่งโดยใช้คำสั่งต่อไปนี้ -

javac AddNestedTable.java 
java AddNestedTable

เมื่อดำเนินการโปรแกรมด้านบนจะสร้างเอกสาร PDF ที่แสดงข้อความต่อไปนี้

Nested Table Added successfully..

หากคุณตรวจสอบเส้นทางที่ระบุคุณจะพบเอกสาร PDF ที่สร้างขึ้นดังที่แสดงด้านล่าง