Конвертировать Excel в PDF проблему с документами4j
Я хочу использовать http://documents4j.com/ для преобразования файлов Excel в PDF, но есть две проблемы:
- Я должен открыть файл Excel при конвертации. Когда я конвертировал Word в PDF, мне не нужно было открывать файл doc / docx.
- 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.