2006/12/07

在Linux上的chm2html

by mison@bbs.ee.ntu.edu.tw

這裡有一篇 HTML Help (CHM) 的參考資料


可以參考裡面的 CHM Tools package

再加上 netscape plugins SDK

寫一個 chm plugin,就可以用 mozilla 看 chm 檔了。

因為這陣子發現在NetScape跑得好好的JavaScript在IE不能執行,找到M$
的說明文件是CHM格式;在網路上尋找CHM的工具軟體,幾乎都是M$作業系
統的版本,唯一有點機會的是 CHM Tools Package 含程式原始碼,偏偏又
make不起來。

看到GNU/Linux有朋友問到『在Linux看CHM的軟體』的同時,我正在想辦法
把 CHM 寫成 mozilla plugin,因為 plugin 參考資料也是很少,遇到一些
瓶頸;看到有人也需要使用CHM格式.於是先改一個暫時版應急。

關於『怪符號檔名』問題,新版已經改正,把
system( "install -d directory"); 改成 mkdir( "directory", mask);
就可以了;這個部分的功能其實沒有太大影響,暫時先保留,等 plugin 版
完成時,再一起release出來。

在 GNU/Linux 看 .chm 的工具程式,版本更新:


新版修正bug,並增加支援中文檔名、轉『目錄檔』為 html 或 bookmark

安裝步驟:

tar -xzvf chm2html-0.1a.tgz
cd chm2html
tar -xzvf chmtools.tar.gz
tar -xzvf utf-converter-1.0.tar.gz
make

使用說明:

一、把 ~/winhlp/braille.chm 解開、放到 ./tst 底下
../chm2html < ~/winhlp/braille.chm ./tst

二、解開CHM會有一個 .hhc 的目錄檔,可以轉成 html
../hhc2html.pl ./tst/braille.hhc > .tst/braille.html

三、目錄檔也可以轉成 mozilla 的 bookmark 來用
../hhc2bookmark.pl --lo=on --root=`pwd`/tst ./tst/braille.hhc > bookmark.html

補充說明:

中文檔名的部分,只是把 chm 裡的 unicode 轉成 big5,
這樣只是讓解出來的中文檔名可以讓人看得懂,hyper link還是會有問題。

參數 --lo=on 是指定把大寫檔名改為小寫,這是因為 chm2thml 是根據 chm 檔頭
解出檔案,而 hhc 目錄、chm 檔頭裡的檔名,兩者可能不一致。所以在第一步 chm
解開後、自行判斷要不要加 --lo=on

bookmark 只是一個暫時的解決方案,可以用 hhc2bookmark 轉出來的檔案替換原來
~/.mozilla 裡的 bookmark,這樣可以模擬 M$-IE 的 text/sitemap;其實有更好
的方法, mozilla 有提供 sidebar 和 IE sitemap 類似,但是我還不知如何新增
sidebar 到 mozilla 裡面。

hyper link 檔名不一致的問題可能千奇百怪,轉目錄的程式是用 perl 寫的,
若有需要,請自行修改 perl 程式裡的 regular expressions

微軟有個程式可以HTML->CHM,也可以轉回來,應該是這個
http://download.microsoft.com/download/OfficeXPProf/Install/4.71.1015.0/W98NT42KMe/EN-US/HTMLHELP.EXE
請自己把他串成一行,很多html檔時蠻好用的

===========
解開後,將裡面的
chmtools.tar.gz
utf-converter-1.0.tar.gz
也都解開後,再make就可順利完成!