1

我有一个如下所示的pdf。我想将该段落标记为“段落”。我对此进行了很多搜索,并且有一些方法可以从头开始创建标记的 pdf,或者将 html 内容转换为标记的 pdf,但是我在标记现有 pdf 方面没有成功。

给定坐标,我可以在 pdf 中标记内容。在此示例中,我想将段落标记为段落标记。谢谢。

**A sample pdf**

1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, 
sed diam nonum- my nibh euismod ncidunt ut laoreet dolore magna aliquam erat volutpat. 
Ut wisi enim ad minim veniam, quis nostrud exerci taon ullamcorper 
sus- cipit lobors nisl ut aliquip ex ea commodo consequat. 
4

1 回答 1

3

PDF 不是所见即所得的格式。
不是因为你看到了一段计算机程序才能看到它。

实际上,未标记的 PDF 可能如下所示(伪 PDF 代码):

转到位置 10, 700
将活动字体设置为 Times New Roman将字体大小
设置为 12
将颜色设置为黑色
绘制字形 'H'
转到坐标 10, 680
绘制字形 'Lorem'

从示例中可以看出,说明不需要按阅读顺序绘制文本。

因此,您面临的第一个挑战是识别段落。我曾在 iText 工作,我曾与 Adob​​e 的不同人交谈过。能够识别未标记的 PDF 文档中的结构并不是一个简单的问题。

一旦你有了这个结构(到“这些字形组成一行”和“这些行组成一个段落”等级别),就需要创建一个StructureTree

但是由于这个用例(重新标记 PDF)从未被认为是可能的,所以 iText(或据我所知的任何其他 PDF 库)并不是真正旨在让您(轻松)做到这一点。

标签本身是 PDF 中单独数据结构的一部分。标签可以有子代(例如表示“本段包含这些行”)。标签本身将引用属于它的对象(指令组)。

所以你可能有:

  • 这些指令(渲染一行文本)组成一个词并形成一个对象
  • 这些词对象被聚合(通过标签)成一个行对象
  • 几个行标签聚合成一个段落对象

为了全面了解,我建议阅读 PDF 规范。

于 2019-03-12T08:54:02.433 回答