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 문서를 찾을 수 있습니다.