返回

#SpringBoot导出PDF最简单的方式#title# 无论是打印文件还是在线保存,都需要经常对一些数据进行动态导出。在这篇文章中,我们将展示一种简单的方式来使用SpringBoot导出PDF文件。 SpringBoot提供了一个内置的模板引擎,可以帮助我们轻松地将数据渲染到PDF模板中。我们只需要创建模板并将其填充数据,然后就可以导出PDF文件。 首先,我们需要在项目中添加依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 然后,我们需要创建一个模板文件。模板文件可以使用HTML或XML编写,但我们建议使用HTML。在模板文件中,我们可以使用Thymeleaf表达式来访问数据。 ```html <!DOCTYPE html> <html> <head> PDF导出

后端

轻松导出 PDF:使用 SpringBoot 的终极指南

前言

在当今数据驱动的世界中,经常需要将数据动态导出为 PDF 文件,无论是打印存档还是在线保存。SpringBoot 提供了一种简单而高效的方式来实现这一点,使您可以毫不费力地生成 PDF 报告。本文将逐步指导您使用 SpringBoot 导出 PDF 文件,让您立即上手。

添加依赖

首先,我们需要在我们的 SpringBoot 项目中添加必要的依赖关系:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

这将为我们提供使用 Thymeleaf 模板引擎所需的库,它将用于将我们的数据渲染到 PDF 模板中。

创建 PDF 模板

接下来,我们需要创建一个 HTML 或 XML 模板文件,其中包含我们将要填充数据的占位符。对于本例,我们将使用 HTML 模板:

<!DOCTYPE html>
<html>
<head>
  
</head>
<body>
  <h1>PDF 导出</h1>
  <ul>
    <li>姓名:${name}</li>
    <li>年龄:${age}</li>
    <li>性别:${gender}</li>
  </ul>
</body>
</html>

Thymeleaf 表达式 ${} 将用于访问我们在数据模型中定义的数据。

创建控制器

现在,我们需要一个控制器来处理 PDF 导出请求:

@Controller
public class PdfController {

  @GetMapping("/exportPdf")
  public void exportPdf(HttpServletResponse response) throws IOException {
    // 创建 PDF 模板引擎
    PdfTemplateEngine templateEngine = new PdfTemplateEngine();
    // 获取我们的模板文件
    Template template = templateEngine.getTemplate("pdf/export.html");
    // 创建数据模型
    Map<String, Object> model = new HashMap<>();
    model.put("name", "John Doe");
    model.put("age", 30);
    model.put("gender", "Male");
    // 将数据渲染到模板中
    String html = templateEngine.process(template, model);
    // 将 HTML 转换为 PDF
    byte[] pdf = HtmlConverter.getInstance().convertToPdf(html);
    // 设置响应头
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=export.pdf");
    // 将 PDF 写入响应体
    response.getOutputStream().write(pdf);
  }
}

在控制器中,我们创建了一个 PDF 模板引擎,获取了我们的模板文件,并用数据模型中的数据填充了模板。然后,我们将填充后的 HTML 转换为 PDF 并将其写入响应体中。

配置 Thymeleaf

为了完成设置,我们需要配置 Thymeleaf 模板引擎:

@Configuration
public class ThymeleafConfig {

  @Bean
  public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    return templateEngine;
  }

  @Bean
  public TemplateResolver templateResolver() {
    TemplateResolver templateResolver = new ClasspathTemplateResolver();
    templateResolver.setPrefix("templates/");
    templateResolver.setSuffix(".html");
    return templateResolver;
  }
}

这将告诉 SpringBoot 在哪里找到我们的模板文件。

导出 PDF

现在,我们可以通过访问 /exportPdf 路径来导出 PDF:

curl -X GET http://localhost:8080/exportPdf

这将在您的浏览器中下载名为 export.pdf 的 PDF 文件。

常见问题解答

1. 如何使用不同的数据模型?

您可以使用任何 Java 对象作为数据模型,只要它具有可供 Thymeleaf 表达式访问的 getter 方法。

2. 如何设置自定义页面大小和方向?

您可以通过提供自定义 PageSizePageOrientation 对象来设置这些属性。

3. 如何在 PDF 中添加图像?

您可以使用 ImageTag 组件在 PDF 中添加图像,它将从指定 URL 或文件路径获取图像。

4. 如何使用 CSS 样式化我的 PDF?

您可以在模板中添加 <style> 标记并将 CSS 规则应用于 HTML 元素。

5. 如何将 PDF 另存为不同的文件名?

您可以通过修改 Content-Disposition 响应头中的 filename 参数来指定不同的文件名。

结论

使用 SpringBoot 导出 PDF 非常简单,只需几行代码即可完成。这种方法非常适合需要动态生成 PDF 报告或文档的情况。通过遵循本文中的步骤,您可以轻松地将数据导出为专业且易于共享的 PDF 文件。