iTextPdf:动态更改单元格宽度

问题描述:

我正在使用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; 
} 

我找到了答案。

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

此代码分摊列在相对比例的值括号内的水平空间(例如栏A是1/2列B和1/3山口C的尺寸的大小)。

的这个位置很好的例子:http://www.kodejava.org/examples/833.html

还是要谢谢你!