2012-02-01 121 views
3

我需要能夠使用java將docx轉換爲pdf。我嘗試使用docx4j,但雖然它非常好,但我擁有的docx比它能處理的要複雜得多(格式化)。我決定看看一臺PDF打印機是否可以處理它們,儘管它們並不完美,但它們是可以接受的。現在我面臨着如何從JAVA自動化的問題,我發現唯一的解決方案是與MS Word的COM(我嘗試使用Open Office API,它也無法處理DOCX格式)。Docx到PDF轉換在java

我發現了幾個COM的映射爲java,如jacob,並嘗試了他們,但我似乎無法找到合適的Word命令打印。代碼我使用(I堆棧數塊,我發現在網上一起)是:

 String sInputDoc = "fi.docx"; 
     boolean tVisible = false; 
     ActiveXComponent oWord = new ActiveXComponent("Word.Application"); 
     oWord.setProperty("Visible", new Variant(tVisible)); 
     Object oDocuments = oWord.getProperty("Documents").toDispatch(); 
     Object oDocument = Dispatch.call((Dispatch)oDocuments, "Open", sInputDoc).toDispatch(); 

     Dispatch oSelection = oWord.getProperty("Selection").toDispatch(); 
     Dispatch oFind = oWord.call(oSelection, "Find").toDispatch(); 
     Dispatch oWordBasic = (Dispatch) Dispatch.call(oWord, "WordBasic").getDispatch(); 
     Dispatch.call(oWordBasic, "FilePrint"); 

此代碼然而,僅導致程序來嘗試並保存文件,而不是打印(不知道爲什麼)。

現在可能的問題是:如何將打印操作發送給Word? (我做了我的研究,但大多數時候評論基本上都是開放性的文字和打印到PDF,但從來沒有如何實際打印)如果有更好的選擇,它們是什麼?我很樂意與擁有免費許可證的任何產品合作。

在此先感謝。

+0

關於docx4j的更新:現在,除了基於開源XSL FO的轉換之外,還有一種高保真度的非FO商業選擇。請參閱http://www.docx4java.org/forums/pdf-output-f27/higher-fidelity-pdf-output-now-available-t2117.html – JasonPlutext 2015-10-21 05:19:18

回答

0

您可以嘗試ODF轉換器和JOD轉換器的組合。 ODF轉換器可以爲ODT轉換提供合理的DOCX,JOD轉換器可以爲pdf輸出提供合理的ODT。印刷是另一回事,但我認爲你只需要印製,因爲你正在嘗試的特定解決方案。

+0

懷疑您需要ODF Converter部分;最近的OO可以愉快地打開docx。所以只需使用JOD轉換器。 – JasonPlutext 2012-11-01 18:53:55

+0

到目前爲止,內置的DocX轉換功能相當差勁。 ODFConverter在幾個月前取得了長足的進步。我沒有評估過最新版本。 – 2012-11-02 13:53:52