按照HugeCHM软件界面上标注的1、2、3、4的顺序执行:
选择需要打包的文件所在文件夹。此文件夹及其下所有子文件夹中的所有文件将被打包到CHM文件中。
选择封面文件、目录文件、说明文件,输入CHM文件标题(将来显示在CHM文件标题条上),并选择是否显示工具条及工具条选项。对这些参数的具体说明见后。
选择生成的CHM文件所在位置及文件名。
点“开始打包”按钮即开始打包。打包过程中如果需要中断,点击“停止”按钮即可。打包完成后,如果“自动打开CHM”选项被选中,则自动打开生成的CHM,否则只提示打包完成。 如果“自动关机”选项被选中,则打包完成后自动关机,但如果是通过点“停止”按钮强制中断,则不会自动关机。
如果需要反复制作一个CHM文件,可以在设定好参数后,点“保存”按钮,将参数保存到文件,下次点“调入”按钮,即可调入以前保存的参数。
注意:如果选择了“显示进度”,在开始打包前必须花时间统计需要打包的文件总长度,然后按长度显示打包进度。由于受32位限制,在文件总长度大于4 GB时进度显示会出问题。不过在这种情况下,本来就应该关闭“显示进度”,以免打包前花费太多的时间去统计总长度。
对封面、目录、说明页和工具条的解释:
在制作电子书时,很多人喜欢按照纸书的习惯,制作一个封面,点击后再进入目录或正文。在微软发布的HTML Help Workshop(CHM打包、反编译软件的鼻祖)中,将封面页称为“缺省页(default page)”,而目录页称为“主页(home page)”,并且在CHM浏览器的工具条上提供一个“主页”按钮,点击后直接跳到“主页”。当然,如果觉得没有必要玩这样的花头,也可以将封面和目录合一,指向同一个文件。在HugeCHM里,缺省认为这两个页面是同一个,即选择其中一个后,如果另外一个为空,则自动设置为同一个。
另外有些人为了不使自己的劳动被“埋没”,还喜欢单独制作一个说明页,对书籍、版权、制作者做一个简短的介绍。
如果用户选择的封面、目录不是同一个文件,则打包出来的CHM的工具条上会多出“主页”、“关于”两个按钮,分别对应主页、说明页。工具条上的“主页”指向目录页。
对“窗口位置”的说明:
某些人喜欢设置CHM的初始窗口位置,即打开CHM后窗口定位到固定的位置和大小,这时可以通过此功能进行设置:点击“选择”按钮,弹出选择框,拖动、缩放此窗口,点击“OK”,打包后CHM的初始窗口位置、大小就是所选的位置、大小。
如果选择了窗口位置后,再选择“用户打开CHM后,可以改变初始窗口位置和大小”,则第一次打开CHM时定位到指定的位置,以后再次打开CHM时,定位到上次CHM退出时的位置和大小。否则,每次打开CHM文件都会定位到固定的位置和大小。
如果点击“清空”按钮,将位置值全部清空(缺省情况),则CHM初始窗口位置由CHM浏览器决定,“用户打开CHM后,可以改变初始窗口位置和大小”选项视为选择。
按HugeCHM界面上标注的1、2、3、4的顺序执行:
选择“需要拆分的CHM文件”。
如果打算对CHM内部控制文件进行研究,就勾选“导出CHM内部数据文件”,否则不勾选(缺省为不勾选)。在不勾选时,与一般CHM反编译软件功能相同,只不过不能批量反编译。如果需要对CHM进行批量反编译,推荐使用 免费的UnEBook。
选择存放拆分后文件的文件夹。
点击“开始拆分”按钮即可开始拆分。拆分过程中如果需要中断,点击“停止”按钮即可。 如果“自动关机”选项被选中,则拆分完成后自动关机,但如果是通过点“停止”按钮强制中断,则不会自动关机。
Q:HugeCHM是什么?
A:这是一个CHM打包、拆分工具,不仅可以将海量(测试近20万个)HTML文件打包成CHM,而且可以反编译CHM,包括CHM内部控制文件。
Q:现在已经有N多CHM打包工具,为什么还要开发HugeCHM?
A:现在CHM打包工具确实很多,但都有一个共同特点:基于微软的HHA.DLL实现。因此也都有一个天生的缺陷:如果要打包的文件太多,就会出现“内存不足”的错误。例如我要把近20万个文件打成一个CHM,从最简单的HHC试到收费的打包软件,都在相同的地方出现相同的错误。其原因,就在于HHA.DLL功能太复杂了,内部需要生成很多表格,规模一大自然内存就爆了。但是我认为对于海量HTML来说,这些复杂的功能真的没啥用。
既然基于HHA.DLL的软件在处理海量文件时死路一条,也就只能指望不依赖于HHA.DLL的软件了。以前在写《常见电子书格式及其反编译思路》的时候,我以为开源的hhm既然敢叫HTML Help Maker,应该能够摆脱HHA.DLL的限制,没想到到它的官方网站一看,却看到一行字:This is a program that aims to produce MS' CHM (Compiled HTML Help) files. Currently it can create the archive format, but no internal files.再拜读一下源代码,基本上相当于自己实现了Windows下ITS文件访问接口,但是不能生成CHM文件内部的控制文件,顶多算个半成品。摆出这样的乌龙,我想是因为微软没有公开CHM的内部文件格式,导致Paul Wise写的《Unofficial (Preliminary) HTML Help Specification》里也有很多unknown的地方。
还好我以前写UnEBook的时候,拜读过Christian Ernst Rysgaard的《Htmlhelp Forensics》,知道微软的ITStorage可以对CHM文件(ITS格式)进行操作,这个毕竟是官方提供的接口,比民间版的要靠得住些。只不过在UnEBook里是用来读CHM,这次改成写CHM而已,CHM内部控制文件则在参考Paul Wise写的《Unofficial (Preliminary) HTML Help Specification》基础上,逐文件、逐字节加以校对。
Q:与其他CHM打包软件相比,HugeCHM有什么特点?
A:HugeCHM最大的特色是没有用HHA.DLL,而是直接通过ITStorage接口对CHM文件进行操作,因此能对CHM内部控制文件进行更精准的控制(其实是进行了大刀阔斧的删减),从而:
能够对海量HTML进行打包。普通CHM打包工具不怕文件大(总长度不超过2 GB应该没事),但怕文件太多,而HugeCHM专门就是为处理海量HTML开发的。
软件界面简洁,连一般HTML打包软件常见的文件列表都没有。因为在处理海量文件时,文件列表实在是一件既耗时间又耗内存的工作,但是一般打包工具为了生成HHA.DLL所需的HHP文件,不得不花费时间、内存生成文件列表,HugeCHM则不需要。
生成的CHM文件界面也很简洁,没有目录、索引、搜索、书签等导航项。其实在面对海量HTML文件时,我根本就不相信会有人打算去做这些东西。
我本人平时比较喜欢看电子书,知道目前国内某些人在做电子书时,总喜欢给电子书加一个封面,点进去才是真正的内容 ,并且总想在某处引导到一个说明页,介绍一下制作者。用普通CHM打包工具实现这些当然不成问题,不过要点技巧;而HugeCHM简化了这种操作,用户直接选择封面页、目录页 、说明页即可,并且在生成的CHM文件工具条中自动加上“封面”、“关于”按钮。当然如果不喜欢,也可以选择不显示工具条。
对于海量文件,不论是打包还是拆分都将是一个漫长的过程,因此带自动关机选项,便于夜间无人值守下运行。
与普通CHM打包软件相比,生成的速度要快那么一点点,生成时消耗的内存要少那么一点点,最终生成的CHM文件也要小那么一点点。