gpt4 book ai didi

java - iTextPdf:动态改变单元格宽度

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:06 27 4
gpt4 key购买 nike

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

最佳答案

我找到了答案。

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

谢谢!

关于java - iTextPdf:动态改变单元格宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com