zoukankan      html  css  js  c++  java
  • CHM制作详解

    chm文件是Windows操作系统非常方便的电子帮助文档及电子书籍文档。制作CHM文档的工具也有数种,较为流行的有EasyChm等。

    这里对CHM制作进行一次详解,使开发人员能够开发出自己的CHM编译工具。当看完这篇教程之后,您会觉得制作一个类似EasyChm的工具非常简单,而像EasyChm这样的工具其实无需注册码激活,因为它根本没有涉及chm编码解码的工作,它只是使用了微软提供了编码解码工具而已,只不过它提供了便利的途径。

    一.CHM编译工具:hhc.exe hha.dll

    命令:hhc     $path/which.hhp

    使用这样简单的命令,就可以轻松地生成一个CHM文档,我们要了解的就是which.hhp是一个怎样的文件,后面会有介绍。

    二.CHM反编译工具:hh.exe

    命令:hh       $target_folder source_chm.chm

    命令仍是如此简单,$target_folder即是将chm抽取出的html文件放到的目标文件夹,source_chm.chm就是要被反编译的CHM文档。

    三.HHP (P=Project)解析。

    ; which.hhp

    [OPTIONS]

    Compatibility=1.1 or later-------------------------兼容版本

    Compiled file=..\..\..\linqc.chm-------------------产生的CHM文档位置及文档名

    Contents file=Table of Contents.hhc-------------hhc文件,html文件归档,后面介绍。

    Display compile progress=Yes--------------------是否显示编译进度

    Index file=Index.hhk--------------------------------索引文件,即是CHM文档的索引选项卡

    Language=0x804------------------------------------语言

    title=Fist_chm----------------------------------------chm文档的标题

    Default topic=a.html--------------------------------开始页,即刚打开CHM显示的页面.

    ImageType=Folder----------------------------------图标类型,默认为Picture后面会有介绍。

    [INFOTYPES]
    =============================================================

    .hhp文档相当于一个INI文档,描述了编译选项,主要的文档还是hhc和hhk文档,它们描述了要编译的HTML文件和INDEX选项。

    四.HHC (C=Content)解析

    <!-- Table of Contents.hhc -->

    <html>

    <body>

    <UL>

    <LI> <OBJECT type="text/sitemap">

    <param name="Name" value="display_name">

    <param name="Local" value="a.html">

    <param name="ImageNumber" value="11">

    </OJBECT>

    </UL>

    </body>

    </html>

    <UL>代表父项,代表文件夹。

    <LI>代表子项,代表文件。

    只要在 <LI>后面加个 <UL>,再添加相应的子项,就可以把<LI>的项变成父项.

    我们主要要分析的是 <OBJECT>对象,它里面的<param>对象又才是主要描述了内容。

    属性 代表的意思
    Name Name value指定了显示在列表框中的名称
    Local value指定了该项对象的HTML文档
    ImageNumber value指定了该项使用何种图标

    这里主要讨论 ImageNumber,请看下图:

    这些是默认的图标(它可以从c:\Program Files\Common Files\Microsoft Shared\Help\ hxvz.dll中抽取出来),从1开始计数,依次递增,使用哪一个图标,就使用哪一个计数。当然,也可以使用自定义图标,不过一般没有必要。以下是使用自定义图标的编码:
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

    <HTML>

    <HEAD>

    </HEAD><BODY>

    <OBJECT type="text/site properties">

    <param name="Window Styles" value="0x800025">

    </OBJECT>

    </BODY></HTML>

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    上面的是默认的 (可加可不加)。


    <OBJECT type="text/site properties">

    <param name="ImageList" value="file:\\E:\Firefly\DOC61\kingbase\doc\chm\KingbaseES\iconstip.bmp">

    <param name="Image Width" value="16">

    <param name="Color Mask" value="0xff">

    </OBJECT>
    它在放在 <BODY.>最开始处。
    <param name=”ImageList”  value=”….”这里要使用:file:
    <param name=”Image Width”  value=”…” 这里指定了宽度
    <param name=”Color Mask”  value=”0xff”, 如果使用 0xff00ff生成的图标颜色将失真。

    如果<OBJECT>中没有 ImageNumber项时,如果HHP文件中的 ImageType == Picture(默认是Picture)时,如果有子目录,就显示,否则显示;如果 ImageType == Folder,如果有子目录,就显示,否则显示

     =============================================

    HHC文件其实是一个HTML文件。

    五.HHK解析

    <!—Index.hhk -->

    <html>

    <body>

    <UL>

    <LI> <OBJECT type="text/sitemap">

    <param name="Name" value="display_Index">

    <param name="Local" value="a.html">

    </OJBECT>

    </UL>

    </body>

    </html>

    与 HHC文件类似,它也是一个HTML文件,内容也类似,这里不再赘述,它只有两项。

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    到这里,CHM已经介绍完了。总结一下,制作流程应该如下:

    1. 制作 HHP文件,它指定了 HHC文件和 HHK文件。
    2. 制作 HHC 文件,使用文件夹遍历方式即可遍历所有HTM/HTML文档,并去检索HTM/HTML文档中的 <title>作为标题。
    3. 制作 HHK 文件,如果要使用索引,就可以把 <title>作为索引项,与HHC类似。
    4. 使用 hhc which.hhp 进行编译。
    5. 完成。

     编码应该是很简单的事情了。

  • 相关阅读:
    HDU1814 Peaceful Commission
    POJ1679 The Unique MST
    POJ 3243 Clever Y
    POJ 3463 Sightseeing
    POJ1274 The Perfect Stall
    POJ 2417 Discrete Logging
    POJ1011 Sticks
    前端面试资源整理(一)
    小程序和腾讯地图联合使用
    快速创建 HTML5 Canvas 电信网络拓扑图
  • 原文地址:https://www.cnblogs.com/lin1270/p/2295860.html
Copyright © 2011-2022 走看看