如何在服务器模式下使用 OpenOffice 作为多线程服务?

2022-09-01 23:31:33

在服务器模式下使用OpenOffice的体验如何?我知道OpenOffice不是多线程的,现在我需要在我们的服务器中使用它的服务。
我能做些什么来克服这个问题?

我使用的是Java。


答案 1

使用当前版本的 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"));

答案 2

是的,我正在使用OpenOffice作为文档转换服务器。

不幸的是,你的问题的解决方案是生成一个OpenOffice进程池。

JODConverter的commons-pool分支(在它移动到之前)为您实现了这个开箱即用的。code.google.com