在服务器模式下使用OpenOffice有什么经验?我知道OpenOffice不是多线程的,现在我需要在我们的服务器中使用它的服务.
我该怎么做才能克服这个问题?
我正在使用Java.
使用当前版本的JODConverter(3.0-SNAPSHOT),在无头模式下处理OOo的多个线程非常容易,因为库现在支持启动多个实例并将它们保存在池中,只需提供多个端口号或命名构造OfficeManager实例时的管道:
final OfficeManager om = new DefaultOfficeManagerConfiguration() .setOfficeHome("/usr/lib/openoffice") .setPortNumbers(8100, 8101, 8102, 8103) .buildOfficeManager(); om.start();
然后,您可以使用库来转换文档,而无需在后台处理OOo实例池:
OfficeDocumentConverter converter = new OfficeDocumentConverter(om); converter.convert(new File("src/test/resources/test.odt"), new File("target/test.pdf"));
是的,我使用OpenOffice作为文档转换服务器.
不幸的是,您的问题的解决方案是生成一个OpenOffice进程池.
JODConverter 的commons-pool分支(在移动之前code.google.com
)为您实现了这个开箱即用的功能.