在本教程中,我们将展示如何使用 iText 和 Spring Boot 创建 PDF 报告。 数据是从 H2 内存数据库中的表加载的。
iText 是一个开放源代码库,用于在 Java 中创建和处理 PDF 文件。
Spring 是用于开发 Java 企业应用的 Java 应用框架。 它还有助于集成各种企业组件。 Spring Boot 使创建具有 Spring 动力的生产级应用和服务变得很容易,而对安装的要求却最低。
H2 是完全用 Java 实现的开源关系数据库管理系统。 它可以嵌入 Java 应用中或以客户端-服务器模式运行。 它占地面积小,易于部署和安装。 它包含一个基于浏览器的控制台应用,用于查看和编辑数据库表。
JdbcTemplate 是一个 Spring 库,可以帮助程序员创建与关系数据库和 JDBC 一起使用的应用。 它会处理许多繁琐且容易出错的底层细节,例如处理事务,清理资源以及正确处理异常。 JdbcTemplate 在 Spring 的spring-jdbc
模块中提供。
应用
以下 Spring Boot 应用从数据库表中加载数据,并使用 iText 库从中生成 PDF 报告。 该应用与嵌入式 Tomcat 服务器一起运行。
这是项目结构。
pom.xml
Maven pom.xml
文件包含 iText 库,H2 驱动程序和 Spring 框架的依赖项。
Car.java
这是Car
bean 类。 它包含商品 ID,名称和价格。
application.yml
application.yml
是主要的 Spring Boot 配置文件。 它包含数据源和 MVC 设置。 我们选择了 H2 作为数据库系统。 数据库在内存中运行。 我们启用基于浏览器的控制台应用。
数据库名称为testdb
,并在内存中创建。 (当 Spring Boot 在 Maven POM 文件中发现 H2 时,它会自动创建一个内存数据库,但我们将展示如何显式地执行该操作。)
该平台值用在 SQL 初始化脚本中:schema-${platform}.sql
和data-${platform}.sql
。
H2 Web 控制台应用已启用; 在localhost:8080/console/
路径中可用。
schema-h2.sql
该 SQL 脚本创建Cars
表。
data-h2.sql
该脚本用数据填充表。 这两个脚本都位于类路径的根目录中。
AppConfig.java
AppConfig
是 Java 配置类。 它从application.yml
配置文件创建数据源 bean。
AbstractPdfView.java
Spring 的AbstractPdfView
基于旧的iText
库。 因此,我们需要创建自己的抽象类,该抽象类基本上是具有更新的导入的副本。
MyPdfView.java
MyPdfView
继承自定制的AbstractPdfView
。 在buildPdfDocument()
方法中,我们生成 PDF 文件。
首先,我们从模型中获取数据。
我们将数据放在表格中; 为此,我们有PdfPTable
类。 该表包含三列:Id,名称和价格。
对于表头,我们使用粗体的 Helvetica 字体。
数据放置在表单元格内,由PdfPCell
表示。 使用setHorizontalAlignment()
方法将文本水平对齐。
最后,表格被插入到 PDF 文档中。
MyController.java
在MyController
中,我们有一个映射。
我们将CarService
对象注入到属性中。 服务对象用于从数据库检索数据。
在report()
方法中,我们使用findAll()
方法找到所有汽车。 我们将自定义MyPdfView
返回给客户端。
ICarService.java
ICarService
提供了一种从数据源获取所有汽车的合同方法。
CarService.java
CarService
包含findAll()
方法的实现。 我们借助JdbcTemplate
从Cars
表中检索所有汽车。
注入JdbcTemplate
。
这是要执行的 SQL。 我们从Cars
表中选择所有汽车。
BeanPropertyRowMapper
将一行转换为指定映射目标类的新实例。
index.html
index.html
文件包含一个生成 PDF 报告的链接。 静态文件从预定义目录提供; 其中之一是static
,位于src/main/resources
中。
Application.java
Application
设置 Spring Boot 应用。
我们启动 Spring Boot 应用。
导航至http://localhost:8080/
以测试应用。 H2 控制台应用可从http://localhost:8080/console/
获得。 控制台应用的 JDBC URL 为jdbc:h2:mem:testdb
。 密码为空。
在本教程中,我们从 H2 数据库的数据库表中使用 iText 创建了 PDF 报告。 该应用使用 Spring Boot 框架,并在 Web 环境中运行。