我使用方法" Annotation.getBox"从PDF小丑库获取文本中的亮点位置。通过这种方式,还可以检索螺栓或斜体文本的位置。如何避免这种情况?我想从真正的亮点中获得Retancle2D。
答案 0 :(得分:0)
不幸的是,OP无法共享示例PDF。他还只提供了一个非常小的代码片段。因此,以下只能推测...
OP在评论中提供的代码片段如下所示:
PageAnnotations annotations = page.getAnnotations();
for (Annotation annotation : annotations)
{
highlightArea = annotation.getBox();
}
因此,他将变量highlightArea
设置为给定页面注释的最后一个元素的Box
值。
highlightArea
可能包含其他内容的可能原因(有时在OP案例中包含粗体或斜体文字)而不是突出显示的文字:
对于后一种情况,在PDF规范中授予第12.5.6.10节“文本标记注释”:
QuadPoints array (必需)一个8× n 数字的数组,用于指定 n 四边形的坐标默认用户空间。每个四边形应包含注释背后的文本中的一个或一组连续单词。每个四边形的坐标应按顺序
给出x 1 y 1 x 2 y 2 x 3 y 3 < em> x 4 y 4
以逆时针顺序指定四边形的四个顶点 (见图64)。文本应相对于边缘定向 连接点( x 1 , y 1 )和( x 2 , y 2 )。
注释词典的 AP 条目(如果存在)应优先 在 QuadPoints ;见表168和12.5.5,“Appearance Streams。”
请注意,Adobe Reader不会按指定顺序排列顶点,而且它还无法正确显示指定顺序中带坐标的高光。授予stackoverflow Q&amp; A "PDF Spec vs Acrobat creation (QuadPoints)",它虽旧但仍适用于当前的Adobe Acrobat版本。
如果您的annotation
是TextMarkup
的实例,则可以使用TextMarkup
方法getMarkupBoxes
轻松检索四边形。
此外,您可以使用Annotation
方法getAppearance
检索外观流。但是,确定外观流突出显示的区域可能并非易事。