作者: amnesiac 日期: 2012-08-24 分類: windows 標(biāo)簽:
許多用戶都有制作 CHM 文檔的經(jīng)歷,或許是為了與他人分享資料,或許是為自己開發(fā)軟件提供幫助。盡管網(wǎng)上搜索CHM制作軟件結(jié)果繁多,但真正好用的并不多,能稱為優(yōu)秀的只剩下幾款。其中我覺得優(yōu)秀又免費(fèi)的只有 Precision Helper,稱得上最佳免費(fèi) CHM 制作軟件。
為什么說它優(yōu)秀呢?
1、新用戶能快速上手,使用方便:Precision Helper 的 Ribbon 界面, 直觀可視化, 主要的功能都能在這里找到,總體設(shè)計(jì)較為人性化。
2、支持許多高級(jí)功能,一定程度上滿足高級(jí)用戶。支持對(duì)象檢視器、API測(cè)試器等高級(jí)功能,支持界面的高度可定制性。還通過模板提供了一些功能的自定義性,并且還提供了方便的擴(kuò)展接口。
3、直接使用 hhp 作為項(xiàng)目文件。這點(diǎn)是在功能之外我很看重的一個(gè)特性。許多同類軟件使用專有的項(xiàng)目文件格式(注1),盡管實(shí)際上并不能“套牢”用戶,不過還是給用戶帶來了不少麻煩,而它直接使用 hhp 作為項(xiàng)目文件格式,用戶可以在充分使用后做出自己的選擇。對(duì)于目前使用其他軟件的用戶也不用擔(dān)心,通過 Precision Helper 的反編譯功能(后文介紹),您可以輕松的從那些專有的項(xiàng)目文件格式中解放出來。
本文目錄:
一、簡(jiǎn)單介紹
二、從源文件創(chuàng)建項(xiàng)目
三、反編譯 CHM 文件創(chuàng)建項(xiàng)目
四、插件的安裝及編寫
五、最終幫助的發(fā)布格式
六、關(guān)于CHM的常見問題及技巧
七、小結(jié)
八、其他補(bǔ)充
下面簡(jiǎn)要介紹 Precision Helper:
由于官方直接提供了綠色版,并且使用安裝版的安裝過程也很簡(jiǎn)單,所以這里不介紹安裝的過程。需要注意如果當(dāng)前系統(tǒng)上沒有安裝 Microsoft HTML Help Workshop(注2),那么在安裝過程中會(huì)提示下載安裝,如果是綠色版則必須手動(dòng)安裝才能生成 CHM 文件,這里提供它的下載地址(大小 3.3 MB):Microsoft HTML Help Workshop 下載(盡管實(shí)際上 Precision Helper 只需要其中的一個(gè)文件,不過微軟建議完整安裝。)
注1: 這里說的使用專有項(xiàng)目文件格式是指在制作時(shí)的項(xiàng)目格式,實(shí)際上它們都支持導(dǎo)入 hhp 文件來創(chuàng)建項(xiàng)目,但如果要獲取修改后的 hhp 文件則不太容易。
注2: 除了 Microsoft HTML Help Workshop,其他 CHM 制作工具都是一層外殼,它們都是利用這個(gè)程序的組件編譯 CHM 文件。
完整的詳細(xì)功能請(qǐng)參閱幫助中 [主要功能-完整功能列表] 部分。
在打開程序后,將顯示歡迎頁,如下圖(關(guān)于其中各部分的功能說明,請(qǐng)參閱幫助):
此時(shí),點(diǎn)擊新建項(xiàng)目,然后選擇新項(xiàng)目的保存位置并輸入項(xiàng)目文件名,確定后將出現(xiàn)下圖:
其中,左邊為導(dǎo)航欄(可調(diào)整位置),中間的當(dāng)前主題為項(xiàng)目屬性,現(xiàn)在我們先點(diǎn)擊左下角包含的文件,在出現(xiàn)的選項(xiàng)卡中添加源文件(根據(jù)圖示進(jìn)行操作):
為了方便,我這里已經(jīng)把源文件復(fù)制到了當(dāng)前項(xiàng)目的目錄下(如果沒有則這里選擇目標(biāo)文件夾),所以直接添加項(xiàng)目文件,選中所有文件并確定后這些文件將出現(xiàn)在包含的文件選項(xiàng)卡下方:
現(xiàn)在依次點(diǎn)擊 Ribbon 欄工具下面的自動(dòng)添加主題和自動(dòng)添加關(guān)鍵字(這里的主題是指 CHM 文件左邊目錄中的目錄項(xiàng),關(guān)鍵字則是到主題文件的索引),根據(jù)提示進(jìn)行操作到添加完成。然后點(diǎn)擊左邊導(dǎo)航欄中的目錄和關(guān)鍵字索引后可以看到上方出現(xiàn)了剛才添加的主題和關(guān)鍵字:
這樣就自動(dòng)生成了目錄和索引,此時(shí)目錄中的文字和索引中的關(guān)鍵字都直接提取自網(wǎng)頁文件中的標(biāo)題。如果含有較多網(wǎng)頁,建議對(duì)目錄項(xiàng)進(jìn)行分類和順序調(diào)整,讓導(dǎo)航更方便一些。
現(xiàn)在回到原來的項(xiàng)目屬性選項(xiàng)卡,可以看到“目錄文件”和“索引文件”輸入框已經(jīng)自動(dòng)填好了(自動(dòng)生成的目錄文件和索引文件與項(xiàng)目文件在相同目錄),這里補(bǔ)充一些必要的部分:
在“已編譯幫助文件”中輸入目標(biāo) CHM 的路徑和名稱或者可以通過緊鄰的“…”按鈕進(jìn)行選擇(如果沒有指定路徑,則生成時(shí)與項(xiàng)目文件在相同路徑);
對(duì)于“默認(rèn)主題”建議使用緊鄰的這個(gè)按鈕選擇,這個(gè)主題網(wǎng)頁將在每次打開 CHM 文件時(shí)自動(dòng)顯示;
下面“編譯全文搜索信息”則為 CHM 文件增加搜索功能,如果不需要搜索功能,那么取消選中這個(gè)選項(xiàng)可以極大減少生成的 CHM 文件的大小和加快生成的速度。
現(xiàn)在我們來設(shè)置標(biāo)題,點(diǎn)擊右側(cè)的對(duì)象檢視器,“當(dāng)前項(xiàng)目”右邊的輸入框中會(huì)顯示為“無標(biāo)題”,直接輸入標(biāo)題接著回車(注意如果沒有回車則不會(huì)保存):
設(shè)置 CHM 文件的基本操作到這里就完成了,此時(shí)可以轉(zhuǎn)到 Ribbon 欄發(fā)布下的運(yùn)行來進(jìn)行編譯并查看結(jié)果。
幾乎每個(gè)同類軟件都能反編譯 CHM 文件,這個(gè)軟件在反編譯 CHM 軟件時(shí),除了解壓其中的網(wǎng)頁文件/目錄文件/索引文件等,它還會(huì)自動(dòng)生成項(xiàng)目文件?,F(xiàn)在從 Ribbon 欄工具下選擇CHM 導(dǎo)入(注:不是“CHM 查看器”),接著選擇要反編譯的 CHM 文件和新建項(xiàng)目的目錄(建議使用空目錄,否則新建項(xiàng)目的項(xiàng)目文件 hhp 會(huì)包含多余文件),然后將出現(xiàn)下面的屬性窗口:
此時(shí)可以對(duì) CHM 文件的外觀和行為進(jìn)行進(jìn)一步設(shè)置,方法與前面新建時(shí)相同。
如果您目前正在使用其他 CHM 制作工具,則可以獲取它們?cè)诰幾g項(xiàng)目時(shí)的所有源文件(包括項(xiàng)目文件、目錄文件、索引文件和網(wǎng)頁文件等)直接作為 Precision Helper 中的項(xiàng)目,如果獲取項(xiàng)目文件較為困難(例如網(wǎng)上獲取的 CHM 文件),則可以反編譯 CHM 文件來新建項(xiàng)目。
盡管 Precision Helper 已經(jīng)包含了大量與制作 CHM 相關(guān)的功能,然而用戶的需求是各種各樣的,總有一些目前尚未滿足的需求,Precision Helper 為此提供了擴(kuò)展接口。您可以首先看看程序中自帶的一些插件(例如 HTML Tidy),或者到官方網(wǎng)站看看程序中沒有自帶的插件(查看在線插件)。
下載插件文件后,把它解壓到 Extras 目錄。對(duì)于綠色版這個(gè)目錄在 Precision Helper 目錄下,對(duì)于安裝版,這個(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)加載插件目錄中的插件。
如果前面沒有找到自己需要的功能,可以考慮自己編寫插件。根據(jù)自己需要的功能和所選擇的工具,編寫插件可以很簡(jiǎn)單,也可能較復(fù)雜。
為了進(jìn)行演示,我這里編寫一個(gè)用來改變當(dāng)前項(xiàng)目中所有文件編碼的插件。程序提供的插件接口有兩種類型:命令行和 Pascal Script,這里我使用命令行。同時(shí)使用 AutoHotkey 腳本實(shí)現(xiàn)插件的功能。
先編寫插件配置文件(擴(kuò)展名必須為 phe),通過這個(gè)文件程序才能知道如何調(diào)用這個(gè)插件。下面是演示插件的配置文件:
[Precision Helper Extension]; cmdline 表示使用命令行接口Interface=cmdline; 在 Precision Helper 中顯示的插件標(biāo)題和提示信息。Caption=Encoding ConversionHint=Convert the encoding of htm/html files in current project.Caption.cn=編碼轉(zhuǎn)換Hint.cn=轉(zhuǎn)換項(xiàng)目中所有網(wǎng)頁文件的編碼為用戶指定的編碼。[Application]; 要執(zhí)行的程序,其中 %APPEXTRAS% 表示 Precision Helper 的擴(kuò)展文件夾。可以在幫助中查看到更多這里能使用的變量。%APPEXTRAS%\Encodingconversion\Encodingconversion.exe[Command-line]; 傳遞給程序的參數(shù),%PROJECTFOLDER% 表示項(xiàng)目文件夾。這樣我們可以對(duì)里面的所有網(wǎng)頁文件進(jìn)行操作。Parameters="%PROJECTFOLDER%"waitfor=0saveTOC=1saveIDX=0saveProject=1reloadTOC=1reloadIDX=0reloadProject=1[IDE]; 設(shè)置這個(gè)擴(kuò)展在 Precision Helper GUI 哪些部分的工具欄顯示出來。ribbonHOME=1ribbonTOC=1ribbonIDX=0ribbonPUB=0ribbonTOOLS=1ribbonHELP=0TopicSource=0
接著把這個(gè)插件配置文件和要調(diào)用的程序放在插件目錄的 Encodingconversion 子目錄中,包括 Encodingconversion.phe、Encodingconversion.exe 以及要調(diào)用程序需要的其他文件(這里為了方便,都放在同一個(gè)目錄中)。其中 Encodingconversion.exe 是由 ahk 腳本編譯而成,如果使用安裝版的 AutoHotkey,那么這里直接使用 ahk 腳本而不進(jìn)行編譯。
我把這個(gè)插件所有文件打包成了壓縮文件,請(qǐng)點(diǎn)擊這里下載進(jìn)行測(cè)試,其中包含了 ahk 腳本的源文件。把它解壓到插件目錄接著啟動(dòng)程序,則可以在相應(yīng)位置的工具欄看到插件了:
在本文中主要講輸出 CHM 格式,這是 Precision Helper 的主要輸出格式,不過它還支持輸出為其他文件格式,下面簡(jiǎn)要介紹它支持的幾種主要格式:
1. CHM:早期 Windows 系統(tǒng)中的文件格式是 WinHelp(擴(kuò)展名 .hlp 和 .cnt),從 Windows Vista 起對(duì) WinHelp 格式的支持已經(jīng)停止了。從 Windows 98 開始引進(jìn)了 HTML Help(擴(kuò)展名 .chm)。HTML Help 在單文件中集成了目錄和幫助,同時(shí)支持索引、全文搜索和基于 html 的豐富的格式表現(xiàn),所以目前成為了 Windows 平臺(tái)上在程序中使用的最常見的聯(lián)機(jī)幫助格式。在 Windows 平臺(tái)中分享一些無需編輯和打印的資料時(shí),推薦使用這種格式。
2. WebHelp:這種格式是把項(xiàng)目的目錄結(jié)構(gòu)(源文件)復(fù)制到特定文件夾并生成 HTML 或 XML 格式的“框架”,這樣可以方便地在網(wǎng)頁瀏覽器中進(jìn)行瀏覽。許多程序的在線幫助使用類似的方法實(shí)現(xiàn),具體的效果請(qǐng)參閱:Precision Helper 在線幫助(英文)。自帶的樣式已經(jīng)不錯(cuò)了,不過如果您會(huì)網(wǎng)頁或懂得處理圖片,那么通過修改模板可以完全按自己的需求進(jìn)行自定義。
對(duì)于本地 CHM 文件一般我建議使用 GB2312 編碼,不過對(duì)于在線幫助可能使用 UTF-8 較好。
3. ePUB:這是廣泛使用的電子書格式,方便在不同的設(shè)備上查看。具體效果請(qǐng)參閱:Precision
Helper 幫助電子書(英文)。
4. 單個(gè) HTML 文檔:實(shí)際上是合并所有主題到一個(gè)文件并復(fù)制項(xiàng)目的其他內(nèi)容(圖像、樣式等)到一個(gè)特定文件夾(含目錄結(jié)構(gòu))。這種格式一般作為中間格式方便進(jìn)一步的操作,例如進(jìn)行打印或轉(zhuǎn)換為 PDF 格式(此時(shí)另需安裝 PDF 打印機(jī)或轉(zhuǎn)換工具,具體請(qǐng)參閱幫助)。
這里簡(jiǎn)要說說與 CHM 格式相關(guān)的一些問題和技巧,采用問答形式。
1. 問:我從網(wǎng)上下載了一個(gè) CHM 文件,打開查看頁面時(shí),卻提示“無法顯示網(wǎng)頁…”,每個(gè)頁面都是這樣,什么原因呢?
答:這個(gè)問題是由于微軟在 Windows 更新中增加了對(duì)網(wǎng)絡(luò)傳送的 CHM 文件的安全限制造成。執(zhí)行如下操作:查看此文件屬性,在屬性框中點(diǎn)擊“解除鎖定”按鈕,接著確定后就可以正常查看了。如果直接從網(wǎng)上下載了大量的 CHM 文件,那么可以修改注冊(cè)表以解除這個(gè)安全限制(不推薦)。相關(guān)內(nèi)容請(qǐng)參閱:MS05-26,KB806054,KB902225。
2. 問:我想發(fā)布一些 CHM 格式的資料到網(wǎng)上,但我希望用戶下載后可以直接查看,而不需要麻煩的去解鎖,有什么辦法嗎?
答:一個(gè)非常簡(jiǎn)單的辦法是對(duì) CHM 文件進(jìn)行壓縮(例如壓縮為 ZIP 文件)這樣其他用戶下載解壓后可直接查看。目前,AutoHotkey 中文幫助離線文件的發(fā)布采用這種形式,這樣方便傳輸,也方便用戶。
在實(shí)踐中,我發(fā)現(xiàn)有不少用戶在打開 CHM 文件看到“無法顯示網(wǎng)頁…”時(shí)不清楚可以解鎖后查看,所以發(fā)布幫助時(shí)進(jìn)行壓縮是比較必要的。
3. 問:我在從 HTM/HTML 文件創(chuàng)建 CHM 文件時(shí),產(chǎn)生的 CHM 文件中某些頁面為空白,并且無法搜索中文,該如何解決?
答:在我的經(jīng)驗(yàn)中,這種情況由編碼引起。對(duì)于 CHM 格式,有兩處與編碼有關(guān)的位置:CHM 自身的編碼和其中 HTM/HTML 文件采用的編碼,其中 HTM/HTML 文件的編碼包括文件頭部的編碼聲明和文件的編碼。要避免上述問題,建議:對(duì)于 CHM 自身的編碼選擇 ANSI 或 GB2312(對(duì)于簡(jiǎn)體中文系統(tǒng),這兩者想過相同);對(duì)于 HTM/HTML 文件的頭部和文件也使用這樣的編碼。
如果一定要在網(wǎng)頁中使用 UTF-8 編碼,則可進(jìn)行修改讓網(wǎng)頁的 <title></title> 標(biāo)簽對(duì)之間只含有 ASCII 字符,這樣可以避免某些頁面顯示為空白,然而這樣仍然無法搜索中文。(目前尚不確定在不同的系統(tǒng)中,是否可以通過把 IE 更新到最新版本來解決這樣的問題。)
另外,如果把 CHM 文件放在較深層次的目錄或中文目錄中,可能會(huì)在使用時(shí)出現(xiàn)某些問題。
4. 問:我需要經(jīng)常/批量的反編譯 CHM 文件,每次都要打開一個(gè)軟件進(jìn)行解壓很麻煩,能方便些嗎?
答:使用批處理命令:
hh.exe -decompile <dir> <object.chm>
其中 hh.exe 是系統(tǒng)自帶的 CHM 查看器,<dir> 是目標(biāo)目錄,<object.chm> 是要解壓的 CHM 文件。需要批量解壓則在循環(huán)中使用這個(gè)命令。此外,許多壓縮解壓軟件也能解壓 CHM 文件或查看其內(nèi)部文件。使用 TotalCommander 的用戶可以為內(nèi)部命令 cm_GoToDir 設(shè)置一個(gè)熱鍵來直接進(jìn)入 CHM 文件查看里面的內(nèi)容。
5. 問:我需要經(jīng)常/批量的從已準(zhǔn)備好的項(xiàng)目文件編譯成 CHM 文件,能實(shí)現(xiàn)嗎?
答:首先請(qǐng)下載 Microsoft HTML Help Workshop(請(qǐng)下載中間 3.3 M的文件),并從中提取 hhc.exe 和 hha.dll 文件,現(xiàn)在可以使用下列批處理命令:
hhc.exe <myproject.hhp>
myproject.hhp 為要編譯的項(xiàng)目文件,執(zhí)行前請(qǐng)確保 hhc.exe 和 hha.dll 文件存在。如果成功,生成的 CHM 文件將會(huì)出現(xiàn)在 myproject.hhp 文件的OPTIONS段下Compiled file 對(duì)應(yīng)的值指定的文件路徑。
另一種方法是把需要編譯的所有項(xiàng)目添加到 Precision Helper,然后從它的開始菜單中打開構(gòu)建列表,這時(shí)在 Robbin 欄的構(gòu)建下將出現(xiàn)編譯所有按鈕,點(diǎn)擊它即可以編譯所有在構(gòu)建列表中的項(xiàng)目。
6. 問:我想在查看 CHM 時(shí)做一些標(biāo)記,能實(shí)現(xiàn)嗎?
答:由于 CHM 格式主要設(shè)計(jì)用于發(fā)布程序的聯(lián)機(jī)幫助,所以在一些特殊情況下可能不太方便,例如無法像 PDF 文檔那樣添加注釋。使用一些工具可以實(shí)現(xiàn)類似的功能,例如 CHM Editor 可以支持直接編輯 CHM 中的頁面,Ultrachm 可以高亮 CHM 中的文本等。
本文簡(jiǎn)要介紹了 Precision Helper 創(chuàng)建新項(xiàng)目的基本功能,更多的功能和用法等請(qǐng)參閱幫助。如果希望試驗(yàn)它的一些功能,建議使用程序包中自帶的 Precision Helper 的幫助的項(xiàng)目文件(在 samples 文件夾中)進(jìn)行測(cè)試。
無論您是制作 CHM 幫助的新人還是老用戶,歡迎體驗(yàn) Precision Helper,在絕大多數(shù)情況下它都能滿足您的需求。如果您發(fā)現(xiàn)了您需要而它尚未支持的功能(請(qǐng)先查看幫助確認(rèn)),歡迎到官方查找已有的插件(插件查看地址)或編寫自己的插件,或者反饋給開發(fā)組(郵件地址:support@be-precision.com)。
我最初生成 CHM 是使用了 TotalCommander 中的插件 CHMDir(善用佳軟注:我發(fā)布的TC學(xué)堂的chm電子書,也是用該插件完成的),但這個(gè)插件功能較弱,無法進(jìn)行更多的設(shè)置和包含全文搜索功能(這是最初我更新的 AutoHotkey 中文幫助不含搜索的原因,很多 AutoHotkey 中文用戶知道)。之后開始了一路尋找這類軟件的過程,在選擇這個(gè)軟件一段時(shí)間后尋找結(jié)束。目前 AutoHotkey 幫助在更新時(shí)的解壓及生成已經(jīng)使用前面所述的方法腳本化,所以一般只在創(chuàng)建新幫助時(shí)才使用 Precision Helper。
目前的中文界面和幫助是我翻譯的,由于英語水平及能力的限制,在準(zhǔn)確性和表達(dá)的通順上存在問題。如果有哪位朋友對(duì) CHM 的各方面功能比較熟悉,有空且愿意幫忙進(jìn)行完善(以及翻譯官方網(wǎng)站上與 Precision Helper 相關(guān)的網(wǎng)頁),則可以嘗試和他們協(xié)商贈(zèng)送您一款他們商業(yè)軟件的授權(quán)(這是他們對(duì)譯者的感謝,由于我只需要他們的這個(gè)軟件,所以當(dāng)時(shí)放棄)。在翻譯時(shí)我使用 OmegaT,這是種能快速上手的翻譯記憶軟件,同時(shí)把翻譯記憶提供給了他們,所以在進(jìn)行完善時(shí)主要進(jìn)行校對(duì),而不需要輸入現(xiàn)在的翻譯(欲簡(jiǎn)單了解 OmegaT 請(qǐng)參閱維基百科上 OmegaT 的介紹和 OmegaT — 開放源碼電腦翻譯輔助程式)。
Precision Helper 是免費(fèi)軟件,如果您覺得它給您的很大的幫助,可以考慮捐贈(zèng)以支持它們進(jìn)一步的開發(fā)(捐贈(zèng)地址)。
文章更新歷史:
2012-08-24:首次發(fā)布
2012-05-01:完成草稿
聯(lián)系客服