1

我已将我的应用程序从 Wicket 1.x 升级到 8.x 版本。

我面临将 Excel 文件转换为 PDF 格式的问题。

使用以下依赖项:

<dependency>
    <groupId>net.sf.jodconverter</groupId>
    <artifactId>jodconverter</artifactId>
    <version>3.0-beta-4</version>
</dependency>

使用这些导入类

import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeConnectionProtocol;
import org.artofsolving.jodconverter.office.OfficeManager;

调用 buildOfficeManager() 方法时在此行上出现以下错误。

OfficeManager officeManager = eomc.buildOfficeManager();

我在上面的这条线上得到了下面的异常:

java.lang.ClassNotFoundException: com.sun.star.connection.NoConnectException at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java :1180) 在 org.artofsolving.jodconverter.office.ExternalOfficeManager.(ExternalOfficeManager.java:55) 在 org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration.buildOfficeManager(ExternalOfficeManagerConfiguration.java:50)

使用以下系统参数:

[openofficeHome=C:/Program Files/openoffice.org3, hostname=127.0.0.1, port=8100, protocol=SOCKET]

下面是更详细的代码:

ExternalOfficeManagerConfiguration eomcTest = new ExternalOfficeManagerConfiguration();
eomcTest.setConnectOnStart(true);

eomcTest.setConnectionProtocol(ooConfig.getProtocol());

if (OfficeConnectionProtocol.PIPE.equals(ooConfig.getProtocol())) {
    eomcTest.setPipeName("officePipe");
} else {
    eomcTest.setPortNumber(ooConfig.getPort());
}

OfficeManager officeManager = eomcTest.buildOfficeManager();
officeManager.start();
OfficeDocumentConverter officeDocConverter = new OfficeDocumentConverter(officeManager);
resultFile = File.createTempFile(sheetName, TypeOfFile.PDF.getFileExtension());
officeDocConverter.convert(tempFile, resultFile);
fout.close();
officeManager.stop();

请任何人告诉我为什么 buildOfficeManager() 在这里给出错误以及解决此问题的解决方案是什么。会更加明显。

4

2 回答 2

2

根据https://search.maven.org/search?q=fc:com.sun.star.connection.NoConnectException您需要向Maven 的 pom.xml添加org.libreoffice:libreoffice(或旧的)依赖项。org.libreoffice:ridl

我在https://search.maven.org/search?q=jodconverter没有看到 net.sf.jodconverter 。您可以尝试使用它的更新版本 - 可能是此处列出的任何版本:https ://search.maven.org/search?q=g:org.jodconverter

于 2021-01-26T07:09:13.460 回答
0

我已经解决了这个问题,上面的代码可以很好地使用 jodconverter API 将 excel 文件转换为 pdf 文件。

就我而言,excel 文件和 pdf 文件都具有相同的名称,这导致问题在 pdf 下载链接上返回相同的 excel 文件。更改pdf名称后,它解决了我的问题。

于 2021-02-04T11:29:22.753 回答