iText-중첩 테이블

이 장에서는 iText 라이브러리를 사용하여 PDF 문서의 테이블에 중첩 테이블을 추가하는 방법을 알아 봅니다.

PDF에 중첩 테이블 추가

인스턴스화하여 빈 PDF 문서를 만들 수 있습니다. Document수업. 이 클래스를 인스턴스화하는 동안PdfDocument개체를 생성자에 매개 변수로 추가합니다. 그런 다음 문서에 테이블을 추가하려면 다음을 인스턴스화해야합니다.Table 클래스를 사용하고이 개체를 문서에 추가합니다. add() 방법.

이 테이블에 테이블을 추가하려면 다른 테이블 (중첩 된 테이블)을 생성하고 다음을 사용하여 셀 객체에 전달해야합니다. add() 의 방법 Cell 수업.

다음은 표의 셀에 표를 삽입하는 단계입니다.

1 단계 : PdfWriter 개체 만들기

그만큼 PdfWriter클래스는 PDF 용 DocWriter를 나타냅니다. 이 클래스는 패키지에 속합니다.com.itextpdf.kernel.pdf. 이 클래스의 생성자는 PDF가 생성 될 파일의 ​​경로를 나타내는 문자열을받습니다.

아래와 같이 생성자에 문자열 값 (PDF를 만들어야하는 경로를 나타냄)을 전달하여 PdfWriter 클래스를 인스턴스화합니다.

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

이 유형의 객체가 PdfDocument (클래스)에 전달되면이 문서에 추가 된 모든 요소가 지정된 파일에 기록됩니다.

2 단계 : PdfDocument 개체 만들기

그만큼 PdfDocumentclass는 iText에서 PDF 문서를 나타내는 클래스입니다. 이 클래스는 패키지에 속합니다.com.itextpdf.kernel.pdf. 이 클래스를 인스턴스화하려면 (쓰기 모드에서) 클래스의 객체를 전달해야합니다. PdfWriter 생성자에.

아래와 같이 위에서 만든 PdfWriter 개체를 생성자에 전달하여 PdfDocument 클래스를 인스턴스화합니다.

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

PdfDocument 개체가 생성되면 해당 클래스에서 제공하는 각 메서드를 사용하여 페이지, 글꼴, 파일 첨부 및 이벤트 처리기와 같은 다양한 요소를 추가 할 수 있습니다.

3 단계 : Document 개체 만들기

그만큼 Document 패키지 클래스 com.itextpdf.layout자급 자족 PDF를 만드는 동안 루트 요소입니다. 이 클래스의 생성자 중 하나는 PdfDocument 클래스의 개체를받습니다.

인스턴스화 Document 클래스의 객체를 전달하여 클래스 PdfDocument 아래와 같이 이전 단계에서 생성되었습니다.

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

4 단계 : 테이블 개체 만들기

그만큼 Table클래스는 행과 열로 정렬 된 셀로 채워진 2 차원 격자를 나타냅니다. 패키지에 속합니다.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 프로그램은 iText 라이브러리를 사용하여 PDF 문서의 테이블 (중첩 된 테이블) 셀에 테이블을 추가하는 방법을 보여줍니다. 이름을 가진 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 문서를 찾을 수 있습니다.