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的理由也就很充分了:
- 一个软件搞定多种格式,不论是存储还是学习成本都是最优的。
- 便于在不同的电子文档格式间转换目录。例如要把DjVu格式中的目录复制到PDF中,如果不用PdgCntEditor,就需要用到两个软件:先用DjVuToy导出DjVu目录,然后用FreePic2Pdf把目录挂到PDF中。而使用PdgCntEditor的操作就简单得多:
- 启动PdgCntEditor,把需要复制目录的DjVu文件拖拽进来打开。
- Ctrl+A全选,Ctrl+C复制到剪贴板。
- 把需要挂目录的PDF文件拖拽进来打开。
- 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可以单独使用:
- 启动PdgCntEditor,把需要编辑或创建目录的文件拖过来打开。如果是PDG文件且还没有目录文件,可以从其他有目录文件的PDG书籍中复制一个bookcontents.dat文件,打开后删掉原有内容就好。
- 编辑完成后按Ctrl+S或工具条上的“保存”按钮即可。注意在保存前如果文件已经在Acrobat、WinDjView或其他浏览器中打开,则需要先关闭浏览器再保存,否则可能会因为文件被浏览器加锁而导致文件保存失败。
强烈建议PdgCntEditor与UV配合使用,即将PdgCntEditor与UV放在同一个文件夹下,用UV打开文件浏览,发现需要编辑或创建目录时点击UV工具条上的“编辑目录”按钮启动PdgCntEditor进行编辑。这样配合使用的好处是:
- 在UV中看书的的时候,如果发现没有目录,或目录中有问题,随时可以启动PdgCntEditor进行编辑,并且在UV中不需要关闭正在看的书籍。 如果PDG中没有目录,从UV启动PdgCntEditor时会自动创建空目录文件,不需要手工复制。
- PdgCntEditor保存以后,在UV中立刻自动刷新目录显示,因此可以及时看到目录编辑效果。
所以我见到的收费项目,就是把PdgCntEditor和D版UV打包一起卖的。
启动PdgCntEditor后缺省进入的是文字编辑界面,编辑窗口上面一排的页签都是给PDG目录用的,PDF、DjVu只在“正文页”里操作即可。通常PDG书签也没有必要在除了“正文页”之外的页签中输入内容,因为UV、Pdg2Pic都会自动补充这些项。如果非要输入,例如想把前言页中的几篇前言分开, 则需注意在各编辑窗口中页码都是从1开始的,即封面页的页码从1开始,前言页、目录页等的页码也都从1开始。
如果只是需要调整目录项的层级(缩进)关系,在树形界面中操作可能比文字界面中更直观一点,所以点击工具条上的“切换编辑模式”按钮即可从缺省的文字编辑界面切换到树形编辑界面,或切换回来。但树形编辑界面的 其他编辑功能比较弱,我自己都很少用,所以本教程就以文字编辑界面为主。
不论是什么界面,第一次使用PdgCntEditor都建议做以下事情:
- 点击工具条上的“字体”按钮,根据当前屏幕分辨率选择合适的字号。缺省的字号在高分辨率屏幕上可能太小。
- 点击工具条上的“使用说明”按钮,先把PdgCntEditor的使用说明看一遍再说。
======================================朴素的分割线===================================
由于空间有限,本系列教程的后续部分就不发到这里了,有需要的可以直接到我的网盘下载CHM格式的完整版本。后续的内容包括:
教程二:编辑已有目录
一、基本编辑操作
二、手工调整目录级数
三、自动缩进
四、利用正则表达式处理缩进
五、加减页码
六、一个综合性的练习例子
教程三:从头创建新目录
一、手工录入创建目录
二、通过搜索到的文本生成目录
三、通过OCR生成目录(UV 0.42版之前)
四、通过OCR生成目录(UV 0.42版之后)
五、多栏目录OCR与OCR时的图像处理
PdgCntEditor系列教程一:基础知识的更多相关文章
- NGUI系列教程一
NGUI是Unity的一个插件,使用它来制作你的游戏UI必定将事半功倍.为什么这么说呢?首先我们说说GUI与NGUI的区别,GUI是Unity自带的绘制界面工具,它的成像原理是基于表层的,所以执行效率 ...
- CRL快速开发框架系列教程一(Code First数据表不需再关心)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Spring Ioc源码分析系列--Ioc的基础知识准备
Spring Ioc源码分析系列--Ioc的基础知识准备 本系列文章代码基于Spring Framework 5.2.x Ioc的概念 在Spring里,Ioc的定义为The IoC Containe ...
- Laravel系列教程一:安装及环境配置
免费视频教程地址https://laravist.com/series/laravel-5-basic 最近在SF上面看到越来越多的Laravel相关的问题,而作为一个Laravel的脑残粉,本来打算 ...
- 【Linux系列】Linux基础知识整理
Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...
- cocos2d-x-lua基础系列教程一(hello lua)
myscene.lua function ERROR_TRACBACK(msg) print (==========) print ("lua error is "..tostri ...
- .NET面试题系列[3] - C# 基础知识(1)
1 类型基础 面试出现频率:基本上肯定出现 重要程度:10/10,身家性命般重要.通常这也是各种招聘工作的第一个要求,即“熟悉C#”的一部分.连这部分都不清楚的人,可以说根本不知道自己每天都在干什么. ...
- 前端系列之CSS基础知识概述
1.什么是DIV (1).div就是html一个普通标签,进行区域划分.特性:独自占一行.独自不能实现复杂效果.必须结合css样式进行渲染. (2).div通常其是块级元素 (3).div是定义文档中 ...
- Objective-C系列总结之基础知识
//第一个程序示例 #import <Foundation/Foundation.h> int main(int argc,const char * argv[]) { @autorele ...
随机推荐
- OpenLayers绘制地图,无需外网,内网访问,提高安全性。
1. 首先引入ol ,npm i --save ol 2. 创建地图 一个地图初步就这样完成了. 3. 怎么与后台进行交互? 具体参考文档:http://weilin.me/ol3-primer/ch ...
- centos7中mysql不能输入中文问题的解决
首先在数据库里面输入 mysql> show variables like'%char%' -> ; +--------------------------------------+--- ...
- Ajax爬取百度图片
目标网址 分析网址:http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2& ...
- 记一次用Linux curl命令获取Django url返回值异常的问题
问题描述: curl 检测 URL 返回值以判断服务器是否正常 原命令:curl -I -m 10 -o /dev/null -s -w %{http_code} --insecure $url 问题 ...
- 关于手机端在同一个Grid中使用不同的布局展现即Layout的使用
标题可能说的不是很清楚,我举个栗子好了,现在你正在写手机端的一个审批模块,这个模块要求能够展示所有待审批的信息 比如出差申请,请假申请,加班申请,以及报销申请 那么我的思路有两个 1:建立一个Tab页 ...
- 2018-2-13-win10-uwp-分治法
title author date CreateTime categories win10 uwp 分治法 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:2 ...
- kali Linux 入门(一)
一.描述 1.基于Debian Linux 发行版 2013年3月13日 2.包含约600个安全工具 3.定制 安全稳定的内核 4.前身是BackTrack(2013年停止维护) 5.官方机构:Off ...
- 使用eclipse创建Spring Boot项目
环境介绍 1.jdk1.8 2.eclipse 3.maven 3.5.0 创建项目 eclectic 左上角 file -> new -> maven project 出现下图默认就好, ...
- vue代理配置之二--dev方式启动的index.js配置
'use strict' // Template version: 1.3.1 // see http://vuejs-templates.github.io/webpack for document ...
- SecureCRT 多窗口 批量操作Linux
1.打开多个窗口 2.Window --> Tile Verically将窗口并列展开 3.右击空白部分选择弹出下方的命令窗口 4.右击命令行窗口,选择发送命令至所有窗口 5.完成