преобразование doc в docx с использованием JODConveter сбой с кодом ошибки: 2074

#java #ms-word #openoffice.org #jodconverter

#java #ms-word #openoffice.org #jodconverter

Вопрос:

Мне нужно преобразовать doc в docx, для чего я использую JODConveter (OpenOffice), но, к сожалению, мой код прерывается с кодом ошибки 2074. Кто-нибудь может подробнее рассказать о том, что означает этот код ошибки и как я могу это исправить.

Мой код представлен ниже :

 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. @Brutal_JL можете ли вы предоставить некоторые входные данные?

Ответ №1:

Поскольку вы, по-видимому, работаете в Windows, существует более стабильное решение, которое также даст вам результаты преобразования с гораздо большей точностью.

Вам нужно будет установить любую версию Office (2007 или более позднюю) или загрузить и установить пакет совместимости от Microsoft (если это еще не сделано). Затем вы можете легко конвертировать из .doc в .docx, используя следующую команду:

 "C:Program FilesMicrosoft OfficeOffice12wordconv.exe" -oice -nme <input file> <output file>
  

где <входной файл> и <выходной файл> должны быть полными именами путей.

Команда может быть легко применена к нескольким документам с помощью for :

 for %F in (*.doc) do "C:Program FilesMicrosoft OfficeOffice12wordconv.exe" -oice -nme "%F" "%Fx"
  

Или вы можете вызвать команду из Java:

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

Комментарии:

1. Мне нужно преобразовать doc в docx в моем Java-коде, поскольку мне нужно позже ввести пользовательские свойства, преобразовав полученный docx в документ XWPFDocument. Я не уверен, что эти команды, которые вы предоставили, могут быть выполнены из кода.

2. PS: У меня установлен Office на моем компьютере с Windows.