使用JODConveter的doc到docx转换失败,错误代码为:2074

时间:2016-10-19 15:21:13

标签: java ms-word openoffice.org jodconverter

我需要将doc转换为我正在使用JODConveter(OpenOffice)的docx,但不幸的是我的代码打破了错误代码2074.任何人都可以更深入地了解这个errorCode的含义以及我如何解决它。

我的代码在下面分享:

OfficeManager officeManager =
    new DefaultOfficeManagerConfiguration().setOfficeHome(
    new File("C:\\Program Files (x86)\\OpenOffice4")).buildOfficeManager();

officeManager.start(); 

OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); 

DocumentFormat docx = converter.getFormatRegistry().getFormatByExtension("docx");
docx.setStoreProperties(DocumentFamily.TEXT,
                        Collections.singletonMap("FilterName",
                                                 "MS Word 2007 XML"));

converter.convert(new File("C:\\localFiles\\abc.doc"),
                  new File("C:\\localFiles\\abc_new.docx"));

officeManager.stop();

但是,如果我将预期文件的扩展名从docx更改为pdf,则上述代码完全正常。

1 个答案:

答案 0 :(得分:0)

正如您在Windows上看到的那样,有一个更稳定的解决方案,它还可以为您提供更高保真度的转换结果。

您必须安装任何版本的Office(2007或更高版本)或从Microsoft下载并安装兼容包(如果尚未安装)。然后,您可以使用以下命令轻松地将.doc转换为.docx:

"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme <input file> <output file>

其中&lt;输入文件&gt;和&lt;输出文件&gt;需要是完全限定的路径名​​。

使用for

可以轻松地将命令应用于多个文档
for %F in (*.doc) do "C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme "%F" "%Fx"

或者您可以从Java调用命令:

Process p = Runtime.getRuntime().exec(
    new String[] {
        "C:\Program Files\Microsoft Office\Office12\wordconv.exe",
        "-oice",
        "-nme",
        "C:\\localFiles\\abc.doc",
        "C:\\localFiles\\abc_new.docx"
    });
int exitVal = p.waitFor();