Конвертировать Excel в PDF проблему с документами4j

Я хочу использовать http://documents4j.com/ для преобразования файлов 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();
}

1 ответ

MS Excel не обязательно предназначен для использования программного преобразования. Поэтому могут возникнуть странные проблемы. Прежде всего: вы пытались конвертировать ваш файл в PDF напрямую с помощью MS Excel? Если проблемы возникают и там, то document4j бессилен.

Кроме этого, могут быть заданы параметры отчета, необходимые для успешного экспорта. Вы можете взглянуть на сценарии VBS, которые запускает document4j для запуска преобразования Excel: https://github.com/documents4j/documents4j/tree/master/documents4j-transformer-msoffice/documents4j-transformer-msoffice-excel/src/main/resources

Вы можете сохранить эти файлы локально и запустить их. Во-первых, вы бежите excel_start.vbs из командной строки в Windows. Тогда ты бежишь excel_convert.vbs input.xls output.pdf 999 который запускает преобразование в PDF для данного файла. Вы можете очистить, запустив excel_stop.vbs, после того, как вы сделали.

Два параметра, которые вам интересны:

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

а также

excelDocument.ExportAsFixedFormat xlTypePDF, outputFile

который вы можете настроить, чтобы сделать ваше преобразование запустить. Я тестировал только со стандартными файлами Excel, которые отлично работают в моих модульных тестах. Если вы найдете решение, которое работает для вас, я буду рад объединить ваши изменения. Методы (ExportAsFixedFormat а также Open) задокументированы на MSDN.

Другие вопросы по тегам