问题描述
我们在 Okular 中添加书签(Bookmark),但是无法在 Foxit Reader 2.4.4、Evince 3.30.2 中显示。
我们最开始以为书签是软件自己维护的,但是随后我们发现 PDF 文件确实发生修改,因此可以排除。然后我们便查找 PDF 规范,查找相干博客文章对这个问题的说明。
该笔记将对该问题进行解释,并附加补充说明内容。注意,根据上下文,我们可能会使用 Bookmark 代指“书签”,使用 Outline 代指“大纲”。
问题原因
在 PDF 规范中,已经合并 Bookmark 和 Outline 并统称为 Outline,如 PDF 规范所述:
The outline consists of a tree-structured hierarchy of outline items (sometimes called bookmarks), which serve as a visual table of contents to display the document’s structure to the user.
而 Bookmark 没有明确的规范,导致 PDF 都有自己的实现,因此软件的行为不同(正如我们遇到的问题)。
Bookmark and Outline
什么是书签(Bookmark)?
可以比喻为现实世界中的书签,做标记,然后让我们可以快速找到书中某些页面。
什么是大纲(Outline)?
而大纲是类似书中的摘要,通常位于章节的最开始,可以然我们快速了解到书(PDF)中的内容。这种“摘要”可能是小段文本描述,也可能是个内容列表(Table of Contents)
为什么大纲与目录会被合并?
首先,要明确两个问题:
1)PDF 是种文档格式,没有“目录”的概念,我们看到的目录,是人为添加的标记(书签、大纲)
2)大纲不一定是一段文本描述,可以是章节内容概述列表(正如这篇文章右上角的“ToC”块)
现在回到我们的问题中。在阅读 PDF 文档的过程中,我们会看到自己感兴趣的内容,然后添加 Bookmark 以供之后详细阅读。那么问题是,我们做的这个标记是否应该出现在 Outline 中?有人觉得这是 Bookmark 不应该出现在 Outline 中,但是有人觉得被标记内容是文档内容的组成部分,应该作为 Outline、作为一种概要出现。
不同的观点以及没有规范导致软件的实现不同。
选择 PDF 阅读软件要考虑的问题
如果我们需要经常编辑 PDF 文档,并进行查阅,那我们可能需要选择固定的 PDF 软件(不能经常更换,基本上是不能换),否则很可能会出现书签、标记无法查看的情况。
如果我们需要经常阅读 PDF 文档,则没有过多限制。
相关文章
「Linux」- PDF 转 TXT
「Linux」- 阅读 PDF 文件(常用查看阅读工具)
参考文献
PDF - Wikipedia
Understanding the Difference between Bookmarks and the Outline in a PDF | Inside PSPDFKit