使用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.hqwc.cn/news/537183.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能|机器学习——BIRCH聚类算法(层次聚类)

这里再来看看另外一种常见的聚类算法BIRCH。BIRCH算法比较适合于数据量大&#xff0c;类别数K也比较多的情况。它运行速度很快&#xff0c;只需要单遍扫描数据集就能进行聚类。 1.什么是流形学习 BIRCH的全称是利用层次方法的平衡迭代规约和聚类&#xff08;Balanced Iterative…

人工智能迷惑行为大赏——需求与科技的较量

目录 前言 一、 机器行为学 二、人工智能迷惑行为的现象 三、产生迷惑行为的技术原因 四、社会影响分析 五、解决措施 总结 前言 随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型&#xff0c;如文心一言、通义千问等。各大应用也开始内置…

「媒体宣传」上海有哪些可以邀约的新闻媒体资源汇总

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 上海作为中国最大的城市之一&#xff0c;拥有丰富的新闻媒体资源。以下是一些可以邀约的新闻媒体资源汇总&#xff1a; 报纸媒体&#xff1a; 《新民晚报》&#xff1a;上海最具影响力的…

C语言strcmp函数讲解

strcmp函数介绍 在cplusplus官网上是这样介绍strcmp函数的 这里的意思是假如我们输入两个字符串一个是abcdef另一个也是abcdef他们两个字符的每个元素的ascii码值进行比较如果两个元素的ascii码值都相等就移动到下一个元素a与a进行比较b与b进行比较直到遇到\0为止&#xff0c…

【QT+QGIS跨平台编译】之三:【OpenSSL+Qt跨平台编译】(多平台下进行编译)

文章目录 一、OpenSSL介绍二、OpenSSL下载三、Windows下编译四、Linux下编译五、MacOS下编译一、OpenSSL介绍 OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 …

如何解决Ubuntu 服务器Docker push报错“http: server gave HTTP response to HTTPS client”?

一、问题 二、解决方法 1、编辑/etc/docker/daemon.json 文件&#xff0c; 192.168.1.1xx 换成你自己 registry 服务的地址 sudo nano /etc/docker/daemon.json { "insecure-registries":["192.168.1.1xx:5000"] } 按 Ctrl X 键&#xff1a;保存更改&…

Linux系统运维命令:查看系统的平均负载(查看CPU的负载)

目 录 一、要求 二、快速了解系统资源利用情况的Linux命令 &#xff08;一&#xff09;cat /proc/loadavg命令 1、命令介绍 2、命令输出 3、命令解释 &#xff08;1&#xff09;前三个数字&#xff1a; &#xff08;2&#xff09;第四个值&#xff1a; &…

Android 15 首个开发者预览版到来

作者 / 工程副总裁 Dave Burke Android 15 的首个开发者预览版现已发布&#xff0c;以便各位开发者能与我们通力协作&#xff0c;打造更优秀的 Android 平台。 在 Android 15 中&#xff0c;我们继续致力于打造一个既能提升工作效率&#xff0c;又能提供全新功能的平台。这些新…

linux命令深入研究——cat

cat命令&#xff0c;“猫”&#xff0c;可以理解为瞄一眼文件内容&#xff0c;其中可以用重定向符号对文件进行一些修改&#xff0c;如增加&#xff0c;删除文件内容&#xff0c;其命令参数如-n&#xff0c;-s&#xff0c;-b可以输出带有行号的行 如果想要快速删除文件内容&…

leecode算法三

回溯 划分为k个相等的子集 相似度为 K 的字符串 动态规划 第k个数 使序列递增的最小交换次数 贪心算法 最多盛水容器 雇佣k个工人的最低成本

idea Springboot 组卷管理系统LayUI框架开发mysql数据库web结构java编程计算机网页

一、源码特点 springboot 组卷管理系统是一套完善的完整信息系统&#xff0c;结合mvc框架和LayUI框架完成本系统springboot spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整…

前端入职配置新电脑!!!

前端岗位入职第一天到底应该做些什么呢&#xff1f;又该怎样高效的认识、融入团队&#xff1f;并快速进入工作状态呢&#xff1f;这篇文章就来分享一下&#xff0c;希望对即将走向或初入前端职场的你&#xff0c;能够有所帮助。内含大量链接&#xff0c;欢迎点赞收藏&#xff0…