作者: amnesiac 日期: 2012-08-24 分類(lèi): windows 標簽:
許多用戶(hù)都有制作 CHM 文檔的經(jīng)歷,或許是為了與他人分享資料,或許是為自己開(kāi)發(fā)軟件提供幫助。盡管網(wǎng)上搜索CHM制作軟件結果繁多,但真正好用的并不多,能稱(chēng)為優(yōu)秀的只剩下幾款。其中我覺(jué)得優(yōu)秀又免費的只有 Precision Helper,稱(chēng)得上最佳免費 CHM 制作軟件。
為什么說(shuō)它優(yōu)秀呢?
1、新用戶(hù)能快速上手,使用方便:Precision Helper 的 Ribbon 界面, 直觀(guān)可視化, 主要的功能都能在這里找到,總體設計較為人性化。
2、支持許多高級功能,一定程度上滿(mǎn)足高級用戶(hù)。支持對象檢視器、API測試器等高級功能,支持界面的高度可定制性。還通過(guò)模板提供了一些功能的自定義性,并且還提供了方便的擴展接口。
3、直接使用 hhp 作為項目文件。這點(diǎn)是在功能之外我很看重的一個(gè)特性。許多同類(lèi)軟件使用專(zhuān)有的項目文件格式(注1),盡管實(shí)際上并不能“套牢”用戶(hù),不過(guò)還是給用戶(hù)帶來(lái)了不少麻煩,而它直接使用 hhp 作為項目文件格式,用戶(hù)可以在充分使用后做出自己的選擇。對于目前使用其他軟件的用戶(hù)也不用擔心,通過(guò) Precision Helper 的反編譯功能(后文介紹),您可以輕松的從那些專(zhuān)有的項目文件格式中解放出來(lái)。
本文目錄:
一、簡(jiǎn)單介紹
二、從源文件創(chuàng )建項目
三、反編譯 CHM 文件創(chuàng )建項目
四、插件的安裝及編寫(xiě)
五、最終幫助的發(fā)布格式
六、關(guān)于CHM的常見(jiàn)問(wèn)題及技巧
七、小結
八、其他補充
下面簡(jiǎn)要介紹 Precision Helper:

由于官方直接提供了綠色版,并且使用安裝版的安裝過(guò)程也很簡(jiǎn)單,所以這里不介紹安裝的過(guò)程。需要注意如果當前系統上沒(méi)有安裝 Microsoft HTML Help Workshop(注2),那么在安裝過(guò)程中會(huì )提示下載安裝,如果是綠色版則必須手動(dòng)安裝才能生成 CHM 文件,這里提供它的下載地址(大小 3.3 MB):Microsoft HTML Help Workshop 下載(盡管實(shí)際上 Precision Helper 只需要其中的一個(gè)文件,不過(guò)微軟建議完整安裝。)
注1: 這里說(shuō)的使用專(zhuān)有項目文件格式是指在制作時(shí)的項目格式,實(shí)際上它們都支持導入 hhp 文件來(lái)創(chuàng )建項目,但如果要獲取修改后的 hhp 文件則不太容易。
注2: 除了 Microsoft HTML Help Workshop,其他 CHM 制作工具都是一層外殼,它們都是利用這個(gè)程序的組件編譯 CHM 文件。
完整的詳細功能請參閱幫助中 [主要功能-完整功能列表] 部分。
在打開(kāi)程序后,將顯示歡迎頁(yè),如下圖(關(guān)于其中各部分的功能說(shuō)明,請參閱幫助):

此時(shí),點(diǎn)擊新建項目,然后選擇新項目的保存位置并輸入項目文件名,確定后將出現下圖:

其中,左邊為導航欄(可調整位置),中間的當前主題為項目屬性,現在我們先點(diǎn)擊左下角包含的文件,在出現的選項卡中添加源文件(根據圖示進(jìn)行操作):

為了方便,我這里已經(jīng)把源文件復制到了當前項目的目錄下(如果沒(méi)有則這里選擇目標文件夾),所以直接添加項目文件,選中所有文件并確定后這些文件將出現在包含的文件選項卡下方:

現在依次點(diǎn)擊 Ribbon 欄工具下面的自動(dòng)添加主題和自動(dòng)添加關(guān)鍵字(這里的主題是指 CHM 文件左邊目錄中的目錄項,關(guān)鍵字則是到主題文件的索引),根據提示進(jìn)行操作到添加完成。然后點(diǎn)擊左邊導航欄中的目錄和關(guān)鍵字索引后可以看到上方出現了剛才添加的主題和關(guān)鍵字:


這樣就自動(dòng)生成了目錄和索引,此時(shí)目錄中的文字和索引中的關(guān)鍵字都直接提取自網(wǎng)頁(yè)文件中的標題。如果含有較多網(wǎng)頁(yè),建議對目錄項進(jìn)行分類(lèi)和順序調整,讓導航更方便一些。
現在回到原來(lái)的項目屬性選項卡,可以看到“目錄文件”和“索引文件”輸入框已經(jīng)自動(dòng)填好了(自動(dòng)生成的目錄文件和索引文件與項目文件在相同目錄),這里補充一些必要的部分:

在“已編譯幫助文件”中輸入目標 CHM 的路徑和名稱(chēng)或者可以通過(guò)緊鄰的“…”按鈕進(jìn)行選擇(如果沒(méi)有指定路徑,則生成時(shí)與項目文件在相同路徑);
對于“默認主題”建議使用緊鄰的這個(gè)按鈕選擇,這個(gè)主題網(wǎng)頁(yè)將在每次打開(kāi) CHM 文件時(shí)自動(dòng)顯示;
下面“編譯全文搜索信息”則為 CHM 文件增加搜索功能,如果不需要搜索功能,那么取消選中這個(gè)選項可以極大減少生成的 CHM 文件的大小和加快生成的速度。
現在我們來(lái)設置標題,點(diǎn)擊右側的對象檢視器,“當前項目”右邊的輸入框中會(huì )顯示為“無(wú)標題”,直接輸入標題接著(zhù)回車(chē)(注意如果沒(méi)有回車(chē)則不會(huì )保存):

設置 CHM 文件的基本操作到這里就完成了,此時(shí)可以轉到 Ribbon 欄發(fā)布下的運行來(lái)進(jìn)行編譯并查看結果。
幾乎每個(gè)同類(lèi)軟件都能反編譯 CHM 文件,這個(gè)軟件在反編譯 CHM 軟件時(shí),除了解壓其中的網(wǎng)頁(yè)文件/目錄文件/索引文件等,它還會(huì )自動(dòng)生成項目文件?,F在從 Ribbon 欄工具下選擇CHM 導入(注:不是“CHM 查看器”),接著(zhù)選擇要反編譯的 CHM 文件和新建項目的目錄(建議使用空目錄,否則新建項目的項目文件 hhp 會(huì )包含多余文件),然后將出現下面的屬性窗口:

此時(shí)可以對 CHM 文件的外觀(guān)和行為進(jìn)行進(jìn)一步設置,方法與前面新建時(shí)相同。
如果您目前正在使用其他 CHM 制作工具,則可以獲取它們在編譯項目時(shí)的所有源文件(包括項目文件、目錄文件、索引文件和網(wǎng)頁(yè)文件等)直接作為 Precision Helper 中的項目,如果獲取項目文件較為困難(例如網(wǎng)上獲取的 CHM 文件),則可以反編譯 CHM 文件來(lái)新建項目。
盡管 Precision Helper 已經(jīng)包含了大量與制作 CHM 相關(guān)的功能,然而用戶(hù)的需求是各種各樣的,總有一些目前尚未滿(mǎn)足的需求,Precision Helper 為此提供了擴展接口。您可以首先看看程序中自帶的一些插件(例如 HTML Tidy),或者到官方網(wǎng)站看看程序中沒(méi)有自帶的插件(查看在線(xiàn)插件)。
下載插件文件后,把它解壓到 Extras 目錄。對于綠色版這個(gè)目錄在 Precision Helper 目錄下,對于安裝版,這個(gè)目錄為 C:\Documents and Settings\%UserName%\AppData\Precision\precisionhelper\Extras(Windows 2000/XP)或 C:\Users\%UserName%\AppData\Roaming\Precision\precisionhelper\Extras(Windows Vista 或更高版本)。
啟動(dòng)程序時(shí)會(huì )自動(dòng)加載插件目錄中的插件。
如果前面沒(méi)有找到自己需要的功能,可以考慮自己編寫(xiě)插件。根據自己需要的功能和所選擇的工具,編寫(xiě)插件可以很簡(jiǎn)單,也可能較復雜。
為了進(jìn)行演示,我這里編寫(xiě)一個(gè)用來(lái)改變當前項目中所有文件編碼的插件。程序提供的插件接口有兩種類(lèi)型:命令行和 Pascal Script,這里我使用命令行。同時(shí)使用 AutoHotkey 腳本實(shí)現插件的功能。
先編寫(xiě)插件配置文件(擴展名必須為 phe),通過(guò)這個(gè)文件程序才能知道如何調用這個(gè)插件。下面是演示插件的配置文件:
[Precision Helper Extension]; cmdline 表示使用命令行接口Interface=cmdline; 在 Precision Helper 中顯示的插件標題和提示信息。Caption=Encoding ConversionHint=Convert the encoding of htm/html files in current project.Caption.cn=編碼轉換Hint.cn=轉換項目中所有網(wǎng)頁(yè)文件的編碼為用戶(hù)指定的編碼。[Application]; 要執行的程序,其中 %APPEXTRAS% 表示 Precision Helper 的擴展文件夾??梢栽趲椭胁榭吹礁噙@里能使用的變量。%APPEXTRAS%\Encodingconversion\Encodingconversion.exe[Command-line]; 傳遞給程序的參數,%PROJECTFOLDER% 表示項目文件夾。這樣我們可以對里面的所有網(wǎng)頁(yè)文件進(jìn)行操作。Parameters="%PROJECTFOLDER%"waitfor=0saveTOC=1saveIDX=0saveProject=1reloadTOC=1reloadIDX=0reloadProject=1[IDE]; 設置這個(gè)擴展在 Precision Helper GUI 哪些部分的工具欄顯示出來(lái)。ribbonHOME=1ribbonTOC=1ribbonIDX=0ribbonPUB=0ribbonTOOLS=1ribbonHELP=0TopicSource=0
接著(zhù)把這個(gè)插件配置文件和要調用的程序放在插件目錄的 Encodingconversion 子目錄中,包括 Encodingconversion.phe、Encodingconversion.exe 以及要調用程序需要的其他文件(這里為了方便,都放在同一個(gè)目錄中)。其中 Encodingconversion.exe 是由 ahk 腳本編譯而成,如果使用安裝版的 AutoHotkey,那么這里直接使用 ahk 腳本而不進(jìn)行編譯。
我把這個(gè)插件所有文件打包成了壓縮文件,請點(diǎn)擊這里下載進(jìn)行測試,其中包含了 ahk 腳本的源文件。把它解壓到插件目錄接著(zhù)啟動(dòng)程序,則可以在相應位置的工具欄看到插件了:

在本文中主要講輸出 CHM 格式,這是 Precision Helper 的主要輸出格式,不過(guò)它還支持輸出為其他文件格式,下面簡(jiǎn)要介紹它支持的幾種主要格式:
1. CHM:早期 Windows 系統中的文件格式是 WinHelp(擴展名 .hlp 和 .cnt),從 Windows Vista 起對 WinHelp 格式的支持已經(jīng)停止了。從 Windows 98 開(kāi)始引進(jìn)了 HTML Help(擴展名 .chm)。HTML Help 在單文件中集成了目錄和幫助,同時(shí)支持索引、全文搜索和基于 html 的豐富的格式表現,所以目前成為了 Windows 平臺上在程序中使用的最常見(jiàn)的聯(lián)機幫助格式。在 Windows 平臺中分享一些無(wú)需編輯和打印的資料時(shí),推薦使用這種格式。
2. WebHelp:這種格式是把項目的目錄結構(源文件)復制到特定文件夾并生成 HTML 或 XML 格式的“框架”,這樣可以方便地在網(wǎng)頁(yè)瀏覽器中進(jìn)行瀏覽。許多程序的在線(xiàn)幫助使用類(lèi)似的方法實(shí)現,具體的效果請參閱:Precision Helper 在線(xiàn)幫助(英文)。自帶的樣式已經(jīng)不錯了,不過(guò)如果您會(huì )網(wǎng)頁(yè)或懂得處理圖片,那么通過(guò)修改模板可以完全按自己的需求進(jìn)行自定義。
對于本地 CHM 文件一般我建議使用 GB2312 編碼,不過(guò)對于在線(xiàn)幫助可能使用 UTF-8 較好。
3. ePUB:這是廣泛使用的電子書(shū)格式,方便在不同的設備上查看。具體效果請參閱:Precision
Helper 幫助電子書(shū)(英文)。
4. 單個(gè) HTML 文檔:實(shí)際上是合并所有主題到一個(gè)文件并復制項目的其他內容(圖像、樣式等)到一個(gè)特定文件夾(含目錄結構)。這種格式一般作為中間格式方便進(jìn)一步的操作,例如進(jìn)行打印或轉換為 PDF 格式(此時(shí)另需安裝 PDF 打印機或轉換工具,具體請參閱幫助)。
這里簡(jiǎn)要說(shuō)說(shuō)與 CHM 格式相關(guān)的一些問(wèn)題和技巧,采用問(wèn)答形式。
1. 問(wèn):我從網(wǎng)上下載了一個(gè) CHM 文件,打開(kāi)查看頁(yè)面時(shí),卻提示“無(wú)法顯示網(wǎng)頁(yè)…”,每個(gè)頁(yè)面都是這樣,什么原因呢?
答:這個(gè)問(wèn)題是由于微軟在 Windows 更新中增加了對網(wǎng)絡(luò )傳送的 CHM 文件的安全限制造成。執行如下操作:查看此文件屬性,在屬性框中點(diǎn)擊“解除鎖定”按鈕,接著(zhù)確定后就可以正常查看了。如果直接從網(wǎng)上下載了大量的 CHM 文件,那么可以修改注冊表以解除這個(gè)安全限制(不推薦)。相關(guān)內容請參閱:MS05-26,KB806054,KB902225。
2. 問(wèn):我想發(fā)布一些 CHM 格式的資料到網(wǎng)上,但我希望用戶(hù)下載后可以直接查看,而不需要麻煩的去解鎖,有什么辦法嗎?
答:一個(gè)非常簡(jiǎn)單的辦法是對 CHM 文件進(jìn)行壓縮(例如壓縮為 ZIP 文件)這樣其他用戶(hù)下載解壓后可直接查看。目前,AutoHotkey 中文幫助離線(xiàn)文件的發(fā)布采用這種形式,這樣方便傳輸,也方便用戶(hù)。
在實(shí)踐中,我發(fā)現有不少用戶(hù)在打開(kāi) CHM 文件看到“無(wú)法顯示網(wǎng)頁(yè)…”時(shí)不清楚可以解鎖后查看,所以發(fā)布幫助時(shí)進(jìn)行壓縮是比較必要的。
3. 問(wèn):我在從 HTM/HTML 文件創(chuàng )建 CHM 文件時(shí),產(chǎn)生的 CHM 文件中某些頁(yè)面為空白,并且無(wú)法搜索中文,該如何解決?
答:在我的經(jīng)驗中,這種情況由編碼引起。對于 CHM 格式,有兩處與編碼有關(guān)的位置:CHM 自身的編碼和其中 HTM/HTML 文件采用的編碼,其中 HTM/HTML 文件的編碼包括文件頭部的編碼聲明和文件的編碼。要避免上述問(wèn)題,建議:對于 CHM 自身的編碼選擇 ANSI 或 GB2312(對于簡(jiǎn)體中文系統,這兩者想過(guò)相同);對于 HTM/HTML 文件的頭部和文件也使用這樣的編碼。
如果一定要在網(wǎng)頁(yè)中使用 UTF-8 編碼,則可進(jìn)行修改讓網(wǎng)頁(yè)的 <title></title> 標簽對之間只含有 ASCII 字符,這樣可以避免某些頁(yè)面顯示為空白,然而這樣仍然無(wú)法搜索中文。(目前尚不確定在不同的系統中,是否可以通過(guò)把 IE 更新到最新版本來(lái)解決這樣的問(wèn)題。)
另外,如果把 CHM 文件放在較深層次的目錄或中文目錄中,可能會(huì )在使用時(shí)出現某些問(wèn)題。
4. 問(wèn):我需要經(jīng)常/批量的反編譯 CHM 文件,每次都要打開(kāi)一個(gè)軟件進(jìn)行解壓很麻煩,能方便些嗎?
答:使用批處理命令:
hh.exe -decompile <dir> <object.chm>
其中 hh.exe 是系統自帶的 CHM 查看器,<dir> 是目標目錄,<object.chm> 是要解壓的 CHM 文件。需要批量解壓則在循環(huán)中使用這個(gè)命令。此外,許多壓縮解壓軟件也能解壓 CHM 文件或查看其內部文件。使用 TotalCommander 的用戶(hù)可以為內部命令 cm_GoToDir 設置一個(gè)熱鍵來(lái)直接進(jìn)入 CHM 文件查看里面的內容。
5. 問(wèn):我需要經(jīng)常/批量的從已準備好的項目文件編譯成 CHM 文件,能實(shí)現嗎?
答:首先請下載 Microsoft HTML Help Workshop(請下載中間 3.3 M的文件),并從中提取 hhc.exe 和 hha.dll 文件,現在可以使用下列批處理命令:
hhc.exe <myproject.hhp>
myproject.hhp 為要編譯的項目文件,執行前請確保 hhc.exe 和 hha.dll 文件存在。如果成功,生成的 CHM 文件將會(huì )出現在 myproject.hhp 文件的OPTIONS段下Compiled file 對應的值指定的文件路徑。
另一種方法是把需要編譯的所有項目添加到 Precision Helper,然后從它的開(kāi)始菜單中打開(kāi)構建列表,這時(shí)在 Robbin 欄的構建下將出現編譯所有按鈕,點(diǎn)擊它即可以編譯所有在構建列表中的項目。
6. 問(wèn):我想在查看 CHM 時(shí)做一些標記,能實(shí)現嗎?
答:由于 CHM 格式主要設計用于發(fā)布程序的聯(lián)機幫助,所以在一些特殊情況下可能不太方便,例如無(wú)法像 PDF 文檔那樣添加注釋。使用一些工具可以實(shí)現類(lèi)似的功能,例如 CHM Editor 可以支持直接編輯 CHM 中的頁(yè)面,Ultrachm 可以高亮 CHM 中的文本等。
本文簡(jiǎn)要介紹了 Precision Helper 創(chuàng )建新項目的基本功能,更多的功能和用法等請參閱幫助。如果希望試驗它的一些功能,建議使用程序包中自帶的 Precision Helper 的幫助的項目文件(在 samples 文件夾中)進(jìn)行測試。
無(wú)論您是制作 CHM 幫助的新人還是老用戶(hù),歡迎體驗 Precision Helper,在絕大多數情況下它都能滿(mǎn)足您的需求。如果您發(fā)現了您需要而它尚未支持的功能(請先查看幫助確認),歡迎到官方查找已有的插件(插件查看地址)或編寫(xiě)自己的插件,或者反饋給開(kāi)發(fā)組(郵件地址:support@be-precision.com)。
我最初生成 CHM 是使用了 TotalCommander 中的插件 CHMDir(善用佳軟注:我發(fā)布的TC學(xué)堂的chm電子書(shū),也是用該插件完成的),但這個(gè)插件功能較弱,無(wú)法進(jìn)行更多的設置和包含全文搜索功能(這是最初我更新的 AutoHotkey 中文幫助不含搜索的原因,很多 AutoHotkey 中文用戶(hù)知道)。之后開(kāi)始了一路尋找這類(lèi)軟件的過(guò)程,在選擇這個(gè)軟件一段時(shí)間后尋找結束。目前 AutoHotkey 幫助在更新時(shí)的解壓及生成已經(jīng)使用前面所述的方法腳本化,所以一般只在創(chuàng )建新幫助時(shí)才使用 Precision Helper。
目前的中文界面和幫助是我翻譯的,由于英語(yǔ)水平及能力的限制,在準確性和表達的通順上存在問(wèn)題。如果有哪位朋友對 CHM 的各方面功能比較熟悉,有空且愿意幫忙進(jìn)行完善(以及翻譯官方網(wǎng)站上與 Precision Helper 相關(guān)的網(wǎng)頁(yè)),則可以嘗試和他們協(xié)商贈送您一款他們商業(yè)軟件的授權(這是他們對譯者的感謝,由于我只需要他們的這個(gè)軟件,所以當時(shí)放棄)。在翻譯時(shí)我使用 OmegaT,這是種能快速上手的翻譯記憶軟件,同時(shí)把翻譯記憶提供給了他們,所以在進(jìn)行完善時(shí)主要進(jìn)行校對,而不需要輸入現在的翻譯(欲簡(jiǎn)單了解 OmegaT 請參閱維基百科上 OmegaT 的介紹和 OmegaT — 開(kāi)放源碼電腦翻譯輔助程式)。
Precision Helper 是免費軟件,如果您覺(jué)得它給您的很大的幫助,可以考慮捐贈以支持它們進(jìn)一步的開(kāi)發(fā)(捐贈地址)。
文章更新歷史:
2012-08-24:首次發(fā)布
2012-05-01:完成草稿
聯(lián)系客服