PdgCntEditor: To edit PDF, DjVu and PDG contents in text or tree mode.

作者:马健
邮箱:stronghorse_mj@hotmail.com
主页:老马的原创空间

FAQ
使用说明
    一、软件安装/删除
    二、软件使用
        命令行参数
        一般性说明
        文本模式
        树形模式
        编解码模式
        应用示例
        PDF中的特殊目标
附录A 鸣谢
附录B 正则表达式语法
附录C 版本更新记录

FAQ

Q:PdgCntEditor是什么?
A:这是一个目录文件编辑器,具有下列特点:

  1. 在文件格式上,支持PDF、DjVu、PDG(包括bookcontents.dat和catalog.dat)。PDF不支持加密PDF。
  2. 在编辑界面上,提供文本、树形两种编辑模式,以满足不同的需要。
  3. 提供PDG目录编解码功能,有兴趣的用户可以用它对PDG目录文件内部数据格式进行研究。
  4. 可以不解包直接编辑zip文件中的PDG目录文件,编辑结果直接存入zip。
  5. 能够与UnicornViewer(UV)联动,从UV中启动以编辑当前正在阅读的文件目录,存盘后会自动通知UV刷新目录。
  6. 支持符合FreePic2Pdf接口文件格式的目录文件(FreePic2Pdf_bkmk.txt),并能从DjVuToy、FreePic2Pdf中启动,对PDF、DjVu目录文件进行编辑。
  7. 除常规的查找、替换、编辑等功能外,还提供“总在最上面”、“半透明”等功能,方便对照原文对目录进行编辑。
  8. 提供繁体、简体转换功能,方便使用。
  9. 文本编辑模式下支持正则表达式替换,采用微软为VBScript、JavaScript准备的正则表达式引擎,因此语法与ASP、JSP中的正则表达式语法一致。

注意:使用本软件的一切后果(包括法律后果)由使用者自行承担,使用前请先对需要编辑的文件做好备份,以免后悔。 尤其对于PDF文件,不保证编辑后还能正常打开。

Q:为什么要开发PdgCntEditor?
A:理由如下:

  1. PDG文件的原版目录经常有错,最常见的错误是:目录没有按章节进行分级、目录中存在错别字、目录项页码错误。这些错误均可用PdgCntEditor轻松修正。
  2. 很多PDG书籍本身是没有目录文件的,这时可以用PdgCntEditor创建。
  3. DjVuToy、FreePic2Pdf以前一直缺乏一个好用的目录编辑器,现在可以用这个了。

Q:PdgCntEditor收费吗?
A:PdgCntEditor是一个“友情软件”(Friendware),用户在承诺不用于商业目的,也不对文件及其附件进行任何更改的条件下,不需要为使用该软件付任何费用,最多是在BBS上看到我发帖子灌水时(我的ID一般是strnghrs),进去捧个人场,作为友情回报;或者在年节时发个email问声好(所以叫“友情软件”)。我承诺绝不在程序中暗藏任何商业广告、木马,但不承诺为使用PdgCntEditor的后果承担任何责任。如果您需要将它用于商业目的,或加入您的网站,请与我联系,否则保留追究一切责任的权利。

Q:文本编辑模式有什么特点?
A:在文本编辑模式下,用制表符(TAB)构成的缩进来表示目录分级关系。文本编辑器仿照一般IDE设计,支持TAB、Shift+TAB和回车自动缩进,熟悉IDE的用户可能会喜欢。
文本编辑模式比较适合对目录文字、页码进行大量录入、编辑的情况,如为没有目录文件的书籍创建目录。

Q:树形编辑模式有什么特点?
A:树形编辑模式用图形化的界面展示目录分级关系,并且可以折叠、展开分级目录,适合一般人员使用。
树形编辑模式下调整目录分级比较直观,但是文字、页码编辑不如文本模式方便。因此如果是创建新目录文件,可以先进入文本模式,录入或粘贴文字、页码信息,然后再切换到树形模式调整目录分级。

Q:编解码功能有什么特点?
A:编解码模式主要有两个功能:
1、将目录文件解码成文本文件。bookcontents.dat解码后的内容其实就是正版超星浏览器生成的Contents.dat内容,catalog.dat解码后的内容则是一个标准XML文件。
2、将文本文件编码成目录文件。文本文件内容同上。
这个功能的作用包括:
1、如果PdgCntEditor生成的目录文件不幸在超星浏览器中打不开,可以解码后手工修正,然后再编码成目录文件。
2、可以供感兴趣的人士研究PDG目录文件的格式。其实编码过程就是把文本文件用zlib进行压缩,再加上一个文件头;解码过程则反之。多看上几次,说不定你自己都能写一个PDG目录编辑器了。

Q:为什么“透明度”功能在Windows 95/98/Me下无效?
A:因为这项技术从Windows 2000开始支持。

使用说明

一、软件安装/删除

本软件安装非常简单:创建一个目录,用WinZip或WinRAR将下载下来的ZIP包解压缩到该目录即可。

本软件的删除也很简单:直接删除从ZIP包中解压缩出来的所有文件及运行过程中生成的文件即可。

ZIP包中包括下列文件:

  1. PdgCntEditor.exe。这是软件的主程序。
  2. PdgCntEditor.htm。本帮助文件。

如果您下载到的ZIP包中还包括其它文件,毫无疑问不是我放进去的,有广告或木马之嫌疑,请立即删除。

另外程序运行过程中还会生成以下文件:

  1. PdgCntEditor.ini。这个是参数保存文件,第一次更改参数后生成。退出PdgCntEditor,删除此文件,再重启PdgCntEditor,即可恢复缺省参数。
  2. PdgCntEditor.pwd。ZIP文件口令表,纯文本文件。
  3. PdgCntEditor.rpx。正则表达式保存文件,如果在正则表达式输入界面中点击“保存”,则会生成此文件。

二、软件使用

命令行参数

软件命令行参数如下:

PdgCntEditor [-m:text|tree|codec] [path]

-m: 指定编辑模式,可以是文本(text)、树形(tree)或编解码(codec),缺省为文本。
path:要编辑的文件路径,由盘符、文件夹、文件名三部分构成。可以直接指定zip文件,软件自动搜索其中的目录文件。如果路径中包含空格,需要在路径前后加半角双引号。

例如:

PdgCntEditor -m:codec

将以编解码模式启动本软件。

PdgCntEditor -m:tree "D:\mm\Windows Server 2003技术内幕 基础篇.zip"

将以树形编辑模式打开指定的zip文件。

一般性说明

1、工具条按钮提示

本软件的大部分功能体现在工具条按钮上,将鼠标移动到按钮上停止不动约1秒,将自动弹出按钮功能提示。

2、内容更改提示

如果目录内容已被改变,窗口标题条名称后面会加一个星号,在退出时会提示用户保存。

3、通用快捷键

功能 快捷键
退出程序 ESC
Ctrl+O 打开文件
Ctrl+S 保存
Ctrl+T 切换编辑模式
Ctrl+Home 移到文件头
Ctrl+End 移到文件尾
Shift+箭头键 选择区域
Ctrl+A 全选
TAB 所选内容右移一栏
Shift+TAB 所选内容左移一栏
Del 删除所选内容
Ctrl+F 查找
Ctrl+R 替换
F1 打开本帮助文件

PDF选项

PDF选项对PDF目录进行控制,可以在打开PDF后进行设置,存盘时生效。由于PdgCntEditor的PDF目录编辑功能是从FreePic2Pdf搬过来的,因此选项与FreePic2Pdf接口文件中的选项类似,可以参考FreePic2Pdf接口说明。另外PdgCntEditor对PDF的控制能力相对较弱,没有分段页码等功能。如果需要这些功能,请使用FreePic2Pdf。

选项 说明
基准页 目录基准页码。作用见后面叙述,此值必须大于等于1。此值为绝对页码:从PDF文件的第一页(绝对页码为1)开始连续编排。
点击目录后页面缩放 点击目录项后,在PDF浏览器中页面的显示比例。
打开PDF时显示目录 如果此选项被选中,在PDF文件浏览器中打开PDF文件即显示目录,否则不显示。
展开所有目录 如果此选项被选中,在PDF文件浏览器中打开PDF文件即所有目录,否则只显示顶级目录。

每个目录项均包含目录项文字和目录项对应页面。目录项对应页码可以是正整数或负整数,0视为无效。从PDF选项中“基准页”规定的页码值开始算,基准页码及其之后的页码为正数,之前的页码为负数。即如果目录项对应的页面就是基准页,则目录项对应页码为1;如果目录项对应的页面是基准页面的后一页,则目录项对应页码为2;如果目录项对应的页面是基准页的前一页,则目录项对应页码为-1。

用基准页对目录项页码进行调节,可以方便手工录入目录:在录入的时候,只需对照实体书的目录页录入目录标题,目录项对应页码直接照书上目录对应页码录入;然后将基准页设置为正文第一页的绝对页码即可。

文本模式

文本模式与一般IDE界面相似,支持Ctrl+A(全选)、Ctrl+C(复制)、Ctrl+V(粘贴)、Ctrl+Z(撤销)等快捷键,回车后新行自动缩进。

文本模式下,用TAB缩进表示目录分级关系。每个目录条目占据一行,行首TAB数表示级数,条目文字后再跟一个TAB,然后是条目对应的页码。如果没有对应的页码,则文字后无TAB。

TAB显示宽度可以通过点击“制表符宽度”按钮进行设置。

为了便于输入页码,文本模式下按照PDG文件类型分成了8个输入窗口,分别对应封面页、书名页、版权页、前言页、目录页、正文页、附录页、封底页。对于有内容的窗口,其页签上会带一个加号作为提示。

树形模式

树形模式下,用图形化的界面展示目录分级关系,并且可以折叠、展开分级目录。左移、右移、左齐折叠起来的条目,该折叠条目下的所有子条目随之左移、右移、左齐。

树形模式下每个目录条目占据一行,文字与页码之间用半角符号“|”进行分隔。

与文本模式不同,树形模式下所有类型的目录条目均在一个框内展现,非正文页的页码通过加前缀来区别,前缀同PDG文件前缀,分别是:cov(封面页)、bok(书名页)、leg(版权页)、fow(前言页)、!(目录页)、att(附录页)、bac(封底页)。前缀后直接是页码,不需要补零。

支持的快捷键:

功能 快捷键
回车 开始编辑所选条目。编辑完成后,按回车确认,按ESC撤销编辑
空格 打开、折叠目录树
Ctrl+鼠标左键 选定鼠标点击的条目
Shift+鼠标左键 选定两次点击之间的所有条目

编解码模式

一、启动

编解码模式只能通过命令行参数进入。可以用批处理,也可以创建快捷方式,然后指定命令行参数,见前面命令行说明。

二、解码

选择“编码后的目录文件”,可以是bookcontents.dat或catalog.dat,但不能是zip,然后点“解码”,解码后生成bookcontents.txt或catalog.txt。
bookcontents.txt就是正版超星浏览器生成的Contents.dat,catalog.txt则是一个XML文件。

三、编码

选择“解码后的文本文件”,文件格式必须符合Contents.dat或XML格式,然后选择“编码后的目录文件”,点“编码”即可。

应用示例

一、编辑现有目录,调整目录分级

1、运行软件,打开需要编辑的目录文件。
2、切换到树形编辑模式。
3、点“全选”,再点“左齐”,将所有条目全部左齐。
4、选择需要缩进的条目,通过“右移一栏”、“左移一栏”调整分级直到满意。
5、编辑过程中如果觉得窗口不够大,可以用鼠标拖动窗口右、下边框进行缩放,或直接点右上角的“最大化”按钮。
6、如果需要对文字或页码进行编辑,选中需要编辑的条目,按回车开始编辑,按回车或ESC退出编辑。
7、点“保存”保存修改。
8、点右上角的“关闭”退出。

二、创建新目录

1、运行软件,进入文本编辑模式。
2、手工录入,或OCR后粘贴,或从网上粘贴目录内容,对照PDG的目录页输入页码。输入页码时可以点“透明度”按钮,将窗口设置成半透明(此功能在Windows 95/98/Me下无效)。如果页码直接来自OCR结果,可以点“全选”,再点“自动切分页码”,在行末的页码数字前自动插入一个TAB;点“自动缩进”,自动尝试对诸如1.1、1.1.1、1.1.2的项目设置缩进。
3、确认输入内容无误后,存盘。
4、切换至树形界面,准备调整目录分级。
5、通过“右移一栏”、“左移一栏”调整分级直到满意。编辑过程中如果觉得窗口不够大,可以用鼠标拖动窗口右、下边框进行缩放,或直接点右上角的“最大化”按钮。
6、如果需要对文字或页码进行编辑,选中需要编辑的条目,按回车开始编辑,按回车或ESC退出编辑。
7、点“保存”保存修改。
8、点右上角的“关闭”退出。

三、创建繁体目录文件

1、如果原始目录文件是简体的,先打开,然后点“繁体、简体转换”,转换成繁体。
2、如果是Contents.dat,存盘后在简体中文Windows下 方可显示;如果是catalog.dat,存盘前先点“catalog.dat字符编码”,选择“utf-8”,然后再存盘 ,则可在非简体中文Windows下也能显示。

PDF中的特殊目标

PDF的书签(Outline)除了指向页码外,还允许指向某个名称、动作,甚至某个外部文件。在本软件中,采用某些特殊字符加以区别:

  • 对于“已命名的目标”(Named Destinations),直接显示名称,但是名称不能以数字开头,否则必须在数字前加字符“#”。
  • 对于“已命名的动作”(Named Action),动作名称前面加字符“!”。
  • 对于外部PDF文件,文件名前面加字符“^”,如果还需要指定页码,则在文件名后加TAB,再加页码。

附录A 鸣谢

本软件在开发过程中得到网上读书园地成员车明(BECompanion)、hstong的大力支持与协助。目录文件编解码采用了zlib源代码。ZIP文件处理采用了Info-ZIP源代码。

在此对以上组织和个人表示深切的谢意!

附录B 正则表达式语法(引自《VBScipt 用户指南》)

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

这里有一些可能会遇到的正则表达式示例:

正则表达式 匹配
^[ \t]*$ 匹配一个空白行。
\d{2}-\d{5} 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成。
<(.*)>.*<\/\1> 匹配一个 HTML 标记。

字符串替换实例

字符串 <A HREF=../mrx/arc/mrx_003b.txt>
正则表达式 <A HREF=([\d\D].*)txt>
替换为 <A HREF=$1txt target=center>
结果 <A HREF=../mrx/arc/mrx_003b.txt target=center>

下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} mn 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
x|y 匹配 xy。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 nm 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm
\nml 如果 n 为八进制数字 (0-3),且 ml 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (©)。

附录B 版本更新记录

Version 3.04
错误修正:如果PDF的catalog段中含有00,则PDF书签编辑后存盘失败。

Version 3.03
错误修正:在文本编辑模式下,如果选择“选定区域自动缩进”,则在行首没有数字的情况下,某些特殊中文字符后会自动加入空格。

Version 3.02
错误修正:当正则表达式中含有中文字符时,正则表达式保存出错。

Version 3.01
错误修正:如果zip文件中文件夹名称中含半角中括号,保存PDG书签失败。

Version 3.00
功能修正:“catalog.dat字符编码”从“GB2312/Big5”改为更通用的“GB2312/UTF-8”。
错误修正:在文本编辑界面下,关闭“替换”对话框后,光标位置会改变。
错误修正:如果PDF书签中使用了“Named Destination”,并且Named Destination所指向的Unicode字符不完整,则获取书签时会有问题。
错误修正:如果catalog、pages对象是对象流,则编辑PDF书签后文件打不开。
错误修正:如果PDF书签项指向外部PDF,编辑后可能会出错。
取消ANSI版发行,改为发行Unicode版。

Version 2.04
错误修正:如果FreePic2Pdf_bkmk.txt文件不以\r\n结尾,则最后一行书签会被忽略。
错误修正:树形编辑界面下,不能正常读取Unicode编码的FreePic2Pdf_bkmk.txt文件。
错误修正:编辑PDF目录时,如果未选择“展开所有目录”选项,则生成的PDF文件中的多级目录项不符合PDF规范要求,在某些浏览器下阅读可能有问题。

Version 2.03
错误修正:读取PDF书签时,如果书签含特殊字符(如\n),会造成书签截断。

Version 2.02
错误修正:读取PDF书签时,如果书签含特殊字符(如\r),会造成书签截断。

Version 2.01
编辑PDF书签时,去掉对象流检查与限制。

Version 2.00
新增功能:在“PDF选项”中,增加“名称转页码”选项。
功能增强:支持Unicode编码的FreePic2Pdf接口文件。
错误修正:某些PDF中的Unicode编码的“已命名的目标”(Named Destinations)会导致取书签错误。
错误修正:如果同级书签数量过多,会出错退出。
对软件结构进行重构,避免代码分支。

Version 1.11
功能增强:在正则表达式输入对话框中,增加“帮助”按钮。
功能修正:压缩文件密码支持大小写敏感。
英文版缺省界面改为文本编辑界面。

Version 1.10
错误修正:如果原PDF经过旋转、裁剪,编辑书签后页面定位不正确。

Version 1.09
功能增强:对含无效字符的文件路径能够给出提示。

Version 1.08
错误修正:某些DjVu、PDF书签读取错误。

Version 1.07a
错误修正:简体中文版工具条后半部分错位。

Version 1.07
错误修正:在树形界面下编辑BookContents.dat、catalog.dat,附属页面的页码会丢失。

Version 1.06
错误修正:对于PDG目录,某个节点下的同级子节点过多时,会自动往上窜一级。
错误修正:编辑PDF书签后,PdfToy的“文件结构”检查会报错。

Version 1.05
错误修正:某些PDF目录提取不到页码。

Version 1.04
去除最大行数3000行的限制。
加强繁简转换时的纠错能力。

Version 1.03
新增功能:正则表达式输入界面中增加“保存”、“调入”按钮,用于保存、调入自定义表达式。
新增功能:对于PDF目录(Outline),支持高字节在前的Unicode字符。
新增功能:对于PDF目录,支持Named Action。
新增功能:对于PDF目录,支持到外部PDF的链接。

Version 1.02
错误修正:“自动切分页码”功能不能正确处理负数页码。
错误修正:帮助文件中正则表达式例子结果有误。
错误修正:编辑DjVu书签会产生内存漏洞。

Version 1.01
新增功能:在文本模式中,增加“正则表达式替换”功能,采用微软为VBScript、JavaScript准备的正则表达式引擎,因此语法与ASP、JSP中的正则表达式语法一致。

Version 1.00
功能增强:PDF书签支持Named Destinations,即Acrobat中所称的“已命名的目标”。
错误修正:打开某些非标准书签的PDF时,书签页码显示不出。

Version 0.14
错误修正:文本模式的“全部替换”功能可能造成死循环。

Version 0.13
功能增强:文本模式的“查找”、“替换”功能在搜索到文件尾部或头部时,能够自动折回继续查找。

Version 0.12
功能增强:目录每行的最大长度从1024字节放宽至16KB,以满足某些BT目录。

Version 0.11
错误修正:在给采用Cross-Reference Stream的PDF挂目录后,PDF打不开。

Version 0.10
新增功能:加、减选定区域的页码。
新增功能:支持从资源管理器直接拖拽文件到界面上,代替手工选择文件。
功能增强:处理文本PDG的目录时,XML解析器换成微软的解析器,以支持转义字符。

Version 0.09
错误修正:在给某些PDF加挂目录后,PDF文件打不开。

Version 0.08
错误修正:在树形编辑界面中编辑bookcontents.dat,如果有条目未输入页码,存盘结果有错。
错误修正:打开PDF目录时,如果目录项不是Unicode字符,则会自动截断。

Version 0.07
错误修正:从UnicornViewer启动PdgCntEditor编辑散页PDG的bookcontents.dat,如果文件夹下原来没有bookcontents.dat文件,则不能正常保存。

Version 0.06
错误修正:不能正常打开、保存uvz文件。

Version 0.05
新增功能:支持PDF、DjVu目录编辑。

Version 0.04
新增功能:支持索引页(前缀为ins)。PDG命名规范中有这种页面,但是真正的PDG中基本上不存在这种页面,索引页都算到正文页或附录页中去。现在可以用PdgRenamer命名出这种页面。

Version 0.03
新增功能:“所选区域自动缩进”。用于自动缩进诸如1.1、1.1.1、1.1.2的项目。使用前最好先点“全选”,而且在树形模式下用要比在文本模式下用更快。另外此功能并不能包打天下,必要的人工检查和调整还是需要的。

Version 0.02

  1. 新增功能:能够编辑符合FreePic2Pdf接口文件格式的目录文件(FreePic2Pdf_bkmk.txt),并能从DjVuToy、FreePic2Pdf中启动,对 目录文件进行编辑。
  2. 新增功能:文本编辑界面中的“自动切分页码”按钮,用来将OCR出来的页码与文字分开,即在行末的数字前面插入一个TAB字符。使用此功能前请先点“全选”或手工选定需要切分的文本行。
  3. 功能增强:文本编辑界面中,编辑框支持的内容突破32 KB限制。

Version 0.01
支持bookcontents.dat、catalog.dat、zip。
支持文本、树形、编解码。