pdf中的标签内容

时间:2019-03-12 05:11:20

标签: pdf itext pdfbox tagging pdf-manipulation

我有一个如下所示的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. 

1 个答案:

答案 0 :(得分:3)

PDF并非所见即所得格式。
这不是因为您看到一段计算机程序可以看到它。

实际上,未标记的PDF可能看起来像这样(伪pdf代码):

  

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

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

因此,您面临的第一个挑战是识别段落。 我曾在iText工作,曾与Adobe的许多人交谈过。 能够识别未加标签的PDF文档中的结构并不容易。

一旦您具有这种结构(达到“这些字形组成一行”和“这些线组成一个段落”等的级别),就可以创建一个StructureTree

但是,因为从未想到过这种用例(重新标记PDF),所以iText(或据我所知的任何其他PDF库)并不是真正旨在允许您(轻松)做到这一点。

标签本身是PDF内独立数据结构的一部分。 标签可以有子级(例如,表示“本段包含这些行”)。 标签本身将引用作为标签一部分的对象(指令组)。

所以您可能具有:

  • 这些指令(用于渲染一行文字)组成一个单词并形成一个对象
  • 这些单词对象(通过标签)聚合为线对象
  • 一些线标签被聚合到一个段落对象中

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