我最近做了一個項目,其中用到了Jacob這個包將Word文檔轉(zhuǎn)換為html,但是用此包進(jìn)行轉(zhuǎn)換需要在jdk的bin目錄下加入jacob-1.18-M2-x64.dll(64位)或jacob-1.18-M2-x86.dll(32位)這兩個文件,我使用MyEclipse將tomcat啟動或者直接啟動startup.bat程序都可以正常運(yùn)行,Word也能夠正常轉(zhuǎn)換為html。但是這樣每次啟動tomcat都很不方便,所以我使用service.bat install 命令將tomcat作為服務(wù),這樣就可以設(shè)置成開機(jī)自動啟動,這樣一開機(jī)就可以用了,通過服務(wù)啟動的tomcat確實可以正常運(yùn)行,但是!唯獨(dú)Word轉(zhuǎn)換為html這個塊出了問題!無法轉(zhuǎn)換!但是我查看進(jìn)程,每次運(yùn)行Word轉(zhuǎn)html都會新建一個叫做“WINWORD.EXE”的進(jìn)程。這個實在令我詫異!為什么通過服務(wù)啟動就不能使用Jacob了呢!然后我在我同學(xué)的電腦上也試了一下,跟我情況一樣。(我和我同學(xué)電腦系統(tǒng)都是win7的)。然后我又用公司的兩臺xp電腦配了一次,用服務(wù)啟動,Word都能正常轉(zhuǎn)為html??!難道跟系統(tǒng)有關(guān)???這個我就有點(diǎn)不理解了。通過服務(wù)啟動tomcat和使用startu.bat啟動到底有什么區(qū)別,或者如果是系統(tǒng)問題,win7和xp在處理這個問題方面又有什么不一樣呢??求大神幫忙解決啊!下面是Word轉(zhuǎn)html的相關(guān)代碼:
// 啟動word應(yīng)用程序(Microsoft Office Word 2003)
ActiveXComponent app = new ActiveXComponent("Word.Application");
System.out.println("*****正在轉(zhuǎn)換...*****");
try
{
// 設(shè)置word應(yīng)用程序不可見
app.setProperty("Visible", new Variant(false));
// documents表示word程序的所有文檔窗口,(word是多文檔應(yīng)用程序)
Dispatch docs = app.getProperty("Documents").toDispatch();
// 打開要轉(zhuǎn)換的word文件
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { docfile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
// 作為html格式保存到臨時文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
htmlfile, new Variant(WORD_HTML) }, new int[1]);
// 關(guān)閉word文件
Dispatch.call(doc, "Close", new Variant(false));
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//關(guān)閉word應(yīng)用程序
app.invoke("Quit", new Variant[] {});
}
System.out.println("*****轉(zhuǎn)換完畢********");
}