我需要从输入的PDF文件中提取目录(TOC)。到目前为止我看到的所有代码都是指Bookmark。 TOC和书签是不相同的东西。 有没有办法使用iText或PDFBox从pdf中提取TOC。我愿意使用任何其他可用的工具。
由于
答案 0 :(得分:0)
您引用的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固有的。