我需要能够使用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