티스토리 뷰
http://itextpdf.com/
현재 최신버전 : 5.1.0
주요 클래스
com.itextpdf.text.pdf.PdfPTable
생성자는 초기값으로 열의 개수를 정한다. : PdfPTable(float[] relativeWidths), PdfPTable(int numColumns)
com.itextpdf.text.pdf.PdfPCell
소스 : 전체 프로세스 관리
document.add(table)
public void createPdf(String filename) throws DocumentException, IOException { // step 1 document = new Document(); // step 2 PdfWriter.getInstance(document, new FileOutputStream(filename)); // step 3 document.open(); document.add(new Paragraph("Table 1")); PdfPTable table = makeTable(); // step 4 document.add(table); document.add(new Paragraph("Table 2")); document.add(makeTable2()); // step 5 document.close(); }
소스 : 테이블 안에 셀 추가하기
addCell(PdfPCell cell)
addCell(PdfPTable table)
다중 테이블을 만들 수 있다.
completeRow()
현재 행이 지정한 열 개수만큼 셀이 생성되어 있지 않다면 기본 셀을 가지고 완성시킨다.
setWidthPercentage(float widthPercentage)
페이지 너비를 100으로 기준으로 하여 테이블의 너비를 widthPercentage 만큼 맞춘다.
private PdfPTable makeTable(){ PdfPTable innerTable = makeTable2(); innerTable.setWidthPercentage(50); float[] widths = {30, 20, 20, 30, 40, 100}; PdfPTable table = new PdfPTable(widths); // width 값이 설정되어 있지 않으면 다중테이블이 제대로 나타나지 않는다. table.setHorizontalAlignment(Element.ALIGN_LEFT); //row#1 table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_CENTER, Element.ALIGN_TOP, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.addCell(getTableCell(new CellInfo(2, 1, Element.ALIGN_CENTER, Element.ALIGN_TOP, 40))); table.completeRow(); //row#2 table.addCell(getTableCell(new CellInfo(1, 2, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_CENTER, Element.ALIGN_TOP, 20))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); //table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 20))); table.completeRow(); //row#3 table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_CENTER, Element.ALIGN_TOP, 40))); table.addCell(getTableCell(new CellInfo(1, 1, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 40))); table.addCell(getTableCell(new CellInfo(1, 4, Element.ALIGN_RIGHT, Element.ALIGN_MIDDLE, 50, innerTable))); table.completeRow(); table.addCell(getTableCell(new CellInfo(1, 6, Element.ALIGN_CENTER, Element.ALIGN_MIDDLE, 50, new Paragraph("height=100")))); table.completeRow(); return table ; }
소스 : 테이블 안에 들어갈 셀 만들기
addElement(Element element)
setColspan(int colspan)
setRowspan(int rowspan)
private PdfPCell getTableCell(CellInfo cellInfo){ PdfPCell cell = new PdfPCell(); cell.setRowspan(cellInfo.rowspan); cell.setColspan(cellInfo.colspan); cell.setVerticalAlignment(cellInfo.valign); cell.setHorizontalAlignment(cellInfo.halign); //cell.setPadding(0); cell.addElement(cellInfo.element); //cell.setFixedHeight(cellInfo.height); //cell.setNoWrap(true); cell.setIndent(0); return cell; }
실행 결과
댓글