2012-08-16 3 views
3

iTextPdf를 사용하여 PDF 용 테이블을 작성하고 있습니다. 각 페이지에는 9 ~ 15 개의 열이 있으며 런타임까지는 정확한 번호가 없습니다. iTextPDF는 페이지 너비에 걸쳐 동일한 크기의 열을 만드는 것이 좋습니다. 하지만 알아낼 수없는 것은 너비가 다른 열을 만드는 방법입니다.iTextPdf : 셀 너비를 동적으로 변경하기

페이지 너비 전체에 걸쳐 있기 때문에 고정 열 너비를 사용할 수 없습니다. 따라서 9 개의 열을 쓸 때 각 열은 반드시 12 또는 15 개의 열을 쓸 때보 다 넓어집니다. 고정 된 것은이 열 너비 간의 관계입니다. 예를 들어, 나는 열 A가 항상 열 B의 너비의 75 %가된다는 것을 알고 있으며, 열 C의 너비의 항상 50 %입니다. 모든 열에 대해이 값을 결정할 수 있습니다.

누구나이 열의 크기를 적절히 조정하기 위해 페이지를 나누는 방법에 대한 아이디어가 있습니까? 동일한 크기의 열을 만드는 데 사용하는 코드는 다음과 같습니다. 내가 아니라 고정 된 값으로, 열 너비를 변경하는

cell.setColspan(1);

근처 끝으로 다른 뭔가가 필요합니다. 고맙습니다!

public static void newPDF() throws DocumentException, IOException { 
    PdfWriter writer; 
    Document document; 
    int cols = 9; //can be either 9, 12, or 15 
    document = new Document(); 
    writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf")); 
    document.open(); 
    document.add(createTable(cols)); 
    document.close(); 
} 

public static PdfPTable createTable(int cols) { 
     PdfPTable table = new PdfPTable(cols); 
     PdfPCell cell; 

     for (int i = 0; i < cols; i++) { 
      ph = selector.process("some text"); 
      cell = new PdfPCell(ph); 
      cell.setColspan(1); //repeated 9, 12, or 15 times 
      table.addCell(cell); 
     } 
     return table; 
} 

답변

8

답변을 찾았습니다.

float[] columnWidths = new float[] {10f, 20f, 30f, 10f}; 
table.setWidths(columnWidths); 

이 코드 (예를 들어, 대장균, A는 COL B와 1/3 COL (C)의 사이즈의 크기 1/2) 괄호 안의 값에 대한 상대적인 비율의 열 수평 공간을 배분한다. 이 여기의

좋은 예 : 어쨌든 http://www.kodejava.org/examples/833.html

감사합니다!