我正在尝试在我的'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。
答案 0 :(得分:1)
你正在使用旧的iText 5. iText 5中有很多怪癖在iText 7中解决。
在iText 7中,我们有UnitValue
的概念,它可以帮助iText确定某些东西是绝对值(用户单位/点数)还是相对值(百分比)。
在iText 5中,这个概念未知。 PdfPTable
类有两个表格宽度参数:
默认情况下,使用宽度作为百分比。如果你想使用绝对宽度,你需要"拉开关"使用setLockedWidth()
方法:
table.setTotalWidth(sizeY);
table.setLockedWidth(true);
我知道这很奇怪,但话说回来,你正在使用旧 iText版本。如果您想要更一致的API,请使用iText 7.升级非常重要。我们花费了大量的时间和金钱来改进iText,所以看到新的iText开发人员选择使用iText 5而不是使用iText 7感到非常沮丧。