Requirements:
- OpenOffice installed and OpenOffice started (e.g., OpenOffice in the system tray on Windows)
- Java
Quick steps to test:
- Download the latest JODConverter 3.x from google code.
- Unzip the jar file
- Do a quick test:
java -jar lib/jodconverter-${version}.jar test.odt test.pdf
- you should see something like
C:\apps\jodconverter-3.0-beta-1>java -jar lib/jodconverter-3.0-beta-1.jar test.odt test.pdf Apr 9, 2009 12:56:42 PM net.sf.jodconverter.office.OfficeProcess start INFO: starting process with acceptString 'socket,host=127.0.0.1,port=8100' and profileDir 'C:\Users\JEREMY~1\AppData\Local\Temp\.jodconverter_socket_host-127.0.0.1_port-8100' Apr 9, 2009 12:56:42 PM net.sf.jodconverter.office.OfficeProcess start INFO: started process; pid -1 Apr 9, 2009 12:56:47 PM net.sf.jodconverter.office.OfficeConnection connect INFO: connected: 'socket,host=127.0.0.1,port=8100' Apr 9, 2009 12:56:52 PM net.sf.jodconverter.office.OfficeConnection$1 disposing INFO: disconnected: 'socket,host=127.0.0.1,port=8100' Apr 9, 2009 12:56:53 PM net.sf.jodconverter.office.ManagedOfficeProcess doEnsureProcessExited INFO: process exited with code 0
Note: As you can see it works because it assumes that OpenOffice listen to the port 8100, which happen to be the case (how lucky!).
In a Java (Server) App:
- Copy the following .jar files in your webapp lib directory
lib/jodconverter-3.0-beta-1.jar
lib/juh-3.0.0.jar
lib/jurt-3.0.0.jar
lib/ridl-3.0.0.jar
lib/unoil-3.0.0.jar - Use the following code snippet:
OfficeManager officeManager = new ManagedProcessOfficeManager(); officeManager.start(); OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); converter.convert(sourceFile,targetFile); officeManager.stop();
Best Practice (from JODConverter group)
- OfficeManager instance can and should be shared across all
threads. It should typically be started when your webapp starts, and
stopped when the webapp stops. It can be e.g. a singleton, or a Spring
bean, or other equivalent approach of your choice. - The OfficeDocumentConverter instance can also be shared, or you can
create a different instance per thread. It doesn’t really matter,
since all conversions will be delegated to the OfficeManager anyway.