使用HTML Help Workshop将HTML转为CHM

使用HTML Help Workshop编译成CHM文件需要如下三个文件,
分别以hhp,hhc,hhk为文件后缀名。
hhp:CHM工程文件,CHM目标文件属性参数在这里配置.
hhc,列表文件,确定目标文件中左侧树形列表中"目录"选项卡下的内容.
hhk,索引文件,确定目标文件中左侧树形列表中"索引"选项卡下的内容.

[hhp文件]
hhp几乎就是一个标准的ini文件.分为三个小节Option,Windows,Files.
典型的配置文件(hhp)结构如下:test.hhp

[OPTIONS]

Compatibility=1.1 Or later

Default window=Main

Default font=宋体,9,1

Contents file=test.hhc

Index file=test.hhk

Default topic=Htm\FAQ.htm

Display compile progress=Yes

Title=帮助文档

Full-text search=Yes

Language=0X804 中文(中国)



[WINDOWS]

Main=,"test.hhc","test.hhk",,,,,,,0x20,0xB4,0x104E,[80,60,720,540],0x0,0x0,,,,,0



[FILES]

FAQ.htm

test1.htm

test2.htm

稍微解释下:

 Default window=Main:默认的显示模式,这里是主页面

 Default font=宋体,9,1:默认的字体

 Contents file=test.hhc:内容文件

 Index file=test.hhk:索引文件

 Display compile progress=Yes:是否显示编译过程

 Full-text search=Yes:是否全文搜索

 Language=0X804 中文(中国):默认语言

[hhk文件]test.hhk:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<HTML>

<HEAD>

   <meta name="GENERATOR" content="Microsoft@ HTML Help Workshop 4.1">

</HEAD>

<BODY>

<UL>

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

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

       <param name="Local" value="Htm\test1.htm">

      </OBJECT>

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

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

       <param name="Local" value="Htm\test2.htm">

      </OBJECT>

</UL>

</BODY>

</HTML>

[hhc文件] test.hhc:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<HTML>

<HEAD>

<meta name="GENERATOR" content="Microsoft@ HTML Help Workshop 4.1">

<HEAD>

<BODY>

<OBJECT type="text/site properties">

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

<OBJECT>

<UL>

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

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

         <param name="Local" value="Htm\FAQ.html">

      </OBJECT>

  <UL>

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

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

            <param name="Local" value="Htm\test1.html">

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

          </OBJECT>

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

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

            <param name="Local" value="Htm\test2.html">

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

          </OBJECT>

   </UL>

</UL>

</BODY>

</HTML>

一般<UL></UL>代表一级节点,子节点表示如下:
      <LI> <OBJECT type=\"text/sitemap\">
               <param name=\"Name\" value=\"数据库服务器\">
               <param name=\"Local\" value=\"HTML\\全部对象.htm\">
               <param name=\"ImageNumber\" value=\"13\">
              </OBJECT>

[编译]

  public string hhcFile = @"C:\Program Files\HTML Help Workshop\hhc.exe";

   //hhc.exe文件位置,windows自带的,一般是这个路径

  public string _defaultTopic = "";//默认的页面

  private bool Compile()

         {

             string _chmFile = startPath + @"\test.chm";

             //chm文件存储路径

             Process helpCompileProcess = new Process();  

          //创建新的进程,用Process启动HHC.EXE来Compile一个CHM文件

             try

             {

                 //判断文件是否存在并不被占用

                 try

                 {

                     string path = _chmFile;  //chm生成路径

                     if (File.Exists(path))

                     {

                         File.Delete(path);

                     }

                 }

                 catch(Exception e)

                 {

                     throw new Exception("文件被打开!");

                 }

 

                 ProcessStartInfo processStartInfo = new ProcessStartInfo();

                 processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                 processStartInfo.FileName = hhcFile; 

                  //调入HHC.EXE文件 

                 processStartInfo.Arguments = "\"" + GetPathToProjectFile() + "\"";//获取空的HHP文件

                 processStartInfo.UseShellExecute = false;

                 helpCompileProcess.StartInfo = processStartInfo;

                 helpCompileProcess.Start();

                 helpCompileProcess.WaitForExit(); 

                //组件无限期地等待关联进程退出

 

                 if (helpCompileProcess.ExitCode == 0)

                 {

                     MessageBox.Show(new Exception().Message);

                     return false;

                 }

             }

             finally

             {

                 helpCompileProcess.Close();

             }

             return true;

         }

 

[参考]http://www.cnblogs.com/Dotaer/archive/2012/08/02/2619854.html

你可能感兴趣的:(html)