DjVuToy: A handy toolkit to merge, split and analyze DjVu files.

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

FAQ
使用说明
    一、软件安装/删除
    二、软件使用
        文件合并
        文件拆分
        页面调整
        生成索引
        DjVu制作
        PDG转换
        PDG压缩
        页面宽度
        转为图像
        文本相关
        注释相关
        转PDF
        文件结构
    三、操作示范
附录A 鸣谢
附录B 版本更新记录

FAQ

Q:DjVuToy是什么?
A:这是一个处理DjVu的工具集,具有下列功能:

  1. 文件合并:将散页DjVu文件合并成一个多页DjVu。支持指向外部文件的共享数据段。
  2. 文件拆分:将多页DjVu拆分成每页一个文件,并可指定是否拆分共享数据段、是否生成索引。
  3. 页面调整:插入、删除、移动、旋转多页DjVu中的页面。
  4. 生成索引:为文件夹下的散页DjVu文件生成索引文件,打开索引文件即可浏览全部散页文件,就像将散页文件合并成了多页文件一样。
  5. DjVu制作:图像文件转DjVu,支持PDG、BMP、GIF、PNG、TIFF、JPEG、JPEG 2000。
  6. PDG转DjVu:这个不用说了吧?
  7. PDG压缩:对清晰版进行无损压缩,或将清晰版压缩成快速版,或将黑白TIFF转换成PDG。
  8. DjVu页宽设置:将多页DjVu的页面宽度或DPI设置为一个统一值。
  9. 转为图像:将多页DjVu的每一页转换成一个图像。
  10. DjVu文本处理:包括OCR(生成可检索的隐藏文本)、导出纯文本、导出XML文本、导入XML文本、删除文本。
  11. DjVu注释相关:包括导出、导入、删除注释。注释(Annotation)可以是超链接、标注等。
  12. DjVu转PDF:一次将整本DjVu转换成PDF,并可选择是否转换书签(目录) 、隐藏文字,没有隐藏文字时还可以在转换的同时进行OCR,并提供对自身所生成的双层PDF进行校对所需的辅助功能。
  13. 查看DjVu文件结构:如果打算对DjVu文件内部格式进行研究,这个功能那是相当地有用,不然还是点“显示设置”按钮,把它藏起来算了。

Q:为什么要开发DjVuToy?
A:现在网络上DjVu格式的电子书开始多起来,但是讨论DjVu的专业文章并不多。为了深入了解DjVu文件的各个方面,我就开发了这个软件。因为目的不是很严肃,所以软件的名字也不是很严肃,不过我终于还是很严肃地为它挑选、修改了个一看就是toy的图标。

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

Q:DjVuToy在将DjVu文件合并、切分、删除、旋转页面,或改变页面顺序、改变页面宽度时,会造成图像质量下降吗?
A:不会,图像数据流保持不变。

Q:FreePic2Pdf接口文件有什么作用?
A:接口文件是从Pdg2Pic和FreePic2Pdf借用过来的,对多级书签进行描述。接口文件的详细格式说明和示例见FreePic2Pdf使用说明。 对书签文件进行编辑推荐使用PdgCntEditor。

Q:有些PDG文件转换不出来,怎么办?
A:详见Pdg2Pic的使用说明。

Q:为什么在合并文件时,如果选择了“合并过程中花时间检查坏页”,DjVu会报告某些文件损坏,但是单独用WinDjView看每页都能正常显示?
A:这种情况通常是下载的时候,散页文件末尾被添加了垃圾数据。解决的办法:

  1. 创建一个空文件夹,把问题散页复制进去,然后用“文件合并”功能合并这个文件夹,得到一页结果。
  2. 将此一页结果更名为问题散页的文件名,覆盖原问题散页,重新合并即可。

Q:为什么有些散页DjVu文件合并后,从某页开始就无法显示,但是单独用WinDjView看每页都能正常显示?
A:这种情况通常是下载的时候,散页文件末尾被添加了垃圾数据,或文件数据不全。解决的办法:

  1. 先定位有问题的散页。办法是把不能显示的页或其前、后页对应的散页删除,重新合并。如果某页删除后合并结果正常,则该页即为问题页。
  2. 用WinDjView打开问题页,如果能够打开,多半是文件末尾被添加了垃圾数据,参照前述方法解决;如果不能打开,说明数据不全,只能重新下载。

Q:如何快速检查合并后的DjVu文件是否有问题?
A:严格说来用WinDjView的缩略图看是最保险的,不过如果希望尽量快,也可以用DjVuToy的“文件结构”功能,导出文件结构为文本文件,如果此过程中没有报错,基本没有问题,否则可能有问题。

Q:OCR功能有什么用?在什么情况下可以使用?
A:OCR功能在DjVu文件中生成隐藏文本,这些文本平时不可见,但可用WinDjVu的“Edit->Find”功能检索,也可以用“File->Export Text”功能导出。隐藏文本不仅有文本信息,而且有位置信息,因此用鼠标按住左键在DjVu页面上拖动,可以选中隐藏文字,并复制到剪贴板。
DjVuToy的OCR功能对DjVu中的原始图像不会造成任何影响,因此可以对其它软件生成的DjVu文件进行OCR,以实现强强联合:目前DjVu制作软件以国外的为佳,但是国外DjVu制作软件在OCR中文时总觉得不如本土软件。DjVuToy的OCR引擎是微软从清华购买的,中文OCR效果不错。
当然再好的OCR软件都不可能完全准确,因此DjVuToy提供了独创性的“导出XML文本”、“导入XML文本”功能,可以将隐藏文本及其位置信息以XML格式导出,进行人工校对,然后再导入DjVu文件。 另外这两个功能也可以用于文本的繁简转换:将繁体导出,用TextForever或其它转码软件转成简体,然后再导入。
当然如果您有更好的OCR引擎,也可以自己写一个软件,OCR后输出符合DjVuToy格式要求的XML文件,然后用DjVuToy导入。
DjVuToy的OCR功能需要微软Office 2003/2007的Microsoft Office Document Imaging(MODI)的支持,在简体中文环境下进行安装、配置,以OCR繁体中文、日文、韩文的方法,可以 参阅我写的《用MODI OCR 21种语言》一文。
OCR质量与图像质量密切相关,图像分辨率越高、越是黑白分明,OCR结果就越好。如果图像分辨率低于300 DPI,建议就别OCR了,以免结果太过搞笑。

Q:DjVu转PDF依据什么样的规则?转换是否有损?
A:遵循下面的规则:

  1. JB2数据流直接转换成JBig2数据流,并且保证字典、页面描述转换前后一一对应,因此不仅是完全无损的,而且转换前后数据流长度差异不大。
  2. IW44数据流先解码成图像,再重新压缩成接近原IW44数据流长度的JPEG 2000数据流。因此转换过程是有损的,不过肉眼不大看得出来,转换前后数据流长度差异也不大。
  3. 对于单层DjVu,按照规则1、2转换成单图像,嵌入PDF。
  4. 对于3层DjVu,每层图像按照规则1、2转换成一个图像,其中一个作为soft mask。
  5. 对于2层DjVu(即彩色文本,color text),事情有点复杂,因为PDF中没有对应的结构,所以只能按照3层转换,而且为了保证文字清晰度,中间层还必须与前景层一样大小,造成最终文件长度膨胀。

上面的规则在我写的《DjVu转PDF》一文中有详细描述,有兴趣的可以看看。总之,单层、3层DjVU转成PDF后文件长度、清晰度差异不大;2层DjVu转换后文件长度膨胀较大,清晰度基本不变。

使用说明

一、软件安装/删除

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

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

ZIP包中包括下列文件:

  1. DjVuToy.exe。这是软件的主程序。
  2. DjVuToy.dll。DjVu制作所需的文件,无此文件则不能使用该功能。
  3. DjVuToy.htm。本帮助文件。

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

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

  1. DjVuToy.ini。这个是参数保存文件,第一次更改参数后生成。退出DjVuToy,删除此文件,再重启DjVuToy,即可恢复缺省参数。
  2. DjVuToy_log.txt。这个是错误记录文件,在转换过程中出现错误时自动生成,没有错误则自动删除以前的错误记录。
  3. djvu_temp:如果运行了“DjVu制作”功能,就会生成此文件夹,用来存储中间文件。

二、软件使用

统一说明

本软件所有文件、文件夹输入框均支持快捷键Ctrl+A(全选)、Ctrl+C(复制)、Ctrl+X(剪切)、Ctrl+V(粘贴)、Ctrl+Z(撤销),也支持从资源管理器直接拖拽文件、文件夹。
Ctrl+V支持从资源管理器直接粘贴文件、文件夹。即在资源管理器中选择某个文件或文件夹,选“复制”,然后光标定位到输入框,按Ctrl+V,即可将文件、文件夹的完整路径粘贴过来。

公共按钮:

  • 恢复:DjVuToy会自动记忆您在各页中设置的参数(记录在DjVuToy.ini文件中),点击“恢复”按钮可以将所有参数恢复到缺省值。
  • 显示设置:隐藏/恢复某些页面。通过隐藏不常用的页面,可以简化界面。
  • 关于:显示DjVuToy的版本和相关信息。
  • 帮助:显示本文件。

文件合并

功能:将多个DjVu文件合并成一个,并加挂书签(如果有书签描述文件)。

操作:按界面上标注的1、2、3、4操作即可。 如果希望在合并前调整页面顺序,可以选中“显示文件列表”选项,在开始合并前先弹出页面顺序对话框;如果想在合并后再调整页面顺序,可以在合并后点击“页面调整”按钮。

说明:只有在“合并后顺便把书签挂上”选项被选中,并且在散页DjVu文件夹下存放有书签接口文件(FreePic2Pdf.itf、FreePic2Pdf_bkmk.txt)时,合并出来的DjVu才会带书签。

接口文件来源有下列几种:
1、通过“PDG转DjVu”功能将PDG文件转换成单页DjVu文件时,自动按照bookcontents.dat生成的接口文件。
2、按照接口文件规范(详见FreePic2Pdf使用说明),自己手工编辑。

在合并DjVu文件时,如果选了“合并过程中花时间查坏页”选项,能够自动跳过出错页,当然这样可能导致书签不准。

如果“包括子文件夹”选项未被选中,则所选文件夹下的所有DjVu文件(不包括子文件夹中的文件)合并成一个DjVu文件。由于这时目标文件是唯一的,因此“显示文件列表”选项、“页面调整按钮”和“编辑界面最大化”选项是可用的。

如果“包括子文件夹”选项被选中,则本软件自动周游所选文件夹下的所有子文件夹,将每一级子文件夹中的文件,合并成一个DjVu文件存放到上级文件夹或指定的文件夹。在这种情况下,如果“包括顶级文件夹”未被选中,则所选文件夹下的DjVu文件不会被合并,只有所选文件夹之下的子文件夹中的文件才会被合并;否则所选文件夹下的所有文件都会被合并。

由于在“包括子文件夹”选项被选中后,目标文件不唯一,因此“显示文件列表”选项、“页面调整按钮”和“编辑界面最大化”选项不可用。

文件拆分

功能:将多页DjVu文件每页拆分成一个单独的DjVu文件。

操作:按界面上标注的1、2、3、4操作即可。

选项说明:

  • 如果“重新编号”选项被选中,则生成的文件名为“页码数字.djvu”,此时如果数字位数指定为0,则页码数字前面没有0,否则用0补足指定的位数。
  • 如果“重新编号”选项未被选中,则拆分后的DjVu文件名用合并前的文件名。
  • 如果“生成索引”选项被选中,拆分后自动生成index.djvu,否则不生成。
  • 如果“嵌入INCL段(拆分后文件可单独打开)”选项被选中(缺省为选中),则拆分过程中会将所有共享数据段(共享字典、注释等)嵌入拆分后的文件,保证拆分后的每一个文件均可单独打开,但是文件总长度可能会增加(同一个共享段被嵌入到多个文件中);如果此选项未被选中,则所有共享数据段会被导出成单独的文件,文件总长度基本保持不变,但拆分后的文件只有在与共享文件在一起时才能打开。

说明:拆分仅针对多页DjVu,单页、索引页均不能再拆分。

页面调整

功能:插入、删除、移动、旋转多页DjVu中的页面。

操作:按界面上标注的1、2操作,即可进入页面调整界面。在其中按照工具条按钮提示操作即可。
说明:删除的页面不可恢复,请在操作前做好备份。

页面调整界面也可单独启动:在运行DjVuToy时以需要处理的DjVu文件路径为参数,即可进入该界面。

生成索引

功能:为文件夹下的散页DjVu文件生成索引文件,打开索引文件即可浏览全部散页文件,就像将散页文件合并成了多页文件一样。但是与多页文件不同,索引文件不能挂书签。

操作:按界面上标注的1、2、3、4操作即可。 如果希望在生成前调整页面顺序,可以选中“显示文件列表”选项,在开始生成前先弹出页面顺序对话框;如果想在生成后再调整页面顺序,可以在生成后点击“页面调整”按钮。

DjVu制作

功能:图像文件转DjVu,支持PDG、BMP、GIF、PNG、TIFF、JPEG、JPEG 2000。转换的同时可以进行OCR,生成双层DjVu。

操作:按界面上标注的1、2、3、4操作即可。 如果希望在生成前调整页面顺序,可以选中“显示文件列表”选项,在开始生成前先弹出页面顺序对话框;如果想在生成后再调整页面顺序,可以在生成后点击“页面调整”按钮。
如果“源”选择了文件夹,则将文件夹中的所有图像文件转换成一个多页DjVu(“目标”指定为DjVu文件),或散页DjVu+index.djvu(“目标”指定为文件夹)。
如果“源”选择了单个图像文件,则转换成与“源”同名的单页DjVu。
如果“源”选择了多个图像文件,则每个图像文件转换成一个单页DjVu,并生成index.djvu文件。

参数说明:下列参数说明摘自DjVu SDK v3.6的帮助文件。

黑白图像质量(B/W Compression):

  • 无损(lossless): Preserves all the details of the original image. Each pixel in the resulting DjVu image is the same as the original image.
  • 去斑(conservative): Preserves more detail than djvu_normal , but slightly increases encoding time and the size of the resulting DjVu file.
  • 正常(normal): Specifies changes to text which are small enough that they are usually unnoticeable, resulting in faster encoding times and smaller DjVu files.
  • 瞎搞(aggressive): Makes extensive changes to the image, resulting in very fast encoding times and very small DjVu files.

共享字典(shared dictionary): Specifies the number of pages to be joined in a common shared dictionary. The recommended values for this option are between 10 and 20. Specify a value of 1 to disable the use of shared dictionaries when the document is fewer than ten pages or does not contain repeating shapes (for example, hand-drawn images).

图像质量系数(color image quality): If your primary purpose is to archive a copy of an image, assign a very high value (for example, 95) to the --quality option to produce nearly lossless results. If your primary purpose is to publish an image on the Web, a value of 70 or 75 is generally effective. Values lower than 70 should be used only when storage requirements are more important than visual appearance, or when the background layer is unvarying (for example, colored paper).

彩色图像分层(color image content):

  • 3层(3 layers), Indicates the color image should be segmented into three layers: the mask, background, and foreground. The bitonal mask is encoded using JB2 data compression, and the foreground and background are encoded using IW44 wavelet-based compression.
  • 2层(2 layers), Indicates the mask and foreground of a color image should be combined into one layer, thereby creating a two-layer DjVu file that consists of a foreground and a background. Using the JB2 color mode, the foreground is encoded by specifying one solid color for each object described by the bitonal mask. The background is encoded using the IW44 compression method.
  • 1层(1 layer), Disables segmentation and creates a one-layer DjVu document that is encoded with the IW44 compression method. Use this setting to encode images that contain photographs.

低分辨率图像(low resolution image):用于提升扫描分辨率低于300 DPI的图像的转换效果。对于DjVu文件来说,300 DPI才能保证效果,低于300 DPI的就需要放大,否则转成2层、3层图像后,可能会出现文字模糊等现象。放大倍率为1(不放大)、2(放大一倍)、3(放大二倍)。放大可以选全图放大,也可以只放大文字层。对于彩色图像来说,如果选择了2层、3层DjVu,则“全局放大”后的背景效果优于“只放大文字层”,但文件大小会更大一些。

  • 全图(Whole image): Increases the number of pixels in the input image by the specified factor, thereby increasing the size of the resulting output image.
  • 仅文字层(Just text layer): Increases the number of pixels in an image's mask layer. Because mask objects (text and line drawings) have sharp edges, they must be encoded at a high resolution to maintain their contrast and readability. Documents, therefore, should be scanned at 300-400 dpi so that the mask layer can be encoded at the recommended 300 dpi. If you are encoding an image with a lower resolution, for example, 100 dpi, use this option to upsample the image's mask layer by a value of 3 (3 * 100 dpi = 300 dpi). This new dpi is then delivered to the segmenter during the encoding process.

注意:在生成DjVu之前,需要先对图像文件进行统一格式转换,存放在中间临时文件夹(缺省为djvu_temp文件夹),转换完成后临时文件夹中清空。为了保证转换过程顺利完成,请确认临时文件夹所在磁盘分区具有足够的剩余空间。

PDG转换

功能:将PDG文件转换成DjVu,并将bookcontents.dat转换成书签接口文件。

操作:按界面上标注的1、2、3、4操作即可。

参数说明:

  • 黑白图像压缩:可选无损、清洁、有损。“无损”保证转换出来的DjVu文件显示效果与原PDG完全一样;“清洁”可以去除图像上的部分孤立噪点,当然也有可能去错了把有用的点去掉了;“有损”对于以字母、数字为主的页面来说,可以大幅提高压缩比,对于中文页面来说,可能对汉字笔画造成损伤 ,因此建议慎用。
  • 单层JPG(04H)无损转换:如果此选项被选中,PDG中的单层JPG图像数据流将无损嵌入DjVu文件,这样生成的DjVu文件显示效果与PDG相同,生成的文件长度比PDG文件略小,比JPG略大。如果此选项未被选中,则所 有JPG图像解码后按照插图参数重新压缩。
  • T3插图层采样率:按照djvulibre的缺省设置,对于插图应该按照1/3重新采样,即将插图长、宽均缩小至原来的1/3,以减小文件体积。但是从我实际操作的情况看,PDG本身的插图已经够不清晰,再这样缩一把就更可怜了。所以缺省情况下采样率为1/1,即不重新采样。
  • 插图压缩效果:这个是我自己总结的经验值,一般选“快速版效果”即可。
  • DPI:对生成的DjVu文件的DPI进行设置。与其它DjVu制作软件不同,在这里设置的任何DPI值均不会对图像压缩本身造成影响。各选项的具体含义:
    ◆ 使用固定DPI:所有页面使用相同的DPI。
    ◆ 使用PDG文件DPI:图像宽度超过1200象素则DPI为300,否则为150。
    ◆ 统一至最大宽度:最终页面宽度=页面最大象素宽度/固定DPI,每个页面的DPI值=该页象素宽度/最终页面宽度,保证所有页面具有相同的逻辑宽度。
    ◆ 统一至最小宽度:与上一项类似。注意选择了这两项中的任意一项,均需要先搜索所有PDG文件,找出最大或最小宽度。
    ◆ 统一至固定宽度:每个页面的DPI值=该页象素宽度/固定页面宽度,保证所有页面具有相同的逻辑宽度。
    ◆ 不理它,爱是多少就是多少:使用系统默认的DPI,转换速度会稍微快那么一点点。转换以后如果后悔了,想再改变DPI,可以用“页面宽度”功能加以改变。

对于快速版PDG,因为本身的图像质量已经够糟糕了,实在不希望有人再对它进行反复压缩,所以软件在检测到处理的是快速版PDG(原始数据流为DjVu)后,对于单层(无插图层)的文件都是无损(黑白)或近似无损(彩色)转换,只有在碰到多层(在Pdg2Pic中显示为T3)PDG,才对插图层重新压缩,文字层保持无损。

对于清晰版PDG,则按照上述参数进行转换。

对于索引色图像(PNG),转换成彩色DjVu。

为了避免因为某些原因造成转换不完全,建议在使用本软件前,先用PdgThumbViewer对需要转换的PDG文件进行格式检查。

PDG压缩

功能:

  1. 对清晰版进行无损压缩。通常清晰版PDG的文字部分采用CCITT压缩,本功能将它重新压缩成无损JB2格式。对中文页面来说,约能砍掉20%的文件长度。
  2. 将清晰版压缩成快速版。即长、宽各砍掉一半。此功能仅对宽度超过1200象素的文件起作用。
  3. 将黑白TIFF转换成PDG。使用前,请先将TIFF更名成PDG。黑白TIFF可以用ComicEnhancer Pro生成。
  4. 对于名为PDG,实为PNG的文件,黑白的压缩成JB2,24位真彩的按照“插图”选项转换成JPG或DjVu,索引色的仍然保持PNG格式。

注意:

  1. 不能进行反复压缩,即已经用本软件压缩过的文件,再用同样的参数再次压缩并不会有效果。
  2. 所有压缩过的PDG文件内部数据流均为DjVu格式,需要高版本的超星浏览器才能阅读。我用超星3.8没什么问题,更早的版本没有试过。其它早期开发的第三方浏览器,如BXViewer读起来可能也会有问题。
  3. 本软件毕竟不是超星官方软件,使用前请先对需要压缩的PDG进行备份,压缩后请及时进行检查,使用本软件造成的一切后果由使用者自行承担。

操作:按界面上注明的1、2、3、4步骤执行即可。

选项说明:

  • 转换为快速版:如果此选项没有选中,可以对清晰版进行无损压缩,或将TIFF无损转换成PDG;否则是将清晰版压缩成快速版,或将TIFF转换成快速版PDG。
  • 插图保持JPG格式:如果此选项被选中,在清晰版转换成快速版时,插图存储为JPG格式,JPG质量由“JPG质量系数”选项决定。
  • 插图转换成DjVu:如果此选项被选中,在清晰版转换成快速版时,插图存储为DjVu格式,DjVu质量由“插图压缩效果”选项决定。
  • 黑白图缩小算法:在将清晰版缩小成快速版时,需要将图像尺寸缩小一半,此参数决定缩小时的插值算法。如果没有什么特殊情况,建议保持缺省的“nearest”。

页面宽度

功能:统一设置页面宽度或页面DPI。在用WinDjView浏览DjVu文件时,如果选择“Fit Width”,页面宽度不一样也没有关系,但是如果选择按百分比显示,页面宽度不一就很难看了。此功能的“统一页宽”就是通过调整页面的DPI值,使按百分比显示时各页宽度一致。由于调整的仅仅是INFO段中的DPI值,对图像数据不会造成影响。当然由于DjVu的DPI是整数,四舍五入后,实际显示时页宽可能还会有一点细微的差异。“统一DPI”功能可以看做是“统一页宽”的反功能,将INFO段中的DPI值再设置回统一值。

操作:

统一页宽:
1、选择需要操作的DjVu文件。
2、设置“统一页宽”框中的选项。
3、点“开始设置”按钮。

统一DPI:
1、选择需要操作的DjVu文件。
2、设置统一DPI。
3、点“开始设置”按钮。

转为图像

功能:将多页DjVu的每一页转成一个图像,或将指定文件夹下的DjVu全部转换成图像。

操作:按界面上标示的1、2、3、4操作即可。

选项说明:

  • 转换后的文件名:转换后,按照页码对文件图像文件进行编号,此值为号码位数。
  • 转换范围:只转换指定范围的页。由于这个功能容易误操作,所以缺省为关闭。
  • 黑白页存为:转换后黑白页面的存储方式。缺省为采用CCITT G4压缩的TIFF。
  • 索引色页存为:转换后索引色页(彩色文字页)的存储方式。缺省为PNG。
  • 彩页存为:转换后彩色/插图页面的存储方式。缺省为JPG。
  • JPG质量系数:彩页如果存为JPG,此值决定文件的大小和质量。
  • 生成接口文件:如果选中,将生成FreePic2Pdf所需的接口文件FreePic2Pdf.itf。其中包含页面宽度信息,便于在用FreePic2Pdf将图像文件转换成PDF时统一页宽。

说明:

  1. 如果DjVu中某页是JPG格式的Photo DjVu,则不论“彩页存储”选项如何选择,该页均存储为JPG,数据流直接从DjVu的BGjp段中抽取,实现无损转换。
  2. 索引色页指的是“彩色文字页”,这种页面的背景色通常为白色。如果背景色不是白色,或有底纹,请将“索引色页存为”选为BMP或JPG。 如果选择存为PNG,软件将自动对图像进行减色处理,如果减色后出现颜色失真,请选择存为BMP或JPG,这两种格式不会尝试减色。
  3. 如果选择转换单个文件,则不论文件是单页还是多页,均会为图像创建子文件夹。
  4. 如果选择转换文件夹下的所有文件,则单页文件将不创建文件夹,而是与DjVu同名,只不过文件扩展名不同。多页DjVu将创建子文件夹,并按照指定的位数进行命名。

文本相关

功能:包括OCR、导出纯文本、导出XML文本、导入XML文本、删除文本。

操作:

OCR单个DjVu文件,生成可检索的双层DjVu:
1、选择需要操作的DjVu文件。
2、如有必要,选择OCR语言及结果是否合并。
3、点击“OCR”开始生成隐藏文本。
OCR多个DjVu文件,生成可检索的双层DjVu:
1、如有必要,选择OCR语言及结果是否合并。
2、点击“OCR多个文件”开始OCR。OCR后的文件将覆盖原文件。
OCR整个文件夹中的DjVu文件,生成可检索的双层DjVu:
1、如有必要,选择OCR语言及结果是否合并。
2、如有必要,选择是否“包括子文件夹”。
2、点击“OCR文件夹”开始OCR。OCR后的文件将覆盖原文件。另外OCR过程中会自动跳过索引文件,避免重复。

对“OCR选项”的说明:
1、语言:选择OCR语言。“语言”选择准确与否,对OCR的结果会有很大影响,务必注意。
2、Word合并成Line:这个是DjVu的独创。如果此选项被选中,则DjVu将整行算做一个Word,可以有效减小文件长度,并增加检索的匹配度;否则每个Word都算做单独的Word。
具体这个选项是任何影响Word、Line的关系,可以用“导出XML文本”导出,然后进行比较。

导出纯文本:
1、选择需要操作的DjVu文件。
2、选择导出后的文本文件存放位置。
3、选择“文本语言”。
4、点“导出文本”按钮。导出的结果为ANSI格式的文本文件。
为了更好地兼容各种语言,导出文件采用Unicode编码。
如果想批量导出,则点击“批量导出纯文本”,选择需要导出的DjVu文件所在文件夹,然后将导出该文件夹及其所有子文件夹下的所有DjVu中的隐藏文本,文本文件与DjVu文件同名。

导出XML文本:
1、选择需要操作的DjVu文件。
2、选择导出后的文本文件存放位置。
3、选择“文本语言”。
4、点“导出XML文本”按钮。导出的结果为ANSI格式的XML文件。
导出的XML文件可以反映隐藏文本的内容、位置,是对OCR结果的最直接表述。如果碰到DjVu文件检索不到、检索不准确的问题,不妨用这个功能进行导出,然后仔细看一下单词切分是否准确。
为了更好地兼容各种语言,导出文件采用Unicode编码。

导入XML文本:
1、选择需要操作的DjVu文件。
2、选择需要导入的XML文件存放位置。
3、点“导入XML文本”按钮。导入的XML文件为ANSI编码,导入时按照系统缺省代码页转换成utf8。
理论上说,“导出XML文本”、“导入XML文本”这两个功能结合起来,可以实现DjVu文本校对,或文本转码(简体转繁体,繁体转简体)。而“导入XML文本”则为使用第三方OCR提供了接口。
导入的XML文件支持Unicode、ANSI编码,但建议采用Unicode编码。

删除文本:
1、选择需要操作的DjVu文件。
2、点“删除文本”按钮。
某些电子书OCR得实在糟糕,可以用此功能删除文本以节省空间。

注释相关

功能:包括导出注释、导入注释、删除注释。

操作:
选择需要操作的DjVu文件、注释文件,点击相应的按钮即可。

注释文件说明:

注释文件是一个ANSI编码的文本文件,其文件格式为:

Page x
==============================
(注释内容)
.

即注释文件由段组成,每页对应一个段,段间用空行隔开。段的第一行是从1开始计数的绝对页码,说明下面的注释是针对哪一页的。页码后面是一串半角等号做分隔,再下面是注释内容,最终以半角句号为结束。句号前、后均需有换行符。注释内容的格式必须符合《Lizardtech DjVu Reference DjVu V3》第8.3.4节的规定。

下面是一个注释文件的实例:

Page 12
==============================
(maparea "#18" "" (rect 208 3054 1820 63 ) (shadow_eout 3 ) )
(maparea "#22" "" (rect 214 2980 1822 61 ) (shadow_out 3 ) )
(maparea "#31" "" (rect 244 2405 1761 70 ) (xor ) )
(maparea "#29" "" (rect 236 2607 1783 152 ) (opacity 40 ) (shadow_out 6 ) (hilite #80FFFF ) )
.

Page 18
==============================
(maparea "#12" "" (rect 931 2383 576 142 ) (xor ) )
.

Page 22
==============================
(maparea "#12" "" (rect 967 2300 498 160 ) (none ) )
.

Page 29
==============================
(maparea "#12" "" (rect 668 2203 1034 1053 ) (opacity 32 ) (shadow_in 3 ) (hilite #FFFF00 ) )
.

Page 31
==============================
(maparea "#12" "" (rect 1003 2306 432 133 ) (xor ) )
.

上面的实例文件说明,第12、18、22、29、31含注释,这些注释构成了页面之间的跳转关系。不过从中也可以看出DjVu跳转的局限:只能以URL为跳转目标,对本文件来说URL就是页码,不能像PDF一样精确跳到页面内的某个位置,因此显得比较粗糙。

注释文件必须使用ANSI编码,不能是Unicdoe或UTF-8编码。

转PDF

功能:将整个多页DjVu文件一次转换成PDF,并可选择是否转换书签(目录)、隐藏文字。

操作:
1、选择需要转换的DjVu文件或文件夹。 在选择文件夹后,如果选择了“包括子文件夹”,则自动周游选定的文件夹及其子文件夹,否则仅转换选定文件夹中的文件。
2、如有必要,点击“PDF选项”进行设置,或设置双层(彩色文本)的前景层缩图比例。 缩图比例越大,转换出来的文件长度越小,但是某些彩色文本可能会出现模糊。
3、如有必要,重新选择转换后的PDF文件的存放位置。
4、点击“开始转换”按钮,开始转换。

说明:
1、如果选择转换书签(目录),转换过程中会在源DjVu文件所在文件夹下临时生成接口文件,转换完成后自动删除。如果接口文件创建失败,则不能正常转换书签(目录)。
2、如果选择转换隐藏文本,则如果DjVu中含有隐藏文本,会转换成PDF中的隐藏文本,生成所谓的“双层PDF”。 如果原始DjVu中没有隐藏文字,选择“无隐藏文本则OCR”就会在转换的过程中自动OCR,否则转换出来的PDF无隐藏文本。
3、如果在选择“转换隐藏文本”后,还选择了“合并文本行”,则转换出来的PDF文件中的隐藏文本以行为单位,文件长度较小,但是字的位置不一定准确。如果未选,则字的位置准确,文件长度略大。

4、转换过程采用FreePic2Pdf的转换引擎,相关参数设置参见FreePic2Pdf使用说明。
5、转换后的PDF采用JBIG2、JPEG 2000压缩,如果您的PDF浏览器不支持这两种压缩格式,则不能采用此功能进行转换,建议改用“转为图像”功能先转成通用图像,再用FreePic2Pdf合并、转换成PDF。
6、相关技术细节参见我写的《DjVu转PDF》。
7、转换出来的PDF文件与DjVu文件同名,只是扩展名不同。重名文件自动覆盖,不会给出提示。
8、如果选择按文件夹转换,转换时自动忽略索引文件,以免出现重复转换。

双层PDF完全基于OCR技术,目前的OCR引擎不可能达到100%的准确率,如果想对生成的双层PDF进行人工校对,可以点击“校对”按钮,进入“PDF校对工具”界面,利用其中提供的显示、隐藏双层PDF中的文本、删除扫描图像等工具,辅助完成PDF校对过程。通常的校对过程为:

  1. 显示PDF中的隐藏文本,可以设置文字显示颜色、底图透明度。
  2. 文字显示出来后,就可以用Foxit PDF Editor、Foxit Phantom对文本进行编辑,包括增加、删除、改变位置、改变显示比例等。推荐使用的编辑工具是Foxit Phantom v2.2.4,更高的版本没有意义,更低的版本则不可靠。
  3. 编辑完成后,点“隐藏文字”页签,把编辑过的文字再次隐藏起来。
  4. 如果对校对结果很有信心,也不想再被大量的图像占据存储空间,可以用“删除图像”功能把原始扫描图像干净、彻底地从PDF中删除。注意删除图像是物理删除,即删除掉的图像再也找不回来,因此请慎重使用此功能。

注意在使用前请仔细阅读界面中显示的注意事项,以免后悔。具体细节详见我写的《校对双层PDF中的隐藏文本》。

文件结构

功能:导出DjVu文件结构;或将DjVu文件某页的三层(蒙板层、前景层、背景层)分别转存成DjVu文件,便于对DjVu内部数据进行分析 ;或导出指定页面的JB2数据,即JB2压缩的所有shape、页面描述,用于DjVu内部数据分析。

操作:

导出DjVu文件结构:
1、选择需要操作的DjVu文件。
2、选择导出的文本文件存放位置。
3、点“开始导出”按钮。

导出DjVu文件的层:
1、选择需要操作的DjVu文件。
2、选择需要导出的页码 。页码从1开始,允许指定多页,多页用半角逗号、减号分隔。
3、点“开始导出”按钮。导出后的文件为:原文件名_页码_Sjbz.djvu(蒙板层 、彩色文本)、 原文件名_页码_FG44.djvu(前景层)、 原文件名_页码_BG44.djvu(背景层)。如果有FGbz(彩色文本)层,则合并到Sjbz层。 如果“一样大小”被选中,则导出后各层的大小与原始DjVu页面的大小一致,否则各层按本层图像实际大小设置页面大小。另外FG44、FGjp导出后将被改成BG44、BGjp。
4、如果“嵌入INCL段”选项被选中(缺省为选中),则导出过程中会将共享字典嵌入拆分后的Sjbz文件,保证拆分后的每一个文件均可单独打开,但是多页文件总长度可能会增加(同一个共享段被嵌入到多个文件中);如果此选项未被选中,则所有共享数据段会被导出成单独的文件, 多页文件总长度基本保持不变,但导出后的Sjbz文件只有在与共享文件在一起时才能打开。

导出DjVu文件的JB2数据:
1、选择需要操作的DjVu文件。
2、选择需要导出的页码(从1开始)范围,及存放导出文件的文件夹、是否导出符号(shape)为TIFF文件
3、点“开始导出”按钮。导出后的字典文件为:页码_shape编号.tif。其中页码、shape编号均从1开始,占4位,不足4位的用0补足。 页面描述文件为:页码.txt,页码同前。

三、操作示范

将PDG电子书转换成DjVu电子书:

  1. 进入“PDG转DjVu”页,将PDG转换成单页DjVu,并生成书签接口文件(如果PDG文件夹下有bookcontents.dat文件)。
  2. 进入“文件合并”页,将单页DjVu合并,并加挂书签(如果在步骤1生成了书签接口文件)。

将中美百万下载到的文件转换成DjVu电子书:

  1. 将下载到的文件存放在同一个文件夹,包括散页DjVu、a.opf或catalog.xml。
  2. 进入“书签相关”页,将a.opf或catalog.xml转换成书签接口文件。
  3. 进入“文件合并”页,将单页DjVu合并,并加挂书签(如果在步骤2生成了书签接口文件)。

附录A 鸣谢

本软件的DjVu文件操作基于djvulibre源代码,不过被我改到VC不再报告累积性内存漏洞。另外本软件 的PDG解码器在开发过程中还得到网上读书园地成员车明(BECompanion)、hstong、 伊兹鱼、coolman和qdlsy,及rbook论坛mogaoku的大力支持与协助。 图像文件处理采用了Davide Pizzolato的CxImage,底层JPEG采用了Independent JPEG Group(独立JPEG小组)发布的JPEG LIB源代码,PNG采用了libpng组织提供的源代码,TIFF采用了libtiff组织提供的源代码,Jpeg 2000的解码采用了kakadusoftware提供的kakadu源代码,Jpeg 2000的编码采用了kakadu源代码,zlib采用了ASM实现。

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

附录B 版本更新记录

Version 2.03
新增功能:在“文本”功能中,增加“批量导出纯文本”功能。
新增功能:在“文本”功能中,“OCR文件夹”增加“包括子文件夹”选项。
新增功能:在“文本”功能中,增加“文本语言”选项,以更好地控制文本排版。
新增功能:在“转PDF”、“PDF校对工具”功能中,增加“包括子文件夹”选项。
新增功能:在“转图像”功能中,支持转换指定文件夹中的所有DjVu文件,并增加“包括子文件夹”、“生成接口文件”选项。
新增功能:在“文件拆分”功能中,支持拆分指定文件夹中的所有DjVu文件,并增加“包括子文件夹”选项。
新增功能:在“文件合并”功能中,支持合并指定文件夹中的所有子文件夹,并增加“包括子文件夹”、“包括顶级文件夹”选项。
新增功能:在“PDF校对工具”的“显示文字”功能中,允许更改文字颜色,透明度改为11级。
功能增强:在生成双层PDF时,对行高进行统一,避免安卓上的ezPDF Reader读断行。
功能增强:在生成双层PDF时,如果选择了“合并文本行”,会自动检查词间距,如果发现词间距较大,则不能算同一个字符串,避免文字拉太扁。
功能增强:在“文本”功能中“OCR文件夹”时,自动跳过索引文件,避免重复OCR。
功能增强:更改“文件合并”、“生成索引”中的文件名排序方式,“按字母顺序”时基本与Windows资源管理器顺序相同。
功能增强:如果PDG正文页之后还有附属页,而书签中没有这些附属页项,则自动生成指向这些附属页的书签项。
功能增强:更改多文件选择对话框的实现方式,减小不必要的内存占用。
功能增强:在DjVu转PDF时,对黑、白图像判断增加孤立点判断。
功能增强:继续增强MODI的强壮性,为清华文通擦屁股。
错误修正:某些3层DjVu转PDF后文字变灰。
错误修正:某些alpha通道透明PNG文件解码异常。
错误修正:某些CMYK色彩空间的JPG文件解码异常。
错误修正:在“转PDF”中,如果DjVu文件含共享字典,则“停止”按钮不起作用。
错误修正:转PDF时,如果有页面引用了共享数据字典,但该页面不含JB2数据,则转换出来的PDF数据不正确。

Version 2.02
功能增强:即使MODI(其实是清华文通)出错,也尽量不造成整个软件退出。
错误修正:修正英文版界面中的拼写错误。

Version 2.01
错误修正:大图版PDG处理后看起来发虚。

Version 2.00
新增功能:注释相关,包括导出、导入、删除注释(Annotation)。
新增功能:页面调整,插入空白页。
新增功能:DjVu转PDF,支持转换隐藏文本,允许在没有文本时OCR,并提供对自身所生成的双层PDF进行校对所需的辅助功能。
新增功能:DjVu转PDF,对于2层(彩色文本)DjVu,可以设置前景层的缩图比例(1~12)。
新增功能:DjVu转PDF,支持文件多选、支持一次转换整个文件夹中的文件。
新增功能:DjVu制作,支持OCR,即在转换的同时进行OCR,直接生成双层DjVu。
新增功能:文件合并、生成索引、DjVu制作中,增加“页面调整”按钮,便于处理。
功能增强:支持名为PDG,实为BMP的文件。
功能增强:文本相关,支持更多的OCR语言,支持一次OCR整个文件夹中的所有DjVu文件。
功能增强:支持某些非标准BMP。
功能修正:在“转PDF”功能中,去掉自动放大功能。以前为了保证低分辨率图像转换后的效果,如果发现需要转换的图像宽或高低于1170像素,将自动放大图像至3倍,然后再转换成DjVu。此功能与前一版本中加入的“低分辨率图像参数”选项重复,故去除。
功能修正:“文本相关”中,修正导出的XML文件格式,以前的格式不再兼容。
功能修正:“Pdg转换”中,缺省DPI从96改为300。
功能修正:“转为图像”中,256级灰度图像采用与彩色图像相同的文件格式。
功能修正:去掉“书签相关”功能,此功能与PdgCntEditor重复。
功能修正:在“转PDF”的“PDF参数”中,“优先使用图像扫描DPI”改为缺省选中。
功能修正:在“页面调整”的“批量删除”中,缺省页码从始终为1改为当前所选页。
错误修正:在“Pdg压缩”中,某些灰度插图会造成出错退出。
错误修正:在“DjVu制作”中,单层DjVu制作失败。
错误修正:在“文本相关”中,某些XML导入失败。
改为发布Unicode版,取消原ANSI版的发行。

Version 1.23
新增功能:在“DjVu制作”功能中,“参数设置”部分增加“低分辨率图像参数”选项,用于提高低分辨率(低于300 DPI)图像转换后的效果。

Version 1.22
错误修正:某些灰度04H的PDG会导致程序出错退出。

Version 1.21
新增功能:在导出JB2文件结构时,可以选择是否导出JB2符号为TIFF文件。
错误修正:转PDF时,如果未选择“展开
PDF的所有书签”选项,则生成的PDF文件中的多级书签项不符合PDF规范要求,在某些浏览器下阅读可能有问题。

Version 1.20
处理某些特定宽度的单色图像可能造成出错退出。

Version 1.19
继续消除单色图像右侧可能出现的黑色竖线。

Version 1.18
错误修正:某些单色图像右侧边界出现黑线。

Version 1.17
错误修正:“导入书签”出错。

Version 1.16
新增功能:在“文件结构”的“层导出”中,增加“嵌入INCL段”选项,详见使用说明。
新增功能:在“文件结构”的“层导出”中,增加“一样大小”选项,详见使用说明。
功能增强:在“文件结构”的“层导出”中,允许指定一次导出多页。
功能增强:加快“页面调整”界面中的翻页速度。
功能修正:在“文件结构”的“层导出”中,FG44、FGjp导出后成为BG44、BGjp,而不再保持原来的FG44、FGjp,这样就可以不用再附加上空白的SjbzBG44
功能修正:JPEG 2000编码不再采用Jasper,改用kakadu。
功能增强:在“文件结构”的“层导出”中,某些彩色文本层导出后成为黑白文本。
功能修正:更改英文版界面字体。

错误修正:某些JPEG 2000调色板图像解码不准确。
错误修正:如果需要处理的目录过长,可能会出错退出。
错误修正:修正英文版界面中的一些拼写错误。

Version 1.15b
新增功能:“页面编辑”界面中,支持快捷键,并在工具条按钮提示中提示对应的快捷键。
新增功能:“页面编辑”界面中,允许用鼠标一次选择多页进行移动、删除、旋转等操作。
新增功能:各文件、文件夹选择框支持从资源管理器拖拽文件、文件夹。
功能增强:改进二值化算法,减少OCR图像处理负担。
功能增强:在“DjVu制作”中,允许选择单个图像文件,实现单文件转换。
功能增强:黑白图像转DjVu时,能够识别颜色“不纯”的黑白图像。
功能增强:“隐藏文本”中的OCR语言支持意大利语。
错误修正:不能正确解码采用PHOTOMETRIC_PALETTE的单色TIFF图像。
错误修正:挂书签时,只挂了第一行。
错误修正:某些JPG中的EXIF旋转标识识别错误。
错误修正:在某些使用特殊分隔符的语言环境(如用逗号当作小数点的意大利语环境)下,制作出来的PDF文件打开失败。

Version 1.14
新增功能:在“页面调整”界面的工具条中,增加“另存为”按钮。
错误修正:修正“页面宽度”英文版界面中的一处拼写错误。

Version 1.13
错误修正:IJL不能正确解码某些含JFXX段的JPG文件。

Version 1.12
zlib、IJG代码恢复原始版本,与IPP版说再见,以避免层出不穷的兼容性问题。

Version 1.11
功能增强:对含无效字符的文件路径能够给出提示。
错误修正:彩色JPG转换成DjVu后会变花。

Version 1.10
功能增强:JPEG 2000解码改用Kakadu,以加快速度。
功能增强:JPEG编解码改用经过修正的IJL 2.0,以加快速度。
功能增强:zlib、IJG代码改用IPP优化版,以加快速度。
功能增强:对“DjVu制作”的缺省参数进行调整,提高彩图质量。
错误修正:在“DjVu制作”中,如果只需要转换一页,可能会提示文件夹下无文件。

Version 1.09
新增功能:在“页面调整”中,增加批量旋转功能。

Version 1.08
错误修正:在将某些多页TIFF转换成DjVu时,只出现第一页的内容。
错误修正:某些Old-style JPEG压缩的TIFF文件转换有错。

Version 1.07
错误修正:在“DjVu制作”中,如果“彩色图像转换为”参数选择了“纯图像(1层)”,则黑白图像转换成DjVu时会出错。
错误修正:生成的PDF文件“文档属性”中的创建日期、修改日期未按时区校正。

Version 1.06
恢复v1.04取消的“Pdg转换”功能。

Version 1.05
错误修正:DjVu转PDF时,如果遇到JB2字典中shape宽或高为0的情况,会出错退出。

Version 1.04
新增功能:“DjVu制作”,将图像文件转换成DjVu,详见使用说明。
新增功能:“文件拆分”中增加“重新编号”、“生成索引”、“嵌入INCL段(拆分后文件可单独打开)”选项,详见使用说明。
功能增强:DjVu转PDF支持Smmr数据段,即CCITT G4压缩的DjVu。
功能调整:原“Pdg转换”功能与“DjVu制作”功能重复,从此版本开始取消。
功能调整:“文本相关”页面中,OCR选项中的“自动拉伸”缺省改为选中,以对付倾斜页面。
错误修正:“文件合并”、“生成索引”、“转为图像”时,如果需要处理的文件包含指向外部文件的共享数据段,则生成的结果不正确。
错误修正:修正了一些内存漏洞。即花了四年时间,终于将VC报告的所有内存漏洞都补上了。
错误修正:在“页面调整”界面中,点击工具条上的“旋转”按钮后,预览界面没有及时刷新。
错误修正:按下F1键时,会显示错误的提示信息。

Version 1.03
新增功能:支持名为PDG,实为GIF的文件,方便从售书网站上补封面。
错误修正:DjVu转PDF时,如果碰到空白页面,转换后的PDF自空白页面起显示不正常。
错误修正:某些灰度页面转换成PDF后成为黑页。
错误修正:名为PDG,实为空白DjVu的文件转换不正确。

Version 1.02
新增功能:在“页面调整”中,加入“批量删除”功能。
功能增强:在“页面调整”中,显示绝对页码。
错误修正:DjVu转PDF时,如果DjVu多页共享数据字典,中间某页无Sjbz,则转换后的PDF有错。

Version 1.01
错误修正:在“Pdg压缩”时,会跳过名为PDG,实为JPG的文件。

Version 1.00
新增功能:DjVu转PDF。相关细节参见我写的《DjVu转PDF》。
新增功能:页面调整,可以插入、删除、移动、旋转页面。
新增功能:在“文件结构”页中可导出指定页码范围的JB2数据,即各个shape导出为tif,同时导出页面描述数据。
功能增强:支持带FGjp、BGjp段的DjVu文件。
新增功能:“书签相关”中,增加“删除书签”功能。
新增功能:支持名为PDG,实为jpeg 2000的文件,包括jpeg 2000插图。
功能增强:JasPer源代码升级至v1.900.1。
错误修正:OCR时如果一页有错,会导致后面所有页面不能正常OCR。
错误修正:合并某些引用外部文件的散页时,可能出错退出。
错误修正:从“文件结构”导出的某些前景、背景文件打开出错。
错误修正:在DjVu转图像时,某些调色板图像会丢失颜色。
错误修正:打开某些名为PDG,实为黑白TIFF的文件会出错退出。
错误修正:不能正常打开某些名为PDG,实为JPG压缩的TIFF文件。
错误修正:文件总长度太大时,“PDG压缩”结束后报告的压缩比不正确。
错误修正:碰到假冒DjVu时,某些操作会导致产生内存漏洞。
同步发行英文版,但是英文版中去掉了PDG、中美百万相关内容。

Version 0.21
错误修正:打开某些黑白PDG时可能出错退出。

Version 0.20
错误修正:某些CMYK色彩空间的JPG(PDG)文件转换不正确。

Version 0.19
错误修正:某些CMYK色彩空间的JPG(PDG)文件转换不正确。

Version 0.18
功能修正:在“书签相关”的“a.opf->接口文件”中,改用微软XML控件对a.opf文件进行解析,以增强兼容性。

Version 0.17
功能增强:支持ACH格式的PDG,支持04H的黑白PDG。

Version 0.16
功能增强:libpng源代码升级至v1.2.28。
错误修正:碰到某些破损PNG会出错。

Version 0.15
功能增强:放宽格式检查,兼容某些第三方工具生成的不规范PDG。
错误修正:在“文件合并”、“生成索引”中,“按结尾数字”排序对纯数字文件名无效。

Version 0.14
新增功能:在“PDG转换”、“PDG压缩”功能中,支持名为PDG,实为DjVu、TIFF的文件。
功能修正:“文件拆分”功能中,“拆分后的文件名”缺省从8位数字改成6位数字,这样拆分后只需要一个简单的ren *.djvu *.pdg,即可用鄙人的PDG相关软件进行 浏览。
功能修正:“Pdg转换”功能中,如果选择了“重新编号转换出来的文件”,则重新编号后的文件为6位数字,不再是8位。

Version 0.13
错误修正:在“文本相关”功能中,不能对单页DjVu进行操作。
错误修正:在“文本相关”中使用OCR时,会在临时文件夹下留下垃圾文件。

Version 0.12
新增功能:在“转为图像”功能中,可以选择索引色页的保存方式,详见FAQ。
新增功能:在“PDG转换”、“PDG压缩”功能中,支持名为PDG,实为PNG的文件。
功能增强:在“文本相关”功能中,支持日文OCR。当然需要先安装日文MODI。
错误修正:在将PDG转换成DjVu时,如果PDG文件是灰度JPG,转换过程会出错。

Version 0.11
错误修正:在OCR时,如果某页OCR结果为空,则会报错,并且不能继续OCR后续页面。

Version 0.10
功能修正:“文本相关”功能中,原“导出文本”按钮更名为“导出纯文本”,导出文本格式从UTF-8改为ANSI。
新增功能:“文本相关”功能中的“导出XML文本”、“导入XML文本”,可以将隐藏文本以XML格式导出、导入。理论上说,这两个功能结合起来,可以实现DjVu文本校对。而“导入XML文本”则为使用第三方OCR提供了接口。
新增功能:“文本相关”功能中的“OCR”,生成可检索的隐藏文本。改功能对DjVu中的原始图像不会造成任何影响,可以对其它软件生成的DjVu文件进行OCR。

Version 0.09
新增功能:在“书签相关”页中,启动PdgCntEditor,对书签文件进行编辑。
功能增强:改进“按末尾数字排序”算法,能够从文件名中正确抽取最后一个数字。

Version 0.08
新增功能:在“文件合并”中,新增“合并过程中花时间检查坏页”选项,避免因为有坏页造成合并后的文件打开错误。
新增功能:在“Pdg压缩”中,能够将单页DjVu转换成PDG。
功能增强:在“文件合并”中,允许合并多个多页DjVu成一个大DjVu。以前只允许合并单页DjVu。
功能增强:兼容某些非标准格式的BookContents.dat。
错误修正:在用“Pdg压缩”功能将单页DjVu转换成PDG时,某些正常的DjVu转换失败。
错误修正:在更改“显示设置”后,提示信息中出现TextForever的信息。
错误修正:帮助文件中“文件结构”部分的使用说明有误。
错误修正:在加挂书签时,内存消耗太多,导致某些大文件不能加挂书签。
错误修正:在“PDG压缩”功能中,将灰度JPG压缩成快速版DjVu会出现图像变形。
在FAQ部分增加“文件合并”的几个常见问题。

Version 0.07
新增功能:“PDG压缩”,能够对清晰版进行无损压缩,或将清晰版压缩成快速版,或将黑白TIFF转换成PDG。详见使用说明。
新增功能:“转为图像”,将多页DjVu的每一页转换成一个图像。
新增功能:“页面宽度”,将多页DjVu的页面宽度或DPI设置为一个统一值。
新增功能:PDG转DjVu时,能够对生成的DjVu文件的DPI进行设置。
功能增强:PDG转DjVu时,能够报告插图下载不完全,或插图数据错误的T3文件。
功能增强:PDG转DjVu时,改进对黑线页的识别。
功能增强:在合并DjVu文件时,能够自动跳过出错页,当然这样可能导致书签不准。
功能增强:优化T3PDG转DjVu过程。
功能增强:给每个页签加了小图标。

Version 0.06
错误修正:在转换某些T3 PDG文件时,会因为生成白色背景而显示不出文字层。

Version 0.05
功能增强:在PDG转DjVu的参数选择中,“插图压缩效果”选项新增“很烂快速版”,给那些认为文件大小优先于图像质量的人。
错误修正:个别黑白图像被识别为JPG图像。
错误修正:解码某些特殊软件下载的05H时,会因为偏移量66H处的1出问题。

Version 0.04
新增功能:PDG转DjVu。
新增功能:在“文件结构”页中,可以将DjVu页面的三层结构(蒙板层、前景层、背景层)导出为独立的DjVu文件,便于对DjVu文件进行分析。
新增功能:将中美百万的catalog.xml转换成书签接口文件,便于挂书签。
新增功能:在合并文件时,能够加挂书签。

Version 0.03
新增功能:生成索引。
错误修正:导出书签时生成的txt文件是utf8编码,导致再次导入后书签出现乱码。
修正了测试过程中发现的一些bug。

Version 0.02
错误修正:打开DjVu会出错。

Version 0.01
实现文件合并、文件拆分、文本处理、书签处理、结构导出。