我正在尝试让JODConverter与Jdk 1.8.0_144一起在Windows10上工作。正如您从代码中看到的,我认为这可能是时间问题,因此延迟。如您所见,JODConverter认为OfficeManager正在运行。我使用了下面的代码:
import java.io.File;
import org.jodconverter.JodConverter;
import org.jodconverter.office.LocalOfficeManager;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;
import org.jodconverter.office.OfficeUtils;
import org.jodconverter.process.ProcessManager;
public class JodConverterTest {
public static void main(String[] args) throws OfficeException, InterruptedException {
OfficeManager officeManager
= LocalOfficeManager.builder()
.officeHome("C:\\Program Files\\LibreOffice")
.portNumbers(2372)
.build();
officeManager.start();
File inputFile = new File("c:\\test\\rtf.rtf");
File outputFile = new File("c:\\test\\rtf.pdf");
try {
System.out.println("officeManager.isRunning()="+officeManager.isRunning());
Thread.sleep(10000);
System.out.println("officeManager.isRunning()="+officeManager.isRunning());
JodConverter.convert(inputFile).to(outputFile).execute();
} finally {
// Stop the office process
OfficeUtils.stopQuietly(officeManager);
}
}
}
当我运行它时,我得到了以下错误:
officeManager.isRunning()=true
officeManager.isRunning()=true
Exception in thread "main" java.lang.IllegalStateException: An office manager is required in order to build a converter.
at org.jodconverter.job.AbstractConverter.<init>(AbstractConverter.java:57)
at org.jodconverter.LocalConverter.<init>(LocalConverter.java:93)
at org.jodconverter.LocalConverter.<init>(LocalConverter.java:49)
at org.jodconverter.LocalConverter$Builder.build(LocalConverter.java:202)
at org.jodconverter.LocalConverter.make(LocalConverter.java:73)
at org.jodconverter.JodConverter.convert(JodConverter.java:48)
at ZPlaying.JodConverterTest.main(JodConverterTest.java:30)
------------------------------------------------------------------------
BUILD FAILURE
我尝试过的事情:--更改端口号--研究是否可以找到java进程管理器的类路径,并添加以下内容,但我找不到ProcessManager的类路径,因为我对此了解不多:- .processManager("com.example.foo.CustomProcessManager") -我想知道这是否与通过Netbeans运行有关?
下面是适用的maven依赖项:
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>4.1.1</version>
</dependency>
我已经在C:\Program Files\LibreOffice中安装了Libre (全新安装)
发布于 2018-09-22 20:00:12
让它起作用了。这是一个解决方案:
package ZPlaying;
import java.io.File;
import org.jodconverter.JodConverter;
import org.jodconverter.office.LocalOfficeManager;
import org.jodconverter.office.OfficeException;
import org.jodconverter.office.OfficeManager;
import org.jodconverter.office.OfficeUtils;
public class JodConverterTest {
public static void main(String[] args) throws OfficeException, InterruptedException {
OfficeManager officeManager = LocalOfficeManager.builder()
.install()
.officeHome("C:\\Program Files\\LibreOffice")
.build();
File inputFile = new File("c:\\test\\rtf.rtf");
File outputFile = new File("c:\\test\\rtf.pdf");
try {
// Start an office process and connect to the started instance (on port 2002).
officeManager.start();
// Convert
JodConverter
.convert(inputFile)
.to(outputFile)
.execute();
} finally {
// Stop the office process
OfficeUtils.stopQuietly(officeManager);
}
}
发布于 2018-09-23 03:36:46
是的,这是我的错。JODConverter文档需要一些重大改进。我创建了静态JodConverter.convert方法来简化与jodconverter库的交互,但是在文档中我没有明确声明这个静态类将使用一个office管理器,该管理器将被创建为所有文档转换器的默认管理器。
这是在创建办公室管理器时使用"install“功能完成的。
所以我非常感谢你是一个聪明的程序员,它解决了这个问题,这篇stackoverflow帖子肯定会帮助许多开发人员!!
https://stackoverflow.com/questions/52460055
复制