#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.