我需要能夠使用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,但從來沒有如何實際打印)如果有更好的選擇,它們是什麼?我很樂意與擁有免費許可證的任何產品合作。
在此先感謝。
關於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