java中的Docx到PDF转换

时间:2012-02-01 13:53:05

标签: java pdf com ms-word docx

我需要能够使用java将docx转换为pdf。我尝试使用docx4j但是虽然它非常好,但我拥有的docx比它能处理的要复杂得多(格式化)。我决定看看PDF打印机是否可以处理它们,虽然它们并不完美,但它们是可以接受的。现在我面临着如何从JAVA自动化的问题,我找到的唯一解决方案是COM与MS Word(我尝试使用Open Office API,它也无法处理docx格式)。

我找到了几个用于Java的COM映射,例如jacob并尝试了它们,但我似乎找不到适合要打印的Word的COM命令。我正在使用的代码(我在网上找到了几件我在网上找到的代码)是:

        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,但从未如何实际打印)如果有更好的选择,它们是什么?我很高兴与任何有免费许可证的人合作。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试ODF Converter和JOD Converter的组合。 ODF转换器可以为ODT转换提供合理的DOCX,JOD转换器可以为pdf输出提供合理的ODT。打印是另一回事,但我认为你只需要打印,因为你正在尝试的特定解决方案。