我正在尝试将表格放在已在“PdfPageEventHelper”中横向旋转的 PDF 页面上:
public void onStartPage(PdfWriter writer_,Document document_) {
writer_.addPageDictEntry(PdfName.ROTATE,PdfPage.LANDSCAPE);
}
该部分似乎有效,但当我创建包含 10 列的表格时,设置宽度似乎不起作用:
float sizeY=page.getWidth();
PdfPTable table=new PdfPTable(10);
table.setTotalWidth(sizeY);
float[] widths=new float[] {1.f,1.5f,4.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f};
table.setWidths(widths);
表格宽度似乎始终是默认宽度(纵向页面宽度的 80%)。如何让表格使用横向页面宽度? TIA。
最佳答案
您使用的是旧版 iText 5。iText 5 中的许多怪癖在 iText 7 中得到了解决。
在 iText 7 中,我们有 UnitValue
的概念,它可以帮助 iText 确定某个值是绝对值(以用户单位/点为单位)还是相对值(百分比)。
在 iText 5 中,这个概念是未知的。 PdfPTable
类有两个表宽度参数:
- 宽度百分比:默认为 80%,
- 绝对宽度
默认情况下,使用百分比形式的宽度。如果你想使用绝对宽度,你需要用setLockedWidth()
方法“拉动开关”:
table.setTotalWidth(sizeY);
table.setLockedWidth(true);
我知道这很奇怪,但话又说回来,您使用的是旧 iText 版本。如果您想要更一致的 API,请使用 iText 7。这次升级非常重要。我们花费了大量的时间和金钱来改进 iText,因此看到新的 iText 开发人员选择使用 iText 5 而不是 iText 7 有点令人沮丧。
关于java - ItextPdf 宽度不会针对横向页面扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47515893/