一、PdgCntEditor是什么?
二、为什么要用PdgCntEditor?
三、怎么用PdgCntEditor?

一、PdgCntEditor是什么?

这是一个目录编辑器,可以创建、编辑PDF、DjVu、PDG的目录,其中PDG支持图像版PDG目录(bookcontents.dat)和文字版PDG目录(catalog.dat),并且对于zip、uvz文件可以不解压直接编辑、保存其中的PDG目录。

当然这里首先要明确一下“目录”指的是什么。在纸质书中这个概念本身应该没有什么歧义,指的是在书籍正文之前的索引,用树形结构列出书中的章节号及其所对应的页码 。这样一方面可以看出书中的大概内容(大纲),另一方面如果想直接翻到某章节则按照所对应的页码翻就行了。但在PDF、Djvu等电子文档中,对于同样的东西却有不同的名称和作用。

对于PDF,在《PDF Reference》中与“目录”同意的词是Outline(大纲),但在中文版Acrobat界面中用的词是“书签”(bookmark),即Acrobat左侧的导航窗口,点击可以跳到本文档中的指定位置,甚至是另外一个文档中的指定位置。至于所跳位置是精确到页码还是页面中章节号所在的位置,则取决于书签中的目标(Destination)是怎么定义的:如果是页码,则只能跳到章节所在页的开头;如果是命名书签或其他,则可跳到章节号所在位置,如下图所示。

PdgCntEditor系列教程一:基础知识-LMLPHP

对于DjVu,在《Lizardtech DjVu Reference V3》中用的词包括Outline(大纲)、Navigation(导航)和书签(bookmark),在WinDjView界面中则直接是“目录”(contents),如下图所示。但与PDF不同,DjVu只能跳到制定页码,不能跳到页面中的某个位置。另外理论上说DjVu中的目录是允许跳到另外一个文件的,但在PdgCntEditor中对此进行了限制,只能跳到本文档中的指定页码,不能跳到其他文件。

PdgCntEditor系列教程一:基础知识-LMLPHP

对于PDG,文件名中用的contents、catalog都是“目录”的意思,在官方版SSREADER界面中则称为“章节目录”,如下图所示。PDG目录只能跳到同一本书的指定页码,不能跳到另外一本书或页面中的某个位置。

PdgCntEditor系列教程一:基础知识-LMLPHP

而在支持PDF、Djvu、PDG等多格式的浏览器UnicornViewer(简称UV)中,统一把以上各种文件的书签、大纲等统称为“目录”,如下图所示。

PdgCntEditor系列教程一:基础知识-LMLPHP

总之,在PdgCntEditor和本系列教程中,“目录”这个词就是对PDF、DjVu、PDG等电子文档格式中的大纲、导航、书签、目录的统称,具体表现形式就是在浏览器左侧显示的树形章节列表,点击就可以跳到指定的章节。

二、为什么要用PdgCntEditor?

目前对于PDF、DjVu、PDG都有独立的目录编辑器,但同时支持这几种格式的目前似乎只有PdgCntEditor,以后也大概不会再有。所以使用PdgCntEditor的理由也就很充分了:

  1. 一个软件搞定多种格式,不论是存储还是学习成本都是最优的。
  2. 便于在不同的电子文档格式间转换目录。例如要把DjVu格式中的目录复制到PDF中,如果不用PdgCntEditor,就需要用到两个软件:先用DjVuToy导出DjVu目录,然后用FreePic2Pdf把目录挂到PDF中。而使用PdgCntEditor的操作就简单得多:
    1. 启动PdgCntEditor,把需要复制目录的DjVu文件拖拽进来打开。
    2. Ctrl+A全选,Ctrl+C复制到剪贴板。
    3. 把需要挂目录的PDF文件拖拽进来打开。
    4. Ctrl+V复制,Ctrl+S保存,搞定收工。

当然在此之前可能还需要问一个问题:为什么要创建或编辑目录?

先说为什么要编辑目录。我这个人有点强迫症,一本电子书到手如果没有目录就算了(后面会详细说),但如果有目录却把目录做得乱七八糟,例如没有层级关系、页码不准确等,那是一定要修正过来的。偏偏我见过的PDG目录,尤其是老一点的PDG书籍的目录,按照我的标准基本上就没有不需要重新编辑的。所以强悍的下载软件在大多数情况下都能帮我下载到目录文件,有时候 却成了一种烦恼。

再说为什么一定要有目录,即使没有现成的也要自己创建。这个主要是某些强迫症患者,如果看不到详细目录,不能通过目录跳来跳去,就会觉得浑身不舒服,就算为此付出一定代价也行。某些论坛上收费或免费(其实还是在赚论坛币)的目录制作代理就不说了,我甚至见过在网上把PdgCntEditor、UV打包出售,再收费开课讲怎么用这两个软件做目录的——还真有人为此付钱。所以我才决定免费发布这个系列教程,大家如果真有需要还是学会自力更生吧,没有必要花那冤枉钱。

至于我自己,因为我一直都用UV看PDG、DjVu等文档,所以如果没有现成的目录文件,我一般情况下也就不折腾了:UV本身是支持同一个文档在多个窗口中打开的,所以打开一本书后如果发现没有目录,就通过“窗口->新建窗口”打开一个新窗口,然后定位到目录页,看看想跳到哪个章节的页码,再切换到原先的浏览窗口,在右上角的浮动条中输入页码,一回车就跳过去了。

如果用的是最新版UV,而且跳的次数也不是很频繁,则没有必要单独为目录页开一个新窗口:在正常的浏览窗口中先定位到目录页,看看需要跳到哪一页,然后点击左侧目录窗口中的页码跳转(高版本UV会自动按照页码生成目录,用页码做目录项名称),或者在右上角的浮动条中输入页码跳过去。如果跳完后想再跳回到目录页,点击工具条上的“后退”按钮即可。注意v0.41之前的UV版本在后退、前进按钮的实现逻辑上有点问题,所以这种方法只能用于最新版本的UV。

但对于扫描版电子书,则还有一个不得不创建目录的理由:文本搜索。PDF、DjVu格式的扫描版可以内含隐藏文字用于搜索,但扫描版PDG就没有这种好事,所以就只能通过搜索目录文字 、bookinfo.dat文件等来查找内容 ,这也是当年我在readfree大力鼓吹我们应该尽量丰富bookinfo.dat文件内容的原因:对于扫描版PDG,任何可用于搜索的文本都是弥足珍贵的。 在后面的教程中给出的所有PDG版例子中都含信息丰富的bookinfo.dat文件,有兴趣的可以和官方版SSREADER生成的对比一下,其实bookinfo.dat文件本身就是一个ini格式的文本文件,随便找一个文本编辑器都能打开。高版本UV可以对当前正在阅读的文件 的目录进行搜索,也可以对指定文件夹下的所有zip/uvz搜索目录、bookinfo.dat文件中的文字。 我写的免费的FindStr软件则只能对bookinfo.dat文件进行搜索。所以我一直很鄙视那些把bookinfo.dat文件中的信息全部搬到文件名中,搞得文件名超长的行为:亲,明明用很简单的文本搜索就能搞定的事情,何必非要把自己逼上绝路?

三、怎么用PdgCntEditor?

PdgCntEditor可以单独使用:

  1. 启动PdgCntEditor,把需要编辑或创建目录的文件拖过来打开。如果是PDG文件且还没有目录文件,可以从其他有目录文件的PDG书籍中复制一个bookcontents.dat文件,打开后删掉原有内容就好。
  2. 编辑完成后按Ctrl+S或工具条上的“保存”按钮即可。注意在保存前如果文件已经在Acrobat、WinDjView或其他浏览器中打开,则需要先关闭浏览器再保存,否则可能会因为文件被浏览器加锁而导致文件保存失败。

强烈建议PdgCntEditor与UV配合使用,即将PdgCntEditor与UV放在同一个文件夹下,用UV打开文件浏览,发现需要编辑或创建目录时点击UV工具条上的“编辑目录”按钮启动PdgCntEditor进行编辑。这样配合使用的好处是:

  1. 在UV中看书的的时候,如果发现没有目录,或目录中有问题,随时可以启动PdgCntEditor进行编辑,并且在UV中不需要关闭正在看的书籍。 如果PDG中没有目录,从UV启动PdgCntEditor时会自动创建空目录文件,不需要手工复制。
  2. PdgCntEditor保存以后,在UV中立刻自动刷新目录显示,因此可以及时看到目录编辑效果。

所以我见到的收费项目,就是把PdgCntEditor和D版UV打包一起卖的。

启动PdgCntEditor后缺省进入的是文字编辑界面,编辑窗口上面一排的页签都是给PDG目录用的,PDF、DjVu只在“正文页”里操作即可。通常PDG书签也没有必要在除了“正文页”之外的页签中输入内容,因为UV、Pdg2Pic都会自动补充这些项。如果非要输入,例如想把前言页中的几篇前言分开, 则需注意在各编辑窗口中页码都是从1开始的,即封面页的页码从1开始,前言页、目录页等的页码也都从1开始。

如果只是需要调整目录项的层级(缩进)关系,在树形界面中操作可能比文字界面中更直观一点,所以点击工具条上的“切换编辑模式”按钮即可从缺省的文字编辑界面切换到树形编辑界面,或切换回来。但树形编辑界面的 其他编辑功能比较弱,我自己都很少用,所以本教程就以文字编辑界面为主。

不论是什么界面,第一次使用PdgCntEditor都建议做以下事情:

  1. 点击工具条上的“字体”按钮,根据当前屏幕分辨率选择合适的字号。缺省的字号在高分辨率屏幕上可能太小。
  2. 点击工具条上的“使用说明”按钮,先把PdgCntEditor的使用说明看一遍再说。

======================================朴素的分割线===================================

由于空间有限,本系列教程的后续部分就不发到这里了,有需要的可以直接到我的网盘下载CHM格式的完整版本。后续的内容包括:

教程二:编辑已有目录
  一、基本编辑操作
  二、手工调整目录级数
  三、自动缩进
  四、利用正则表达式处理缩进
  五、加减页码
  六、一个综合性的练习例子

教程三:从头创建新目录
  一、手工录入创建目录
  二、通过搜索到的文本生成目录
  三、通过OCR生成目录(UV 0.42版之前)
  四、通过OCR生成目录(UV 0.42版之后)
  五、多栏目录OCR与OCR时的图像处理

05-16 02:48