使用documents4j将Excel转换为PDF问题

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

  1. 转换时我必须打开一个Excel文件。 当我将Word转换为PDF时,我不需要打开doc / docx文件。
  2. PDF不包含Excel中包含的图表图像。

我该如何解决这个问题? 这是重现问题的代码:

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(); } 

MS Excel不一定打算使用编程转换。 因此,可能会出现奇怪的问题。 首先:你是否尝试直接使用MS Excel将文件转换为PDF? 如果这个问题也出现在文件中,文件4j是无能为力的。

除此之外,可能会设置报告选项,以使出口成功。 您可以查看document4j运行的VBS脚本以触发Excel转换: https : //github.com/documents4j/documents4j/tree/master/documents4j-transformer-msoffice/documents4j-transformer-msoffice-excel/src/main /资源

您可以在本地保存这些文件并运行它们。 首先,从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 

您可以调整以使您的转换运行。 我只testing了标准的Excel文件,在我的unit testing中工作正常。 如果您find适合您的解决scheme,我很乐意合并您的更改。 方法( ExportAsFixedFormatOpen )logging在MSDN上。

Interesting Posts