如何在PDF页面上找到最后一个对象的位置和高度?没有页脚。我想在最后一项下方标记模板。不在页脚中,而是直接在最后一行文本下方。文本的数量可能会有所不同,所以我需要计算页面底部是否有足够的空间来插入我的模板。
感谢您的帮助, 亚伦
答案 0 :(得分:1)
要确定给定页面上的文本和(位图)图像的结束位置,请查看动作中的iText,第2版示例ShowTextMargins,它解析PDF并添加显示文本的矩形和(位图)图像边缘。
PdfReader reader = new PdfReader(src);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
TextMarginFinder finder;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
finder = parser.processContent(i, new TextMarginFinder());
PdfContentByte cb = stamper.getOverContent(i);
cb.rectangle(finder.getLlx(), finder.getLly(),
finder.getWidth(), finder.getHeight());
cb.stroke();
}
stamper.close();
reader.close();
请注意,此机制忽略矢量图形(通常也用于加下划线的文本,彩色背景和装饰性分隔线),因为底层的iText解析器包仍然存在(截至iText版本5.4) .5)忽略它们。
更新:从版本5.5.6开始,iText扩展了解析器包,还包括矢量图解析。这允许扩展原始TextMarginFinder
类,实现this answer中提供的新ExtRenderListener
方法,从而产生类似的类MarginFinder
,它不仅考虑文本,还考虑其他一种内容,例如位图图像和矢量图形。