实现 Spring Boot + wkhtmltopdf 的步骤
1. 下载并安装 wkhtmltopdf
首先,我们需要下载并安装 wkhtmltopdf 工具,它可以将 HTML 转换成 PDF 文件。你可以在官方网站 [ 上找到适用于你操作系统的安装文件,并按照安装指南完成安装。
2. 创建 Spring Boot 项目
接下来,我们需要创建一个 Spring Boot 项目。你可以使用 IDE(如 IntelliJ IDEA 或 Eclipse)来创建一个新的 Spring Boot 项目,或者使用以下 Maven 命令创建一个简单的 Spring Boot 项目:
<groupId>com.example</groupId>
<artifactId>spring-boot-wkhtmltopdf-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-wkhtmltopdf-demo</name>
<description>Demo project for Spring Boot and wkhtmltopdf</description>
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.4.2</spring-boot.version>
<wkhtmltopdf.version>0.12.5</wkhtmltopdf.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3. 引入 wkhtmltopdf 依赖
在项目的 pom.xml 文件中,我们需要引入 wkhtmltopdf 的依赖。在 <dependencies>
标签中加入以下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-process</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
4. 创建 HTML 模板文件
在 src/main/resources/templates
目录下创建一个名为 template.html
的 HTML 模板文件,用于生成 PDF。你可以在该文件中编写你想要转换为 PDF 的 HTML 内容。
5. 创建 Controller
在项目中创建一个名为 PdfController
的类,并添加以下代码:
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@Controller
public class PdfController {
@GetMapping("/pdf")
public ResponseEntity<InputStreamResource> generatePdf() throws IOException {
// 调用 wkhtmltopdf 命令将 HTML 转换成 PDF
ProcessBuilder processBuilder = new ProcessBuilder("wkhtmltopdf", "http://localhost:8080/template.html", "-");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
// 从 Process 的输出流中获取 PDF 内容
InputStreamResource inputStreamResource = new InputStreamResource(process.getInputStream());
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDispositionFormData("attachment", "output.pdf");
// 返回 ResponseEntity 包含 PDF 文件流和响应头
return ResponseEntity.ok()
.headers(headers)
.body(inputStreamResource);
}
}
6. 运行项目并测试
现在,我们可以运行 Spring Boot 项目,并访问 /pdf
路径来生成 PDF 文件。使用以下命令启动项目:
mvn spring-boot:run
然后,打开浏览器并访问 http://localhost:8080/pdf,将会生成名为 output.pdf
的 PDF 文件。
至此,我们完成了 Spring Boot 与 wkhtmltopdf 的集成过程。
总结
通过以上步骤,我们成功地将 Spring Boot 和 wkhtmltopdf 工具集成在一起,实现了将 HTML 转换成 PDF 的功能。你可以按照上述步骤进行操作,并根据自己的需求进行定制和扩展。祝你顺利!