我需要使用Java将docx转换为pdf。 我尝试过docx4j,虽然它相当不错,但我有的docx格式比它可以处理的要复杂得多。 我决定尝试使用PDF打印机来处理它们,虽然效果不完美,但是还算可以接受。 现在我面临的问题是如何从JAVA自动化实现,唯一找到的解决方案是使用MS Word的COM(我尝试使用Open Office API,但也无法处理docx格式)。
我找到了几个Java COM映射程序,例如jacob,并尝试了它们,但是我似乎找不到适当的COM命令来打印Word文件。 我正在使用以下代码(我从网上找到的几个代码片段组合在一起):
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?(我做了研究,但大多数评论基本上是打开Word并打印为PDF,但从来没有真正说明如何打印)如果有更好的选择,它们是什么?我很乐意使用任何具有免费许可证的东西。
提前感谢。