Java 使用pdf小丑仅从pdf文档中的突出显示获取位置

Java 使用pdf小丑仅从pdf文档中的突出显示获取位置,java,annotations,pdfclown,Java,Annotations,Pdfclown,我使用PDF小丑库中的“Annotation.getBox”方法来获取文本中高光的位置。通过这种方式,还可以检索螺栓或斜体文本的位置。如何避免这种情况?我只想从real highlights中获取Retancle2D。不幸的是,OP未能共享示例PDF。他还仅仅提供了一个非常小的代码片段。因此,下面只能推测 OP在注释中提供的代码片段如下所示: PageAnnotations annotations = page.getAnnotations(); for (Annotation annotati

我使用PDF小丑库中的“Annotation.getBox”方法来获取文本中高光的位置。通过这种方式,还可以检索螺栓或斜体文本的位置。如何避免这种情况?我只想从real highlights中获取Retancle2D。

不幸的是,OP未能共享示例PDF。他还仅仅提供了一个非常小的代码片段。因此,下面只能推测

OP在注释中提供的代码片段如下所示:

PageAnnotations annotations = page.getAnnotations();
for (Annotation annotation : annotations)
{
    highlightArea = annotation.getBox();
}
因此,他将变量
highlightArea
设置为给定页面注释的最后一个元素的

highlightArea
可能包含突出显示文本以外的其他内容(OP案例中有时包含粗体或斜体文本)的可能原因:

  • 最后的注释可能不完全是高亮注释,而是其他类型的注释
  • 假设最终注释是高亮显示注释,则并非其框的所有内容都显示为高亮显示,而是仅显示QuadPoints注释字典条目中的四边形或注释的外观流定义的某些自定义区域
对于后一种情况,请参阅PDF规范中的第12.5.6.10节“文本标记注释”:

QuadPointsarray(必选)由8×n个数字组成的数组,指定默认用户空间中n个四边形的坐标。每个四边形应包含注释下方文本中的一个单词或一组相邻单词。每个四边形的坐标应按顺序给出

x1 y1 x2 y2 x3 y3 x4 y4

按逆时针顺序指定四边形的四个顶点 (见图64)。文本应以边缘为方向 连接点(x1,y1)和(x2,y2)

注释词典的AP条目(如有)应优先 超过四个点;见表168和12.5.5,“外观流”

不过,请注意,Adobe Reader没有按指定顺序排列顶点,而且它也没有按指定顺序正确显示带有坐标的高光。授予stackoverflow问答,该问答很旧,但仍适用于当前的Adobe Acrobat版本


如果您的
注释
TextMarkup
的实例,则可以使用
TextMarkup
方法
getmarkupbox
轻松检索四边形


此外,您可以使用
注释
方法
getAppearance
检索外观流。但是,确定外观流突出显示的区域可能非常重要。

请分享一些关键代码,让我们了解您的工作。请链接到一个示例PDF,我们可以用它来重现这个问题。PageAnnotations=page.getAnnotations();对于(Annotation:annotations){highlightArea=Annotation.getBox();}……我在pdf中获取页面的注释并将其置于该位置,但有时也会获取粗体或斜体文本的位置。很抱歉,我无法链接示例pdf,因为它是机密文件。然后尝试查找其他非机密文件,以允许复制此问题。如果你找不到,问题可能出在你的pdf中。谢谢你的回复。抱歉,我无法在其他文件中复制此问题。我想,问题确实出在我的pdf文件上。