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

用C#实现将HTML文件转换为CHM文件(转)

2010-12-23 13:35 344 查看
要将一些html文件转换为chm文件,当然是需要和程序结合在一起。
后来找到NDoc,里头有一段代码是相关的,于是开始分析代码,写完之后,总结:主要是利用微软的hhc.exe来编译html文件,程序需要将具体的数据写入hhp和hhc文件。
主要代码如下:
复制C#代码保存代码public void CompileProject()
{
Process helpCompileProcess = new Process(); //创建新的进程,NDOC采用Process启动HHC.EXE来Compile一个CHM文件

try
{
////判断文件是否存在并不被占用
try
{
string path = _chmFile; //chm生成路径

if (File.Exists(path))
{
File.Delete(path);
}
}
catch
{
throw new Exception("文件被打开!");
}

ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
processStartInfo.FileName = hhcFile; //调入HHC.EXE文件
processStartInfo.Arguments = "\"" + Path.GetFullPath(GetPathToProjectFile()) + "\"";//获取空的HHP文件

helpCompileProcess.StartInfo = processStartInfo;

//开始生成....
helpCompileProcess.Start();

helpCompileProcess.WaitForExit(); //组件无限期地等待关联进程退出

if (helpCompileProcess.ExitCode == 0)
{
MessageBox.Show(new Exception().Message);
}

}
finally
{
helpCompileProcess.Close();
}
}
public void OpenProjectFile()
{
FileStream fs = new FileStream(GetPathToProjectFile(), FileMode.Create);
streamHtmlHelp = new System.IO.StreamWriter(fs, System.Text.Encoding.GetEncoding("GB18030"));
streamHtmlHelp.WriteLine("[FILES]");
}
public void AddFileToProject(string filename)
{
streamHtmlHelp.WriteLine(filename);
}
public void CloseProjectFile(string title)
{
streamHtmlHelp.WriteLine();
streamHtmlHelp.WriteLine("[OPTIONS]");
streamHtmlHelp.WriteLine("Title=" + title);
streamHtmlHelp.WriteLine("Compatibility=1.1 or later");
streamHtmlHelp.WriteLine("Compiled file=" + GetCompiledHtmlFilename()); //chm文件名
streamHtmlHelp.WriteLine("Contents file=" + GetContentsHtmlFilename()); //hhc文件名
streamHtmlHelp.WriteLine("Default topic=" + _defaultTopic); //默认页
streamHtmlHelp.WriteLine("Display compile progress=No"); //是否显示编译过程
streamHtmlHelp.WriteLine("Language=0x804 中文(中国)"); //chm文件语言

streamHtmlHelp.WriteLine();
streamHtmlHelp.WriteLine("[INFOTYPES]");

streamHtmlHelp.Close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: