Создание динамического PDF на основе значений из базы данных SQL. В настоящее время используем отчеты SAP, но ищем замену [закрыто]

Вопрос или проблема

Компания в настоящее время генерирует файлы 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-файлов.

Как использовать:

  1. Добавьте зависимость в ваш проект (например, с использованием Maven):

    <dependency>
       <groupId>org.apache.pdfbox</groupId>
       <artifactId>pdfbox</artifactId>
       <version>2.x.x</version>
    </dependency>
  2. Подключитесь к базе данных и извлеките данные.

  3. Используйте 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-запросов.

Как использовать:

  1. Добавьте зависимость в ваш проект:

    <dependency>
       <groupId>net.sf.jasperreports</groupId>
       <artifactId>jasperreports</artifactId>
       <version>6.x.x</version>
    </dependency>
  2. Создайте файл отчета (например, report.jrxml) с использованием JasperSoft Studio или другого визуального редактора.

  3. Скомпилируйте и запустите отчет:
    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, таких как цифровая подпись, шифрование и т.д.
  • Бесплатно с открытым исходным кодом для некоммерческого использования.

Как использовать:

  1. Добавьте зависимость iText в ваш проект:

    <dependency>
       <groupId>com.itextpdf</groupId>
       <artifactId>itext7-core</artifactId>
       <version>7.x.x</version>
    </dependency>
  2. Используйте 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-документами. Вы можете начать с одной из этих библиотек и адаптировать код под свои нужды.

Оцените материал
Добавить комментарий

Капча загружается...