C#生成CHM文件代碼 功能實(shí)現(xiàn):
1.將在線的網(wǎng)頁保存為CHM文件
2.我們將對(duì)我們進(jìn)行編譯的CHM文件進(jìn)行反編譯,使用的還是微軟自帶的一個(gè)exe(hh.exe)。
3.以編程的方式將CHM文件轉(zhuǎn)換為Word
CHM文件轉(zhuǎn)換為Word
接下來,我們來延伸下,利用反編譯的文件,將CHM轉(zhuǎn)換成Word文件。思路是這樣的:利用反編譯,得到hhc文件(hhc文件中包含htm或html文件的文件名)和一大堆web頁面(如果一開始編譯進(jìn)去的是一大堆的話,呵呵),創(chuàng)建一個(gè)word文件,將html文件插入到word中,下面以實(shí)例的方式來實(shí)現(xiàn)。
為了方便代碼管理,我創(chuàng)建了一個(gè)類庫(kù)項(xiàng)目,命名為CHM2Word,里面主要實(shí)現(xiàn)將CHM文件反編譯并將反編譯的文件整合為Word。在CreateCHM項(xiàng)目中調(diào)用代碼即可,另需要你的機(jī)器安裝Office2003(對(duì)應(yīng),添加引用 ->COM->Microsoft Word 11.0 Object Library)或2007(對(duì)應(yīng),添加引用->COM->Microsoft Word 12.0 Object Library)。
PS:
1.如果你使用的是office2003或者office2007,需要修改類庫(kù)項(xiàng)目下的WordClass類下Word方法,因?yàn)閛ffice2010的
Microsoft.Office.Interop.Word.ApplicationClass不再提供構(gòu)造方法,而是提供Microsoft.Office.Interop.Word.Application()接口
2.如果在轉(zhuǎn)換的工程中,始終沒有反應(yīng),可以調(diào)試下,如果出現(xiàn)這樣的錯(cuò)誤,“因?yàn)闆]有打開的文檔,所以這一命令無效”。
調(diào)試中不會(huì)彈出異常,但是將鼠標(biāo)放到wApp對(duì)象中,查看的會(huì)發(fā)現(xiàn)那樣的錯(cuò)誤,原因是因?yàn)闄?quán)限不夠,可以采用如下方法解決:
運(yùn)行dcomcnfg打開組件服務(wù),依次展開"組件服務(wù)"->"計(jì)算機(jī)"->"我的電腦"->"DCOM配置"
找到"Microsoft Word應(yīng)用程序",右鍵打開屬性對(duì)話框,
點(diǎn)擊"標(biāo)識(shí)"選項(xiàng)卡,點(diǎn)擊"標(biāo)識(shí)"標(biāo)簽,選擇"交互式用戶"(此設(shè)置可能對(duì)計(jì)算機(jī)安全存在威脅,如不設(shè)置可以解決問題就不設(shè)置,點(diǎn)"下列用戶",把管理員的用戶administrator密碼....正確填寫進(jìn)去也行)
點(diǎn)擊"安全"選項(xiàng)卡,依次把"啟動(dòng)和激活權(quán)限","訪問權(quán)限","配置權(quán)限",都選擇為自定義,然后依次點(diǎn)擊它們的編輯,把everyone添加進(jìn)去,并加入所有的權(quán)限...
OK,解決此問題!
如果你的office是2010或者你的系統(tǒng)版本較高的話,很有可能遇到這樣的問題。我的電腦是windows7+office2010,就遇到了這樣的問題。
3.在反編譯和在線生成CHM的時(shí)候會(huì)生成一些臨時(shí)文件,如果不及時(shí)刪掉的話,會(huì)造成空間的浪費(fèi)。