Вопрос или проблема
Компания в настоящее время генерирует файлы rpt, используя SAP Crystal Reports. Это необходимо изменить, чтобы использовать что-то другое для открытия динамического pdf по URL на основе параметров. Какие приложения доступны для генерации pdf с использованием Java и других инструментов отчетности из базы данных SQL Server?
Я пытался открыть файл RPT, но без лицензии не смог открыть. Также я не могу найти достаточно информации о используемых библиотеках, поэтому ищу возможность смены инструмента отчетности.
Ответ или решение
Для генерации динамических PDF-документов из значений в базе данных SQL (например, SQL Server) существуют множество инструментов и библиотек, которые можно использовать в Java. Ниже приведен перечень наиболее популярных решений, а также краткое руководство по их использованию.
1. Apache PDFBox
Apache PDFBox – это библиотека Java для работы с PDF-документами. Она позволяет создавать, манипулировать и извлекать содержимое из PDF-файлов.
Преимущества:
- Бесплатная и с открытым исходным кодом.
- Поддержка создания и изменения существующих PDF-файлов.
Как использовать:
-
Добавьте зависимость в ваш проект (например, с использованием Maven):
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.x.x</version> </dependency>
-
Подключитесь к базе данных и извлеките данные.
- Используйте PDFBox для создания PDF:
PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(document, page); contentStream.beginText(); contentStream.showText("Hello, PDF World!"); contentStream.endText(); contentStream.close(); document.save("output.pdf"); document.close();
2. JasperReports
JasperReports – это мощная библиотека для отчетов, которая позволяет создавать отчеты в формате PDF (и не только) из различных источников данных.
Преимущества:
- Широкие возможности для оформления отчетов.
- Поддержка различных форматов, в том числе PDF, HTML, Excel и т.д.
- Поддержка собственных SQL-запросов.
Как использовать:
-
Добавьте зависимость в ваш проект:
<dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.x.x</version> </dependency>
-
Создайте файл отчета (например,
report.jrxml
) с использованием JasperSoft Studio или другого визуального редактора. - Скомпилируйте и запустите отчет:
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml"); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, yourDataSource); JasperExportManager.exportReportToPdfFile(jasperPrint, "output.pdf");
3. iText
iText – это мощная библиотека для создания и обработки PDF-документов.
Преимущества:
- Поддержка сложных операций с PDF, таких как цифровая подпись, шифрование и т.д.
- Бесплатно с открытым исходным кодом для некоммерческого использования.
Как использовать:
-
Добавьте зависимость iText в ваш проект:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itext7-core</artifactId> <version>7.x.x</version> </dependency>
- Используйте iText для создания PDF:
PdfWriter writer = new PdfWriter("output.pdf"); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); document.add(new Paragraph("Hello, iText PDF World!")); document.close();
Заключение
Выбор инструмента зависит от ваших требования к отчетности и уровня сложности документов, которые вы хотите создавать. Apache PDFBox хорош для простых задач, JasperReports подходит для более сложных отчетов, а iText предоставляет множество возможностей для работы с PDF-документами. Вы можете начать с одной из этих библиотек и адаптировать код под свои нужды.