许多用户都有制作 CHM 文档的经历,或许是为了与他人分享资料,或许是为自己开发软件提供帮助。尽管网上搜索CHM制作软件结果繁多,但真正好用的并不多,能称为优秀的只剩下几款。其中我觉得优秀又免费的只有 Precision Helper,称得上最佳免费 CHM 制作软件。
为什么说它优秀呢?
1、新用户能快速上手,使用方便:Precision Helper 的 Ribbon 界面, 直观可视化, 主要的功能都能在这里找到,总体设计较为人性化。
2、支持许多高级功能,一定程度上满足高级用户。支持对象检视器、API测试器等高级功能,支持界面的高度可定制性。还通过模板提供了一些功能的自定义性,并且还提供了方便的扩展接口。
3、直接使用 hhp 作为项目文件。这点是在功能之外我很看重的一个特性。许多同类软件使用专有的项目文件格式(注1),尽管实际上并不能“套牢”用户,不过还是给用户带来了不少麻烦,而它直接使用 hhp 作为项目文件格式,用户可以在充分使用后做出自己的选择。对于目前使用其他软件的用户也不用担心,通过 Precision Helper 的反编译功能(后文介绍),您可以轻松的从那些专有的项目文件格式中解放出来。
本文目录:
一、简单介绍
二、从源文件创建项目
三、反编译 CHM 文件创建项目
四、插件的安装及编写
五、最终帮助的发布格式
六、关于CHM的常见问题及技巧
七、小结
八、其他补充
一、简单介绍
下面简要介绍 Precision Helper:
软件名称:Precision Helper
开发公司:Precision software & consulting
官方网站:http://www.be-precision.com
下载地址:便携版(推荐)| 安装版| 更多
由于官方直接提供了绿色版,并且使用安装版的安装过程也很简单,所以这里不介绍安装的过程。需要注意如果当前系统上没有安装 Microsoft HTML Help Workshop(注2),那么在安装过程中会提示下载安装,如果是绿色版则必须手动安装才能生成 CHM 文件,这里提供它的下载地址(大小 3.3 MB):Microsoft HTML Help Workshop 下载(尽管实际上 Precision Helper 只需要其中的一个文件,不过微软建议完整安装。)
注1: 这里说的使用专有项目文件格式是指在制作时的项目格式,实际上它们都支持导入 hhp 文件来创建项目,但如果要获取修改后的 hhp 文件则不太容易。
注2: 除了 Microsoft HTML Help Workshop,其他 CHM 制作工具都是一层外壳,它们都是利用这个程序的组件编译 CHM 文件。
- 帮助项目管理
最近打开的项目列表,完整的项目列表及灵活的添加项目到列表的方式 - 编辑目录和索引
灵活的编辑目录和索引中的项,众多创建主题的方式,内嵌主题编辑器 - 上下文帮助编辑器
完全控制分配上下文 ID、别名 ID、源文件和注释 - 现代的视觉外观
Ribbon 栏, 可对界面元素的布局和可视化设置进行灵活调整 - 发布最终帮助为多种格式
CHM、WebHelp、ePUB 和单个 HTML 档(方便打印或转换为 PDF 或其他格式) - 创作帮助的的其他辅助工具文本编辑器,多条件过滤文件,与其他实例或外部程序间拖放操作,可视化窗口类型设计器
- 其他支持工具
CHM 查看器,API 测试器,快速启动,全局搜索
完整的详细功能请参阅帮助中 [主要功能-完整功能列表] 部分。
二、从源文件创建项目
在打开程序后,将显示欢迎页,如下图(关于其中各部分的功能说明,请参阅帮助):
此时,点击新建项目,然后选择新项目的保存位置并输入项目文件名,确定后将出现下图:
其中,左边为导航栏(可调整位置),中间的当前主题为项目属性,现在我们先点击左下角包含的文件,在出现的选项卡中添加源文件(根据图示进行操作):
为了方便,我这里已经把源文件复制到了当前项目的目录下(如果没有则这里选择目标文件夹),所以直接添加项目文件,选中所有文件并确定后这些文件将出现在包含的文件选项卡下方:
现在依次点击 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%\AppData\Precision\precisionhelper\Extras(Windows 2000/XP)或C:\Users\%UserName%\AppData\Roaming\Precision\precisionhelper\Extras(Windows Vista 或更高版本)。
启动程序时会自动加载插件目录中的插件。
2、编写插件
如果前面没有找到自己需要的功能,可以考虑自己编写插件。根据自己需要的功能和所选择的工具,编写插件可以很简单,也可能较复杂。
为了进行演示,我这里编写一个用来改变当前项目中所有文件编码的插件。程序提供的插件接口有两种类型:命令行和 Pascal Script,这里我使用命令行。同时使用 AutoHotkey 脚本实现插件的功能。
先编写插件配置文件(扩展名必须为 phe),通过这个文件程序才能知道如何调用这个插件。下面是演示插件的配置文件:
[Precision Helper Extension] ; cmdline 表示使用命令行接口 Interface=cmdline ; 在 Precision Helper 中显示的插件标题和提示信息。 Caption=Encoding Conversion Hint=Convert the encoding of htm/html files in current project. Caption.cn=编码转换 Hint.cn=转换项目中所有网页文件的编码为用户指定的编码。 [Application] ; 要执行的程序,其中 %APPEXTRAS% 表示 Precision Helper 的扩展文件夹。可以在帮助中查看到更多这里能使用的变量。 %APPEXTRAS%\Encodingconversion\Encodingconversion.exe [Command-line] ; 传递给程序的参数,%PROJECTFOLDER% 表示项目文件夹。这样我们可以对里面的所有网页文件进行操作。 Parameters="%PROJECTFOLDER%" waitfor=0 saveTOC=1 saveIDX=0 saveProject=1 reloadTOC=1 reloadIDX=0 reloadProject=1 [IDE] ; 设置这个扩展在 Precision Helper GUI 哪些部分的工具栏显示出来。 ribbonHOME=1 ribbonTOC=1 ribbonIDX=0 ribbonPUB=0 ribbonTOOLS=1 ribbonHELP=0 TopicSource=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 编码,则可进行修改让网页的 <title></title> 标签对之间只含有 ASCII 字符,这样可以避免某些页面显示为空白,然而这样仍然无法搜索中文。(目前尚不确定在不同的系统中,是否可以通过把 IE 更新到最新版本来解决这样的问题。)
另外,如果把 CHM 文件放在较深层次的目录或中文目录中,可能会在使用时出现某些问题。
4. 问:我需要经常/批量的反编译 CHM 文件,每次都要打开一个软件进行解压很麻烦,能方便些吗?
答:使用批处理命令:
hh.exe -decompile <dir> <object.chm>
其中 hh.exe 是系统自带的 CHM 查看器,<dir> 是目标目录,<object.chm> 是要解压的 CHM 文件。需要批量解压则在循环中使用这个命令。此外,许多压缩解压软件也能解压 CHM 文件或查看其内部文件。使用 TotalCommander 的用户可以为内部命令 cm_GoToDir 设置一个热键来直接进入 CHM 文件查看里面的内容。
5. 问:我需要经常/批量的从已准备好的项目文件编译成 CHM 文件,能实现吗?
答:首先请下载 Microsoft HTML Help Workshop(请下载中间 3.3 M的文件),并从中提取 hhc.exe 和 hha.dll 文件,现在可以使用下列批处理命令:
hhc.exe <myproject.hhp>
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)。
八、其他补充
1、我制作 CHM 的一些经历
我最初生成 CHM 是使用了 TotalCommander 中的插件 CHMDir(善用佳软注:我发布的TC学堂的chm电子书,也是用该插件完成的),但这个插件功能较弱,无法进行更多的设置和包含全文搜索功能(这是最初我更新的 AutoHotkey 中文帮助不含搜索的原因,很多 AutoHotkey 中文用户知道)。之后开始了一路寻找这类软件的过程,在选择这个软件一段时间后寻找结束。目前 AutoHotkey 帮助在更新时的解压及生成已经使用前面所述的方法脚本化,所以一般只在创建新帮助时才使用 Precision Helper。
2、关于 Precision Helper 的中文翻译
目前的中文界面和帮助是我翻译的,由于英语水平及能力的限制,在准确性和表达的通顺上存在问题。如果有哪位朋友对 CHM 的各方面功能比较熟悉,有空且愿意帮忙进行完善(以及翻译官方网站上与 Precision Helper 相关的网页),则可以尝试和他们协商赠送您一款他们商业软件的授权(这是他们对译者的感谢,由于我只需要他们的这个软件,所以当时放弃)。在翻译时我使用 OmegaT,这是种能快速上手的翻译记忆软件,同时把翻译记忆提供给了他们,所以在进行完善时主要进行校对,而不需要输入现在的翻译(欲简单了解 OmegaT 请参阅维基百科上 OmegaT 的介绍和 OmegaT — 開放源碼電腦翻譯輔助程式)。
3、关于捐赠
Precision Helper 是免费软件,如果您觉得它给您的很大的帮助,可以考虑捐赠以支持它们进一步的开发(捐赠地址)。
from: http://xbeta.info/chm.htm