手动挡CHM 编译与反编译
最近真是忙晕了。今天小发一篇日志,关于CHM 的。
什么是CHM
CHM 全称Complied Help Manual,即已编译帮助手册,由微软发布,在Windows 平台下很常见,很多软件的帮助文件就是CHM 文件,也有不少的电子书是用CHM 格式存储的。
CHM 其实就是将一些HTML 文件打包压缩,加入索引、搜索、目录等功能。
反编译CHM
反编译后的CHM 会变成HTML 文件外加嵌入到CHM 的图片、声音等文件,也可能还有用于设定样式的CSS 文件。
先说说为什么要反编译CHM ,有些时候想要单独保存CHM 中的一篇文章,如果直接复制,格式完全消失。对于一些纯文字的东西这无所谓,但是要是这些格式消失的地方有的是代码和表格,那看起来相当不方便;而另外一方面,有的时候想翻译某个外文CHM ,反编译后直接编辑HTML 文件会相当的方便。
市场上有很多反编译CHM 的收费工具,或者说市场上很多关于CHM 的工具都是收费的,其实要反编译CHM 无需任何的工具,一条命令就好。
比如我要将F:\piaoyoushan\sunxun.chm 这个文件反编译到F:\piaoyoushan\下,只要输入:
>hh -decompiled F:\piaoyoushan F:\piaoyoushan\sunxun.chm
其中hh 代表的是系统中的hh.exe 文件,这个文件本身并不发挥什么作用,而是调用hhctrl.ocx,所以要是你机器上CHM 方面出现什么问题,比如看不了之类的,首先检查hhctrl.ocx。
编译CHM
如果说市面上反编译CHM 文件的软件还有不少是免费的话,那编辑CHM 文件的软件你真的很难找到免费的了。
其实微软提供过免费的工具,HTML Help Workshop,Google 一下很容易找到。软件很小巧,完全可以用来完成个性化的chm 制作。这个软件也可以用来对CHM 进行反编译。
下面说两个文件,一个是hhp,一个是hhc,其中hhp是CHM 的工程文件,而hhc是生成的CHM 左边的索引。
假定我的目录结构如下:
F:\piaoyoushan __A.html __B.html __C.html __\Files __a.jpg __b.jpg
其中两个图片文件是插入到A、B、C 这个三个HTML 文件中的。
这里就涉及到刚才说的hhp 和hhc,两个文件,如果你不需要索引,hhc可以不用。
现在说说hhp文件的基本格式。
[OPTIONS] # 编译选项 Compatibility=1.1 or later # 编译版本 Compiled file=sunxun.chm # 生成文件名称 Contents file=sunxun.hhc # 使用的目录文件 Default topic=A.html # 默认首页 Display compile progress=No # 是否显示编译过程 Language=0x804 中文(中国) # 语言设置 Title=一个小测试 by sunxun @ 票友山 # CHM 文件标题 [FILES] # 要包含的文件 A.html B.html C.html
图片文件不用添加进去,图片中要是含有图片,自然会加进去。
而hhc文件格式如下:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD>
<BODY>
<OBJECT type="text/site properties">
<param name="Window Styles" value="0x800225">
<param name="comment" value="title:Online Help">
<param name="comment" value="base:index.htm">
</OBJECT>
<UL>
<LI><OBJECT type="text/sitemap">
<param name="Name" value="开始页">
<param name="Local" value="A.html">
<param name="ImageNumber" value="12">
</OBJECT>
<LI><OBJECT type="text/sitemap">
<param name="Name" value="目录">
<param name="Local" value="B.html">
<param name="ImageNumber" value="22">
</OBJECT>
.......
</UL>
</BODY>
</HTML>
目录层次支持多层嵌套,嵌套的规则就不讲了。自己稍微学习下HTML 语言就能看懂。
双击hhp文件即可打开软件进行编译,而双击hhc文件可以实现预览。
对于hhp文件的设定有个讨巧的方法,点击软件界面上的new,之后跟着向导走即可,稍微有点智商都能一次弄会,我就不多说了,生成hhp文件后自己稍微用文本编辑器自定义一下就好。这个办法在你要加入的文件很多的时候相当方便。
而hhc 文件,在文件多的时候,你可以自己写上一两项,然后双击即可使用软件进行编辑。而如果你是反编译CHM 后编辑,那hhc一般都已经包含在反编译后的目录里面了。比如你要进行翻译,主要更改下name value 即可。
版权说明
无特殊说明均为原创文章,转载请注明。
本文链接地址: http://sunxun.info/2009/09/chm-compile-decompile/
这个做电子书很方便啊!
hh -decompile
恩,这个是反编译。