-
Notifications
You must be signed in to change notification settings - Fork 288
Migration Guide 4.1.0
This guide discusses migration from JODConverter version 4.0.0-RELEASE to version 4.1.0.
Lots of work has been done for 4.1.0. The two major changes have been to create a new fluent API for performing document conversions, and to introduce a new module for LibreOffice Online support. The addition of this new module has had an impact on the project structure and thus, JODConverter users will have to update their dependency in order to reflect this change.
JODConverter 4.1.0 is built using Java 7 JDK and will require Java 7 JRE at runtime (Java 8 also works).
At first, the support for LibreOffice Online was all develop in the main jodconverter-core
project. But I didn't like the fact that it added more (HTTP) dependencies to the project. Even worse, the 4.0.0-RELEASE version of jodconverter-core
requires an office installation (LibreOffice/Apache OpenOffice), and LibreOffice Online does not. It would have been pointless to offer an online converter that requires a local OOo installation.
So I decided to create 2 new modules that depend on the core module; jodconverter-local
and jodconverter-online
. All the classes required for local conversions was moved into the local module and all the new classes required for online conversions was moved into the online module. This way, the online module doesn't have all the OOo libraries as dependencies, nor the local module has the http-components libraries as dependencies.
Since the jodconverter-core
project is now just a dependency of both the new modules, former JODConverter users must now use the jodconverter-local
in their project, instead of jodconverter-core
:
<dependencies>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-core</artifactId>
<version>4.0.0-RELEASE</version>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
compile 'org.jodconverter:jodconverter-core:4.0.0-RELEASE'
compile 'org.jodconverter:jodconverter-local:4.1.0'
Even if the 4.1.0 version is backward compatible (just changing maven dependency from jodconverter-core to jodconverter-local is enough), JODConverter users are encouraged to use the new API since the classes DefaultOfficeManagerBuilder
and OfficeDocumentConverter
are now deprecated.
Please read the Usage as a Java Library wiki page to fully understand the new API.
Here is a conversion example using the 4.0.0-RELEASE version:
File source = new File(...);
File dest = new File(...);
OfficeManager officeManager = null;
try {
officeManager = new DefaultOfficeManagerBuilder()
.setPortNumbers(2002, 2003)
.setTaskExecutionTimeout(60000)
.setOfficeHome(new File("office path"))
.build();
officeManager.start();
OfficeDocumentConverter converter
= new OfficeDocumentConverter(officeManager);
converter.convert(source, dest);
} finally {
if (officeManager != null) {
try {
officeManager.stop();
} catch (OfficeException ex) {
// Log the error...
}
}
}
And here is the exact same example, using the new 4.1.0 version:
File source = new File(...);
File dest = new File(...);
OfficeManager officeManager = null;
try {
officeManager = LocalOfficeManager.builder()
.portNumbers(2002, 2003)
.taskExecutionTimeout(60000)
.officeHome("office path")
.build();
officeManager.start();
LocalConverter.make(officeManager)
.convert(source)
.to(dest)
.execute();
} finally {
if (officeManager != null) {
try {
officeManager.stop();
} catch (OfficeException ex) {
// Log the error...
}
}
}
Note that in a WEB application context where an office manager is created and started once when the application starts, the office manager can now be installed and thus it is no longer required to specify which manager is used when converting a document:
// On application start
OfficeManager officeManager = LocalOfficeManager.builder()
.portNumbers(2002, 2003)
.taskExecutionTimeout(60000)
.officeHome("office path")
.install()
.build();
officeManager.start();
...
// On document conversion
File source = new File(...);
File dest = new File(...);
LocalConverter.make()
.convert(source)
.to(dest)
.execute();
// Or the shortcut:
JodConverter
.convert(source)
.to(dest)
.execute();
Whenever OpenOffice.org (OOo for short) is mentioned, this can generally be interpreted to include any office suite derived from OOo such as Apache OpenOffice and LibreOffice.