当前位置: 首页 > article >正文

使用Thymeleaf-没有js的html模板导出为pdf

html模板

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
    <title>PDF Template</title>
</head>
<body>
<h1>User Information</h1>
<p>Name: <span th:text="${user.name}"></span></p>
[[${user.getName()}]]
[[${user.name}]]111
<p>Email: <span th:text="${user.email}"></span></p>
</body>
</html>

依赖

        <!-- thymeleaf for html to pdf -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>${org.thymeleaf.version}</version>
            <scope>compile</scope>
        </dependency>

PDFGenerator

import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.FileOutputStream;
import java.io.OutputStream;

@Component
public class PdfGenerator {

    public PdfGenerator() {

    }

    public void generatePdfFromTemplate(User user, String templatePath, String outputPath) {
        try (OutputStream outputStream = new FileOutputStream(outputPath)) {
            Context context = new Context();
            context.setVariable("user", user);
            TemplateEngine templateEngine = new TemplateEngine();
            // 创建并配置模板解析器
            ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
            templateResolver.setPrefix("templates/");
            templateResolver.setSuffix(".html");
            templateResolver.setTemplateMode("HTML");
                // 将模板解析器设置到TemplateEngine中
            templateEngine.setTemplateResolver(templateResolver);
            String htmlContent = templateEngine.process(templatePath, context);

            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocumentFromString(htmlContent);
            renderer.layout();
            renderer.createPDF(outputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用

        String templatePath = "template.html";
        String outputPath = "C:\\Temp\\aaa\\2024\\3\\12\\output.pdf";

        PdfGenerator pdfGenerator = new PdfGenerator();
        pdfGenerator.generatePdfFromTemplate(User.builder().name("ss").email("22").build(), templatePath, outputPath);
 

 导出成功

出现的问题:如果HTML文件里面有js就会失败


http://www.kler.cn/a/271265.html

相关文章:

  • MongoDB——linux中yum命令安装及配置
  • 代码分支管理
  • 实现兼容性良好的前端页面开发
  • Android中的设计模式---单例模式
  • 什么是缓存雪崩、击穿、穿透?
  • 【Hadoop大数据技术】——MapReduce分布式计算框架(学习笔记)
  • 综合知识篇05-设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)
  • 如何在CasaOS系统玩客云中安装内网穿透工具实现远程访问内网主机下载资源
  • 安装 docker 和 jenkins
  • Spark-Scala语言实战(1)
  • Flutter中GetX的用法(路由管理)
  • 【Poi-tl Documentation】自定义行删除标签
  • OutputStreamWriter类
  • Linux-centos如何搭建yum源仓库
  • 最细节操作 Linux LVM 逻辑卷管理
  • 算法---滑动窗口练习-8(最小覆盖子串)
  • Explain 关键字
  • 【计算机网络】https的工作原理以及和http的区别
  • spacy进行简单的自然语言处理的学习
  • 【LeetCode热题100】23. 合并 K 个升序链表(链表)