如何从PDF中提取书签?

use*_*099 1 java pdf pdf-parsing

当我在 PDF 查看器中打开 PDF 时,我会在实际文档的左侧看到一系列书签。那里显示的信息似乎并未成为文档实际内容的一部分:它没有打印出来,也没有出现在特定页面上。

如何使用 Java 提取这些书签?

Kur*_*fle 6

OP 问题要求使用 Java 提供解决方案。

然而,对于必须处理 PDF 的人来说,这可能是一个更普遍感兴趣的话题。所以我的回答提供了一个命令行解决方案:mutool.

mutool是与MuPDF 查看器软件捆绑在一起的命令行实用程序,由提供 Ghostscript 的同一家公司编写。

其最新版本包括show子命令,可用于打印outlines(在 PDF 技术术语中,OP 和 Adob​​e UI 称之为“书签”),以及 PDF 中其他感兴趣的特定项目:

$ mutool show PDF32000_2008.pdf outlines

  Document management — Portable document format — Part 1: PDF 1.7  1
  Contents Page 3
  Foreword  6
  Introduction  7
  1 Scope   9
  2 Conformance 9
    2.1 General 9
    2.2 Conforming readers  9
    2.3 Conforming writers  9
    2.4 Conforming products 10
  3 Normative references    10
  4 Terms and definitions   14
  5 Notation    18
  6 Version Designations    18
  7 Syntax  19
    7.1 General 19
    7.2 Lexical Conventions 19
        7.2.1 General   19
        7.2.2 Character Set 20
        7.2.3 Comments  21
  [....]
Run Code Online (Sandbox Code Playgroud)

(输出已缩短。)原始 PDF 文档(官方 PDF-1.7 规范)包含此页面作为 ToC:

原始文件

您可以清楚地看到,/Outlines内容与包含的目录页面有何不同(但相似)。

以下是大纲(“书签”)在 Adob​​e Reader XI 中的显示方式:

在此处输入图片说明