zoukankan      html  css  js  c++  java
  • PdgCntEditor系列教程一:基础知识

    一、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)是怎么定义的:如果是页码,则只能跳到章节所在页的开头;如果是命名书签或其他,则可跳到章节号所在位置,如下图所示。

     

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

     

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

     

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

     

    总之,在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时的图像处理

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/stronghorse/p/11519730.html
Copyright © 2011-2022 走看看