如何打印pdf的目录?

Cra*_*Man 2 pdf

我有一个 pdf kinda-book 文件,它有一个目录作为文件中的元数据,但它们没有列在文档的任何页面上。我想打印带有目录的文件,或者单独打印目录。我怎样才能做到这一点?

der*_*ert 8

pdftk可以用,例如,转储“书签” pdftk file.pdf dump_data_utf8;你会得到一堆隐藏在其余元数据中的书签*条目。grep可以只给他们:

$ pdftk whatever.pdf dump_data_utf8 | grep ^Bookmark
BookmarkBegin
BookmarkTitle: Cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Agenda
BookmarkLevel: 1
BookmarkPageNumber: 2
Run Code Online (Sandbox Code Playgroud)

“级别”是缩进级别(因此级别 2 是从级别 1 缩进的)。您可以将其格式化为您想要打印的任何格式。

这是一个 Perl 脚本,用于以 LaTeX 格式打印它,然后可以将其提供给例如pdflatex获取 PDF 文件(您甚至可以使用 pdftk 将其添加到原始 PDF 中)。请注意,这也可以在https://gitlab.com/derobert/random-toys/blob/master/pdf/pdftoc-to-latex(如果您想改进它,这是发送拉取请求的好地方):

$ pdftk whatever.pdf dump_data_utf8 | grep ^Bookmark
BookmarkBegin
BookmarkTitle: Cover
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Agenda
BookmarkLevel: 1
BookmarkPageNumber: 2
Run Code Online (Sandbox Code Playgroud)

下面是如何使用这个脚本:

  1. 下载https://gitlab.com/derobert/random-toys/raw/master/pdf/pdftoc-to-latex?inline=false并另存为pdftoc-to-latex.pl
  2. 通过chmod +x /path/to/pdftoc-to-latex.pl在终端中运行使其可执行
  3. 安装Latex::Encode perl 包。在 Debian Stretch 上,您可以通过sudo apt install liblatex-encode-perl. 在其他发行版上,您可能需要做其他事情。
  4. 像这样运行脚本: /path/to/pdftoc-to-latex.pl /path/to/pdf/file.pdf > /path/to/where/you/want/tex/file.tex
  5. 使用您最喜欢的 LaTeX 编译器(例如,cd /path/to/where/you/want/tex; pdflatex file.tex)将生成的 tex 文件编译为 pdf