【发布时间】:2011-03-16 14:09:13
【问题描述】:
是否可以使用 iText 找到文本位置?我看到RenderListener 界面有beginTextBlock、renderText 和endTextBlock,但它们似乎对查找文本的位置没有用处。如果 iText 无法实现:是否存在另一个能够做到这一点的开源 Java 库?
【问题讨论】:
-
文本的位置是什么意思?
是否可以使用 iText 找到文本位置?我看到RenderListener 界面有beginTextBlock、renderText 和endTextBlock,但它们似乎对查找文本的位置没有用处。如果 iText 无法实现:是否存在另一个能够做到这一点的开源 Java 库?
【问题讨论】:
传递给renderText() 的TextRenderInfo 参数包含该信息。具体来说,您需要查看来自getBaseLine() 和getAscentLine() 的返回值。
这两条线段位于用户空间(您在页面上看到的)。它们定义了当前文本块的边界框。展示它的方式有点愚蠢,但它确实有效。
请注意,将端点填充到Rectangle 中可能不起作用,具体取决于文本的旋转方式。如果你不担心轮换,那没什么大不了的。如果是,则需要开始使用 trig 进行胡闹。玩得开心。
【讨论】: