我正在iText中创建文档。我需要自定义宽度,但是当它小于A4标准宽度时,应将其设置为A4标准宽度。

所以我得到了:

float pageWidth = columns.size() * 100;
if (pageWidth < PageSize.A4.getWidth()) {
       pageWidth = PageSize.A4.getWidth();
}
table.setTotalWidth(pageWidth);


而且它不起作用,可能是因为pageWidthPageSize.A4.getWidth()的单位不同。
当我调试它时,我在900.0中得到了pageWidth值,并且PageSize.A4.getWidth()返回595.0
那么,我需要更改以获得相同的单位进行比较吗?

最佳答案

900不低于595,因此pageWidth<PageSize.A4.getWidth()不正确,因此永远不会执行:pageWidth = PageSize.A4.getWidth();

pageWidth的值永不变。您有9个专栏。您乘以100,得出900。900大于595,因此pageWidth仍为900。

我认为您想要的是与您要求的相反的内容:

float pageWidth = columns.size()*100;
if(pageWidth > PageSize.A4.getWidth()){
   pageWidth = PageSize.A4.getWidth();
 }
table.setTotalWidth(pageWidth);


现在,当pageWidth不适合他的页面时,它将减少到595。

我认为您犯了一个与iText完全无关的逻辑错误。

10-07 23:42