티스토리 뷰

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;
    }

실행 결과

댓글