您的位置:首页 > Web前端 > HTML

使用HTML Help Workshop将HTML转为CHM

2012-11-11 13:09 369 查看
使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: