0

我正在尝试使用以下这些 API 在 wicket 8 应用程序中将 excel 文件转换为 PDF 文件。但是 PDF 文件没有转换为 excel 文件,我在 PDF 下载链接而不是 PDF 文件上得到了相同的 excel 文件,并且 convert() 方法没有异常或错误。

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

或者

<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter</artifactId>
    <version>2.2.1</version>
</dependency>

使用以下代码将 excel 文件转换为 PDF 文件

public File convertToPDFFile(ByteArrayOutputStream fromExcelFile, String sheetName, OOConfig ooConfig, FileFormat fileFormat) throws Exception {
    File tempFile = null;
    File resultPDFFile = null;
    try {
        tempFile = File.createTempFile(sheetName, fileFormat.getFileExtension());
        tempFile.setWritable(true);

        FileOutputStream fout = new FileOutputStream(tempFile);
        fromExcelFile.writeTo(fout);

        ExternalOfficeManagerConfiguration eomcTest = new ExternalOfficeManagerConfiguration();
        eomcTest.setConnectOnStart(true);
        eomcTest.setConnectionProtocol("SOCKET");
        eomcTest.setPortNumber(8100);

        OfficeManager officeManager = eomcTest.buildOfficeManager();
        officeManager.start();
        OfficeDocumentConverter officeDocConverter = new OfficeDocumentConverter(officeManager);
        resultPDFFile = File.createTempFile(sheetName, TypeOfFile.PDF.getFileExtension());
        officeDocConverter.convert(tempFile, resultPDFFile);
        fout.close();
        officeManager.stop();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (tempFile != null) {
            tempFile.delete();
            tempFile = null;
        }
    }
    return resultPDFFile;
}

请任何人告诉我为什么 jodconverter 不将 excel 文件转换为 pdf 文件。

任何建议都将受到高度评价。

4

1 回答 1

0

在本地系统中进行更深入的调试后,上面的代码对我有用。

对于需要安装 OpenOffice3 或版本 4 并且可以运行以下命令以在 Windows 操作系统中将 OpenOffice 作为服务运行。

转到 CMD 并导航到 OpenOffice 程序目录路径:示例:“C:\OpenOffice.org 3\program”和 CMD 中的以下命令将 OpenOffice 作为服务运行,以运行 Jodconverter 代码进行文件转换。

start soffice -headless -accept=socket,host=0,port=8100;urp;

这有助于将 OpenOffice 作为 Windows 操作系统的本地系统中的服务器运行,并且可以更深入地调试此代码以解决任何问题或进行任何更改。

我希望它可以帮助想要在本地系统中使用 OpenOffice 为您的应用程序执行此代码的人。

于 2021-02-09T20:31:53.613 回答