爱评测-移动互联网评测

标题: 分享解决AxureRro生成CHM文件目录乱码的解决方案 [打印本页]

作者: tianzc    时间: 2014-9-16 14:22
标题: 分享解决AxureRro生成CHM文件目录乱码的解决方案
[attach]3547[/attach]

分享解决AxureRro生成CHM文件目录乱码的解决方案


生成chm文件是一种比较好用的离线分享原型的手段,特别是对于原型在内网发布,但是老板在外面要用邮件看原型。
但是axure生成的chm文件,左侧目录为乱码,对于有些人来说,可能不适应。
网上查了是什么原因,以及手动的解决方案,就用vbs实现了一下。

在桌面创建一个后缀为.vbs的文本文件,将以下代码粘贴上,第2,3,4行是hhc文件的路径设置、生成路径及文件名的设置,要根据自己的实际情况修改。
每次使用axure生成chm文件后,双击vbs文件运行这个vbs,就ok了
代码如下(全部开源,不用含担心木马):

Dim strHHCEXE, strWorkPath, strFileName
strHHCEXE = "C:\Program Files\HTML Help Workshop\hhc.exe"
strWorkPath = "D:\server\APMServ5.2.0\www\htdocs\protype\t\"
strFileName = "111120a"
Dim strHHCFile, strHHPFile, strCompileCmd
strHHCFile = strWorkPath+"Table of Contents.hhc"
strHHPFile = strWorkPath+strFileName+".hhp"
strCompileCmd = """"+strHHCEXE+"""  """+strWorkPath+strFileName+".hhp"""

'将hhc从unicode转换为Ansi
U8ToAnsi(strHHCFile)

'将hhp文件中的0x409(英文),改为0x804(中文)
Dim fso, f, ts, strContent
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(strHHPFile)
Set ts = f.OpenAsTextStream(1, 0)
strContent = ts.ReadAll
ts.close
strContent = Replace(strContent,"=0x409","=0x804")
Set ts = f.OpenAsTextStream(2, 0)
ts.write strContent
ts.close

'重新编译chm文件
Set WshShell =CreateObject("WScript.Shell")
WshShell.Run strCompileCmd

function U8ToAnsi(strFile)
    dim ADOStrm
    dim s
    Set ADOStrm = CreateObject("ADODB.Stream")
    ADOStrm.Type = 2
    ADOStrm.Mode = 3
    ADOStrm.CharSet = "utf-8"
    ADOStrm.Open
    ADOStrm.LoadFromFile strFile
    s = ADOStrm.ReadText
    ADOStrm.Position = 0
    ADOStrm.CharSet = "gbk"
    ADOStrm.WriteText s
    ADOStrm.SetEOS
    ADOStrm.SaveToFile strFile, 2
    ADOStrm.Close
    Set ADOStrm = Nothing
end function

如果从Web上拷贝这段代码,有格式问题,可以参考下载附件,记得修改里面第2、3、4行的参数
[attach]3548[/attach]生成chm.rar (883 Bytes)下载次数:38
2011-11-30 16:09








收藏分享评分




欢迎光临 爱评测-移动互联网评测 (http://www.aipingce.com/) Powered by Discuz! X3.2