JODConvertor вызывает OpenOffice / LibreOffice через сетевой протокол.Поэтому он может «делать все, что вы можете делать в OpenOffice».Это включает конвертацию форматов.Но он работает так же хорошо, как и любая версия OpenOffice, которую вы используете.У меня есть некоторые рисунки в одном из моих документов, и он не конвертирует их, как я надеялся.
JODConvertor больше не поддерживается, согласно веб-сайту кода Google для v3.
Комучтобы JOD выполнял работу, вам нужно сделать что-то вроде
private static void transformBinaryWordDocToDocX(File in, File out)
{
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
DocumentFormat docx = converter.getFormatRegistry().getFormatByExtension("docx");
docx.setStoreProperties(DocumentFamily.TEXT,
Collections.singletonMap("FilterName", "MS Word 2007 XML"));
converter.convert(in, out, docx);
}
private static void transformBinaryWordDocToW2003Xml(File in, File out)
{
OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);;
DocumentFormat w2003xml = new DocumentFormat("Microsoft Word 2003 XML", "xml", "text/xml");
w2003xml.setInputFamily(DocumentFamily.TEXT);
w2003xml.setStoreProperties(DocumentFamily.TEXT, Collections.singletonMap("FilterName", "MS Word 2003 XML"));
converter.convert(in, out, w2003xml);
}
private static OfficeManager officeManager;
@BeforeClass
public static void setupStatic() throws IOException {
/*officeManager = new DefaultOfficeManagerConfiguration()
.setOfficeHome("C:/Program Files/LibreOffice 3.6")
.buildOfficeManager();
*/
officeManager = new ExternalOfficeManagerConfiguration().setConnectOnStart(true).setPortNumber(8100).buildOfficeManager();
officeManager.start();
}
@AfterClass
public static void shutdownStatic() throws IOException {
officeManager.stop();
}
Чтобы это работало, вам нужно запустить LibreOffice в качестве сетевого сервера (я не смог заставить часть JODConvertor «запускать по требованию»)очень хорошо работают под windows с LO 3.6)