【发布时间】:2015-07-03 12:16:56
【问题描述】:
我需要从输入的 PDF 文件中提取 目录 (TOC)。到目前为止我看到的所有代码都是指书签。 TOC 和书签不是一回事。 有没有办法使用 iText 或 PDFBox 从 pdf 中提取 TOC。我愿意使用任何其他可用的工具。
谢谢
【问题讨论】:
标签: pdf itext pdfbox tableofcontents
我需要从输入的 PDF 文件中提取 目录 (TOC)。到目前为止我看到的所有代码都是指书签。 TOC 和书签不是一回事。 有没有办法使用 iText 或 PDFBox 从 pdf 中提取 TOC。我愿意使用任何其他可用的工具。
谢谢
【问题讨论】:
标签: pdf itext pdfbox tableofcontents
您引用的 PDF 的目录只不过是页面上的普通文本。因此,您唯一的选择是提取包含 TOC 的页面上的文本,例如使用 ExtractPageContentSorted2 示例中显示的代码:
public void parsePdf(String pdf, String txt) throws IOException {
PdfReader reader = new PdfReader(pdf);
PrintWriter out = new PrintWriter(new FileOutputStream(txt));
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
out.println(PdfTextExtractor.getTextFromPage(reader, i));
}
out.flush();
out.close();
reader.close();
}
本示例提取 PDF 中所有页面的文本,并将其写入路径为 txt 的文件中。如果您希望此代码仅提取带有目录的页面,则必须更改 for 循环中的页码,例如:
for (int i = startTOC; i <= endTOC; i++)
其中startTOC 是TOC 开始的页码,endTOC 是TOC 结束的页码。 您需要提供这些数字,因为 PDF 文档本身并不知道这些页面上的内容实际上是目录。 PDF 只知道页面包含文本和渲染路径,可能还有一些图像。这是 PDF 所固有的。
【讨论】: