我的其他答案集中于原始问题,即如何在页面上以给定的最小尺寸找到可用空间。
由于已经编写了该答案,因此OP提供了尝试利用该原始答案的代码。
这个答案处理该代码。
该代码有很多缺点。
- 页面上可用空间的选择取决于文档中的页面数。
原因是在页面循环开始时找到的:
for(int i = 1; i <= n; i++){ Collection<Rectangle2D> rectangles = find(reader, 300, 100, n, stamper); ...OP肯定意味着
i,不
n存在。该代码始终会在最后一个文档页面上寻找可用空间。
- 矩形比应该的低。
其原因可以在矩形坐标的检索和使用中找到:
x = (float) best.getX(); y = (float) best.getY(); ...getFooterTable(i, n).writeSelectedRows(0, -1, x, y, stamper.getOverContent(i));
该
Rectangle2D方法
getX和
getY返回的坐标 下 左矩形的角落;
的
PdfPTable方法
writeSelectedRows,在另一方面,要求 上 左矩形角落。因此,
getMaxY应使用代替
getY。



