我尝试使用简单的EditorKit选项,但似乎并不支持所有RTF格式。 所以我开始使用Tika,JODConverter或POI。
截至目前,我设法通过使用此功能使其与JODConverter和openOffice一起使用
OfficeManager officeManager = new DefaultOfficeManagerConfiguration()
.setPortNumbers(8100, 8101).buildOfficeManager();
officeManager.start();
OfficeDocumentConverter converter - new
OfficeDocumentConverter(officeManger);
try{
File tempFile = File.createTempFile("tempRtf", ".rtf");
BufferedWriter bw = new BufferedWriter(new FileWriter(tempFile));
bw.write(rtfString);
bw.close;
File outputTempFile = File.createTempFile("otuputTepFile", ".html");
converter.convert(tempFile, outputTempFile);
return FileUtils.readFileToString(outputTempFile);
这很有效。
我的问题是我实际上已经设置了一台服务器并将其关闭,这需要花费很多时间。 我试着看看我是否可以在第一次运行\报告中启动进程(我在birt报告中将其用作处理程序)然后只是检查进程是否正在运行,如果是这样,使用它进行转换,就是这样,它会节省很多时间我认为在启动和关闭过程中浪费了(我不在乎它会熬夜) 我的问题是,我的JODConverter版本中似乎没有注明here这些类。 经过进一步调查,我发现他们使用的是JODConverter 2.2 API,我使用的是3.0核心-β-4。
对于我的简单需求,JODConverter似乎有点复杂。
所以,如果有人知道如何启动办公室经理一次,然后检查一下我是否喜欢代码样本,当然如果有人得到比JODConverter更好的解决方案,我很高兴听到它。< / p>
编辑:我需要我的处理程序做两件事,1。检查是否有officemanager的实例,并连接到它(我们跳过officeManager.start()) 2.如果实例没有启动,那么生病基本上就是我写的代码样本发送的内容。 这段代码是用BIRT Handler编写的,所以我无法全局创建officeManager并只是共享它,因为每次调用birt引擎时都会运行处理程序类。 也许我可以在Birt本身设置officeManager?然后生病了处理程序中的实例?