一、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时的图像处理

转载于:https://www.cnblogs.com/stronghorse/p/11519730.html

PdgCntEditor系列教程一:基础知识相关推荐

  1. pytorch打印模型参数_Pytorch网络压缩系列教程一:Prune你的模型

    Pytorch网络压缩系列教程一:Prune你的模型 本文由林大佬原创,转载请注明出处,来自腾讯.阿里等一线AI算法工程师组成的QQ交流群欢迎你的加入: 1037662480 深度学习模型取得了前所未 ...

  2. jQuery小测试系列之jQuery基础知识

    日期:2012-4-17  来源:GBin1.com 这是jQuery小测试系列第一部分:基础知识. 来源:jQuery小测试系列之jQuery基础知识

  3. python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)

    python从零到独立建设网站系列教程之基础知识篇(二)python的安装在Windows上安装python点击Download链接 然后就是按导航走点击确认,需要注意的是要把python加入到系统变 ...

  4. 原创 | k8s系列教程一:开篇

    作者:潘吉祥 欢迎加入k8s学习系列教程,在接下来的系列文章,你将可以在较短的时间内达到入门k8s的效果. k8s是什么 Kubernetes(K8S)作为Google在2014年发布的一个开源项目, ...

  5. GNN 系列:Graph 基础知识介绍

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 [导读]图卷积神经网络(Graph Convolutional Network)作为最 ...

  6. Laravel系列教程一:安装及环境配置

    免费视频教程地址https://laravist.com/series/laravel-5-basic 最近在SF上面看到越来越多的Laravel相关的问题,而作为一个Laravel的脑残粉,本来打算 ...

  7. 【Linux系列】Linux基础知识整理

    Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...

  8. Web音视频入门系列——音视频基础知识

    前言 21世纪以来,随着网络基础设施的不断完善,3G.4G.乃至现今5G网络的普及,互联网彻底改变了我们的生活.以前在家里看一部电影需要买DVD和播放机,现在直接打开浏览器,进各大视频网站就可以看了, ...

  9. Python复习系列:Python基础知识(三)

    Python基础知识(三) Python基础知识(三) (一)循环结构和选择结构 1. 条件表达式 2. 选择结构 2.1 单分支选择结构 2.2 双分支选择结构 2.3 多分支选择结构 2.4 选择 ...

  10. python是一种蟒蛇使用的语言_python树莓派系列教程一:初识大蟒蛇 python(python语言环境搭建篇)...

    作者:剑若游龙微信公众号<科学是什么东东>,欢迎关注 作者微信号,欢迎与我交流 网络爬虫,人工智能,机器学习,如何让计算机理解能力更强,如 何让你手中的机器人更人性化,更聪明? 不管是大人 ...

最新文章

  1. 商城数据库表设计介绍
  2. C++std::vector指定位置插入
  3. 度秘语音引擎app_语音机器人哪家强 度秘/小冰/Siri/小娜横向评测
  4. 1001. A+B Format (20)---------------PAT开始
  5. js中短路运算符 ||
  6. CCF201412-4 最优灌溉(100分)
  7. Kconfig中select与depends on原理
  8. 抖音有网页版吗?抖音网页版,抖音电脑版
  9. IntelRealsense升级摄像头的固件版本方法
  10. <<视觉问答>>2021:Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsu
  11. 期末安卓习题--第七章
  12. 『Python』matplotlib的imshow用法
  13. MySQL数据库常见报错案例与错误代码说明
  14. Mybatis3 继续盘!
  15. 跳槽应该果断吗_采取果断行动打击网络犯罪的重要性
  16. unity3d 九宫格切割以及如何获取切割完的图片
  17. 小米发布会猜想:平板电脑亮相 米3S缺席
  18. 戴尔灵越5370win10+Ubuntu16双系统卸载Ubuntu
  19. blah什么意思_美剧中人们口中的“ damn ”到底是什么意思?
  20. Flask学习笔记(十四)自定义模型类

热门文章

  1. mysql如何修改字段名字_mysql如何修改字段名称
  2. Park 变换 系数2/3的由来
  3. 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
  4. linux sz命令 二进制,ubuntu下rz/sz命令的安装与使用说明
  5. 用HTML5制作简单的个人简历
  6. nginx跨域配置步骤
  7. Numpy:numpy包下载并导入Pycharm的方法
  8. iOS开发工具,ios开发类库
  9. Vue 常用前端UI框架
  10. Python神经网络模型和预测