使用documents4j将Excel转换为PDF问题

时间:2015-12-16 14:39:18

标签: java excel pdf documents4j

我想使用documents4j将Excel文件转换为PDF,但有两个问题:

  1. 我必须在转换时打开Excel文件。当我将Word转换为PDF时,我不需要打开doc / docx文件。
  2. PDF不包含Excel中包含的图表图片。
  3. 我该如何解决这个问题?以下是重现问题的代码:

    private void convertExcelToPDF1() throws Exception {
    
        InputStream excelFileIS = new BufferedInputStream(new FileInputStream("C:\\test_convert\\test.xlsx"));
        File target = new File("C:\\test_convert\\sim_status_excel.pdf");
    
        IConverter converter = RemoteConverter.builder()
                           .baseFolder(new File("D:\\temp"))
                           .workerPool(20, 25, 2, TimeUnit.SECONDS)
                           .requestTimeout(10, TimeUnit.SECONDS)
                           .baseUri("http://localhost:9998")
                           .build();
    
        Future<Boolean> conversion = converter.convert(excelFileIS).as(DocumentType.XLSX)
                                        .to(target).as(DocumentType.PDF)
                                        .prioritizeWith(1000)
                                        .schedule();
    }
    

1 个答案:

答案 0 :(得分:0)

MS Excel不一定用于程序化转换。因此,可能会出现奇怪的问题。首先:您是否尝试通过直接使用MS Excel将文件转换为PDF?如果问题也出现在那里,则documents4j无能为力。

除此之外,可能还有成功导出所需的报表选项集。您可以查看文档4j运行的VBS脚本以触发Excel转换:https://github.com/documents4j/documents4j/tree/master/documents4j-transformer-msoffice/documents4j-transformer-msoffice-excel/src/main/resources

您可以在本地保存这些文件并运行它们。首先,从Windows中的命令行运行excel_start.vbs。然后运行excel_convert.vbs input.xls output.pdf 999,触发给定文件的to-PDF转换。您可以通过运行excel_stop.vbs进行清理。完成后。

您感兴趣的两个参数是:

excelApplication.Workbooks.Open(inputFile, , True, , , , , , , , , , , , 2)

excelDocument.ExportAsFixedFormat xlTypePDF, outputFile

您可以调整以使转换运行。我只测试了标准的Excel文件,它在我的单元测试中运行良好。如果您找到适合您的解决方案,我很乐意合并您的更改。方法(ExportAsFixedFormatOpen)记录在MSDN上。