3

我正在使用 iTextPdf 为 pdf 构建一个表格。每个页面将有 9 到 15 列,确切的数字直到运行时才知道。iTextPDF 非常适合在页面宽度上创建相同大小的列。但我不知道如何创建不同宽度的列。

我不能使用固定的列宽,因为我想跨越整个页面宽度。因此,当写入 9 列时,每列必然比写入 12 或 15 列时更宽。固定的是这些列宽之间的关系。举个例子,我知道 A 列的宽度总是 B 列的 75%,而 B 列的宽度总是 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;
}
4

1 回答 1

9

我找到了答案。

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

此代码按照括号内的值的相对比例分配列的水平空间(例如,col A 是 col b 大小的 1/2 和 col C 大小的 1/3)。

很好的例子:http ://www.kodejava.org/examples/833.html

不管怎么说,还是要谢谢你!

于 2012-08-16T22:50:30.910 回答