iText,PageSize A4 - 单位

iText, PageSize A4 - units

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

所以我得到了:

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

它不起作用,可能是因为 pageWidthPageSize.A4.getWidth() 的单位不同。 当我调试它时,我在 pageWidthPageSize.A4.getWidth() returns 595.0 中得到了 900.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 完全无关的逻辑错误。