网上搜索CHM制作软件结果繁多,但真正好用的并不多,能称为优秀的只剩下几款。其中我觉得优秀又免费的只有 Precision Helper,称得上最佳免费 CHM 制作软件。帮助创作工具,它的重点是现有的HTML文件,XML文件,脚本,图像和其他资源的组织。
Precision Helper(CHM制作大师) V2.0.1.7 绿色中文版: www.jb51.net/softs/120675.html
从源文件创建项目
在打开程序后,将显示欢迎页,如下图(关于其中各部分的功能说明,请参阅帮助):
此时,点击新建项目,然后选择新项目的保存位置并输入项目文件名,确定后将出现下图:
其中,左边为导航栏(可调整位置),中间的当前主题为项目属性,现在我们先点击左下角包含的文件,在出现的选项卡中添加源文件(根据图示进行操作):
为了方便,我这里已经把源文件复制到了当前项目的目录下(如果没有则这里选择目标文件夹),所以直接添加项目文件,选中所有文件并确定后这些文件将出现在包含的文件选项卡下方:
现在依次点击 Ribbon 栏工具下面的自动添加主题和自动添加关键字(这里的主题是指 CHM 文件左边目录中的目录项,关键字则是到主题文件的索引),根据提示进行操作到添加完成。然后点击左边导航栏中的目录和关键字索引后可以看到上方出现了刚才添加的主题和关键字:
注:制作 CHM 并不一定要求需要目录和索引,不过对于包含较多网页的 CHM,包含目录和索引会让用户导航更加方便。尤其是有些需要经常查阅的 CHM 文件,通过索引快速定位会比较方便,并且可以作为其他程序的上下文帮助。
这样就自动生成了目录和索引,此时目录中的文字和索引中的关键字都直接提取自网页文件中的标题。如果含有较多网页,建议对目录项进行分类和顺序调整,让导航更方便一些。
现在回到原来的项目属性选项卡,可以看到“目录文件”和“索引文件”输入框已经自动填好了(自动生成的目录文件和索引文件与项目文件在相同目录),这里补充一些必要的部分:
在“已编译帮助文件”中输入目标 CHM 的路径和名称或者可以通过紧邻的“…”按钮进行选择(如果没有指定路径,则生成时与项目文件在相同路径);
对于“默认主题”建议使用紧邻的这个按钮选择,这个主题网页将在每次打开 CHM 文件时自动显示;
下面“编译全文搜索信息”则为 CHM 文件增加搜索功能,如果不需要搜索功能,那么取消选中这个选项可以极大减少生成的 CHM 文件的大小和加快生成的速度。
现在我们来设置标题,点击右侧的对象检视器,“当前项目”右边的输入框中会显示为“无标题”,直接输入标题接着回车(注意如果没有回车则不会保存):
设置 CHM 文件的基本操作到这里就完成了,此时可以转到 Ribbon 栏发布下的运行来进行编译并查看结果。
三、反编译 CHM 文件创建项目
几乎每个同类软件都能反编译 CHM 文件,这个软件在反编译 CHM 软件时,除了解压其中的网页文件/目录文件/索引文件等,它还会自动生成项目文件。现在从 Ribbon 栏工具下选择CHM 导入(注:不是“CHM 查看器”),接着选择要反编译的 CHM 文件和新建项目的目录(建议使用空目录,否则新建项目的项目文件 hhp 会包含多余文件),然后将出现下面的属性窗口:
此时可以对 CHM 文件的外观和行为进行进一步设置,方法与前面新建时相同。
如果您目前正在使用其他 CHM 制作工具,则可以获取它们在编译项目时的所有源文件(包括项目文件、目录文件、索引文件和网页文件等)直接作为 Precision Helper 中的项目,如果获取项目文件较为困难(例如网上获取的 CHM 文件),则可以反编译 CHM 文件来新建项目。
四、插件的安装及编写
尽管 Precision Helper 已经包含了大量与制作 CHM 相关的功能,然而用户的需求是各种各样的,总有一些目前尚未满足的需求,Precision Helper 为此提供了扩展接口。您可以首先看看程序中自带的一些插件(例如 HTML Tidy),或者到官方网站看看程序中没有自带的插件(查看在线插件)。
1、安装插件
下载插件文件后,把它解压到 Extras 目录。对于绿色版这个目录在 Precision Helper 目录下,对于安装版,这个目录为C:Documents and Settings%UserName%AppDataPrecisionprecisionhelperExtras(Windows 2000/XP)或C:Users%UserName%AppDataRoamingPrecisionprecisionhelperExtras(Windows Vista 或更高版本)。
启动程序时会自动加载插件目录中的插件。
2、编写插件
如果前面没有找到自己需要的功能,可以考虑自己编写插件。根据自己需要的功能和所选择的工具,编写插件可以很简单,也可能较复杂。
为了进行演示,我这里编写一个用来改变当前项目中所有文件编码的插件。程序提供的插件接口有两种类型:命令行和 Pascal Script,这里我使用命令行。同时使用AutoHotkey 脚本实现插件的功能。
先编写插件配置文件(扩展名必须为 phe),通过这个文件程序才能知道如何调用这个插件。下面是演示插件的配置文件:
[Precision Helper Extension]; cmdline 表示使用命令行接口Interface=cmdline; 在 Precision Helper 中显示的插件标题和提示信息。Caption=Encoding ConversionHint=Convert the encoding of htm/html files in current project.Caption.cn=编码转换Hint.cn=转换项目中所有网页文件的编码为用户指定的编码。[Application]; 要执行的程序,其中 %APPEXTRAS% 表示 Precision Helper 的扩展文件夹。可以在帮助中查看到更多这里能使用的变量。%APPEXTRAS%EncodingconversionEncodingconversion.exe[Command-line]; 传递给程序的参数,%PROJECTFOLDER% 表示项目文件夹。这样我们可以对里面的所有网页文件进行操作。Parameters="%PROJECTFOLDER%"waitfor=0saveTOC=1saveIDX=0saveProject=1reloadTOC=1reloadIDX=0reloadProject=1[IDE]; 设置这个扩展在 Precision Helper GUI 哪些部分的工具栏显示出来。ribbonHOME=1ribbonTOC=1ribbonIDX=0ribbonPUB=0ribbonTOOLS=1ribbonHELP=0TopicSource=0
接着把这个插件配置文件和要调用的程序放在插件目录的Encodingconversion子目录中,包括 Encodingconversion.phe、Encodingconversion.exe 以及要调用程序需要的其他文件(这里为了方便,都放在同一个目录中)。其中 Encodingconversion.exe 是由 ahk 脚本编译而成,如果使用安装版的 AutoHotkey,那么这里直接使用 ahk 脚本而不进行编译。
我把这个插件所有文件打包成了压缩文件,请点击这里下载进行测试,其中包含了 ahk 脚本的源文件。把它解压到插件目录接着启动程序,则可以在相应位置的工具栏看到插件了:
注:现在显示的是默认插件图标,还可以自己定制插件图标,需要的朋友请查看帮助。
从编写这个插件的过程可以发现,如果我们可以找到相应功能的程序(需支持命令行调用),那么只需要编写配置文件就行了。
五、最终帮助的发布格式
在本文中主要讲输出 CHM 格式,这是 Precision Helper 的主要输出格式,不过它还支持输出为其他文件格式,下面简要介绍它支持的几种主要格式:
1. CHM:早期 Windows 系统中的文件格式是 WinHelp(扩展名 .hlp 和 .cnt),从 Windows Vista 起对 WinHelp 格式的支持已经停止了。从 Windows 98 开始引进了 HTML Help(扩展名 .chm)。HTML Help 在单文件中集成了目录和帮助,同时支持索引、全文搜索和基于 html 的丰富的格式表现,所以目前成为了 Windows 平台上在程序中使用的最常见的联机帮助格式。在 Windows 平台中分享一些无需编辑和打印的资料时,推荐使用这种格式。
2. WebHelp:这种格式是把项目的目录结构(源文件)复制到特定文件夹并生成 HTML 或 XML 格式的“框架”,这样可以方便地在网页浏览器中进行浏览。许多程序的在线帮助使用类似的方法实现,具体的效果请参阅:Precision Helper 在线帮助(英文)。自带的样式已经不错了,不过如果您会网页或懂得处理图片,那么通过修改模板可以完全按自己的需求进行自定义。
对于本地 CHM 文件一般我建议使用 GB2312 编码,不过对于在线帮助可能使用 UTF-8 较好。
3. ePUB:这是广泛使用的电子书格式,方便在不同的设备上查看。具体效果请参阅:Precision
Helper 帮助电子书(英文)。
4. 单个 HTML 文档:实际上是合并所有主题到一个文件并复制项目的其他内容(图像、样式等)到一个特定文件夹(含目录结构)。这种格式一般作为中间格式方便进一步的操作,例如进行打印或转换为 PDF 格式(此时另需安装 PDF 打印机或转换工具,具体请参阅帮助)。
六、关于 CHM 的常见问题及技巧
这里简要说说与 CHM 格式相关的一些问题和技巧,采用问答形式。
1. 问:我从网上下载了一个 CHM 文件,打开查看页面时,却提示“无法显示网页…”,每个页面都是这样,什么原因呢?
答:这个问题是由于微软在 Windows 更新中增加了对网络传送的 CHM 文件的安全限制造成。执行如下操作:查看此文件属性,在属性框中点击“解除锁定”按钮,接着确定后就可以正常查看了。如果直接从网上下载了大量的 CHM 文件,那么可以修改注册表以解除这个安全限制(不推荐)。相关内容请参阅:MS05-26,KB806054,KB902225。
2. 问:我想发布一些 CHM 格式的资料到网上,但我希望用户下载后可以直接查看,而不需要麻烦的去解锁,有什么办法吗?
答:一个非常简单的办法是对 CHM 文件进行压缩(例如压缩为 ZIP 文件)这样其他用户下载解压后可直接查看。目前,AutoHotkey 中文帮助离线文件的发布采用这种形式,这样方便传输,也方便用户。
在实践中,我发现有不少用户在打开 CHM 文件看到“无法显示网页…”时不清楚可以解锁后查看,所以发布帮助时进行压缩是比较必要的。
3. 问:我在从 HTM/HTML 文件创建 CHM 文件时,产生的 CHM 文件中某些页面为空白,并且无法搜索中文,该如何解决?
答:在我的经验中,这种情况由编码引起。对于 CHM 格式,有两处与编码有关的位置:CHM 自身的编码和其中 HTM/HTML 文件采用的编码,其中 HTM/HTML 文件的编码包括文件头部的编码声明和文件的编码。要避免上述问题,建议:对于 CHM 自身的编码选择 ANSI 或 GB2312(对于简体中文系统,这两者想过相同);对于 HTM/HTML 文件的头部和文件也使用这样的编码。
如果一定要在网页中使用 UTF-8 编码,则可进行修改让网页的 标签对之间只含有 ASCII 字符,这样可以避免某些页面显示为空白,然而这样仍然无法搜索中文。(目前尚不确定在不同的系统中,是否可以通过把 IE 更新到最新版本来解决这样的问题。)
另外,如果把 CHM 文件放在较深层次的目录或中文目录中,可能会在使用时出现某些问题。
4. 问:我需要经常/批量的反编译 CHM 文件,每次都要打开一个软件进行解压很麻烦,能方便些吗?
答:使用批处理命令:
hh.exe -decompile
其中 hh.exe 是系统自带的 CHM 查看器,
是目标目录,是要解压的 CHM 文件。需要批量解压则在循环中使用这个命令。此外,许多压缩解压软件也能解压 CHM 文件或查看其内部文件。使用 TotalCommander 的用户可以为内部命令 cm_GoToDir 设置一个热键来直接进入 CHM 文件查看里面的内容。
5. 问:我需要经常/批量的从已准备好的项目文件编译成 CHM 文件,能实现吗?
答:首先请下载Microsoft HTML Help Workshop(请下载中间 3.3 M的文件),并从中提取 hhc.exe 和 hha.dll 文件,现在可以使用下列批处理命令:
hhc.exe
myproject.hhp 为要编译的项目文件,执行前请确保 hhc.exe 和 hha.dll 文件存在。如果成功,生成的 CHM 文件将会出现在 myproject.hhp 文件的OPTIONS段下Compiled file对应的值指定的文件路径。
另一种方法是把需要编译的所有项目添加到 Precision Helper,然后从它的开始菜单中打开构建列表,这时在 Robbin 栏的构建下将出现编译所有按钮,点击它即可以编译所有在构建列表中的项目。
6. 问:我想在查看 CHM 时做一些标记,能实现吗?
答:由于 CHM 格式主要设计用于发布程序的联机帮助,所以在一些特殊情况下可能不太方便,例如无法像 PDF 文档那样添加注释。使用一些工具可以实现类似的功能,例如 CHM Editor 可以支持直接编辑 CHM 中的页面,Ultrachm 可以高亮 CHM 中的文本等。
七、小结
本文简要介绍了 Precision Helper 创建新项目的基本功能,更多的功能和用法等请参阅帮助。如果希望试验它的一些功能,建议使用程序包中自带的 Precision Helper 的帮助的项目文件(在 samples 文件夹中)进行测试。
无论您是制作 CHM 帮助的新人还是老用户,欢迎体验 Precision Helper,在绝大多数情况下它都能满足您的需求。如果您发现了您需要而它尚未支持的功能(请先查看帮助确认),欢迎到官方查找已有的插件(插件查看地址)或编写自己的插件,或者反馈给开发组(邮件地址:support@be-precision.com)。