springboot 使用itextpdf、thymeleaf,将html转为PDF
在Spring Boot中,你可以使用itextpdf
和thymeleaf
来将HTML转换为PDF。以下是一个简单的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.9</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
- 创建一个方法来渲染HTML并生成PDF:
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.element.IBlockElement;
import com.itextpdf.layout.element.IElement;
import com.itextpdf.layout.property.UnitValue;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
@Service
public class PdfService {
private final TemplateEngine templateEngine;
public PdfService(TemplateEngine templateEngine) {
this.templateEngine = templateEngine;
}
public byte[] createPdfFromHtml(String htmlContent) throws Exception {
// 使用Thymeleaf渲染HTML
Context context = new Context();
String html = templateEngine.process("templateName", context);
// 使用iText7转换HTML到PDF
ByteArrayInputStream htmlInputStream = new ByteArrayInputStream(html.getBytes(StandardCharsets.UTF_8));
ByteArrayOutputStream pdfOutputStream = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(htmlInputStream, pdfOutputStream);
return pdfOutputStream.toByteArray();
}
}
确保你有一个名为templateName.html
的Thymeleaf模板在src/main/resources/templates
目录下。
这个例子中,PdfService
类负责渲染HTML并使用itextpdf
将其转换为PDF。你需要将templateName
替换为你的Thymeleaf模板名称,并且确保你的模板中的HTML结构符合itextpdf
的要求。
评论已关闭