2011-04-13 98 views
0

我必须将多个PDF文档合并到一个PDF文档中。除此之外,我必须生成TOC。原始文档将包含具有特定样式的文本(如H1)。这个特殊文本成为TOC的一部分。PDF itext TOC代

已使用iText合并多个PDF文件。我无法找到上的示例/ API解析文档以查找所有具有H1样式的内容。 生成TOC是下一个挑战。

回答

0

你不知道。 PDF文件没有样式。他们有“当前图形状态”,其中包括:

  • 当前转换矩阵(CTM)。
  • 行程&填充颜色
  • 剪辑路径
  • 字体大小&
  • 采空区的其他文本状态的东西(字符间距,字间距,行距,文本渲染模式...)
    • 包括与CTM结合的单独的文本转换矩阵。

所以首先你必须追踪所有这些东西(这iText的能为你主要是做)。然后,您必须确定“H1”文本有多大,并锁定所有尺寸为屏幕大小的文本,并考虑CTM,文本矩阵和字体大小(iText会再次为您提供帮助,IIRC )。

只是为了让生活更加激动人心,像你自己一样,你看的文本完全可能不是文本。它可能是路径或位图......在这一点上你需要OCR,而且我认为你不会在OCR的大小信息方面获得太多。

您需要编写一个TextRenderListener来确定给定文本的最终大小(以及它是否是最后一部分的最后一部分)并过滤掉所有太小的东西。然后,您将根据您找到的文本构建您的TOC。

+0

感谢马克的回应。是否可以将PDF转换为DOCX,然后解析DOCX,获得具有样式H1的文本,然后再次生成PDF。 – Abhay 2011-04-18 04:11:31

+0

理论性的DOCX转换器遇到了同样的问题。一些体面的PDF-> X转换器存在,但它们倾向于相当$$$。 Acrobat Pro可能会管理某些可接受的内容 – 2011-04-18 16:13:05