【问题标题】:Get position only from highlights in pdf document with PDF Clown使用 PDF Clown 仅从 pdf 文档中的亮点中获取位置
【发布时间】:2016-12-11 16:15:21
【问题描述】:

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

【问题讨论】:

  • 请分享一些关键代码,让我们了解您的工作。请链接到我们可以重现问题的示例 PDF。
  • PageAnnotations 注释 = page.getAnnotations(); for (Annotation annotation : annotations) { highlightArea = annotation.getBox();} ...我在 pdf 中获取页面的注释并占据位置,但有时我也会得到粗体或斜体文本的位置。抱歉,我无法链接示例 pdf,因为它是机密文件。
  • 然后尝试查找允许重现问题的其他非机密文件。如果您找不到任何内容,则问题可能出在您的 pdf 本身。

标签: java annotations pdfclown


【解决方案1】:

不幸的是,OP 未能分享示例 PDF。他也仅仅提供了一个很小的代码片段。因此,以下只能推测...

OP 在评论中提供的代码片段如下所示:

PageAnnotations annotations = page.getAnnotations();
for (Annotation annotation : annotations)
{
    highlightArea = annotation.getBox();
}

因此,他将变量highlightArea 设置为给定页面注释的最后一个元素的Box 值。

highlightArea 可能包含除突出显示文本之外的其他内容(在 OP 的情况下,有时是一些粗体或斜体文本)的可能原因:

  • 最后的注释可能完全不是高亮注释,而是其他类型的注释。
  • 假设最终注解为高亮注解,并非其框的所有内容都显示为高亮,而仅显示QuadPoints注解字典条目中的四边形或由外观流定义的一些自定义区域注释。

对于后一种情况,请参阅 PDF 规范中的第 12.5.6.10 节“文本标记注释”:

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

x1y1x2y2x3y3x4y4

按逆时针顺序指定四边形的四个顶点 (参见图 64)。文本应相对于边缘定向 连接点 (x1, y1) 和 (x 2, y2).

注释字典的 AP 条目(如果存在)应优先 超过 QuadPoints;请参见表 168 和 12.5.5,“外观流”。

但请注意,Adobe Reader 不会按照指定的顺序对顶点进行排序,而且它不会按照指定的顺序正确显示带有坐标的高光。授予 stackoverflow Q&A "PDF Spec vs Acrobat creation (QuadPoints)" 这是旧的但仍然适用于当前的 Adob​​e Acrobat 版本。


如果您的annotationTextMarkup 的一个实例,您可以使用TextMarkup 方法getMarkupBoxes 轻松检索四边形。

此外,您可以使用Annotation 方法getAppearance 检索外观流。不过,确定外观流突出显示的区域可能并非易事。

【讨论】:

  • 感谢您的回复。抱歉,我无法在另一个文件中重现该问题。我认为,问题出在我的 pdf 文件上。
猜你喜欢
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
相关资源
最近更新 更多