Spring Boot 实现 HTML 转 PDF
一、接口概述在实际业务开发中我们经常遇到将 HTML 内容转换为 PDF 文件的需求比如生成合同、报告、证书等文档。本文介绍一个基于 Spring Boot 实现的 HTML 转 PDF 接口支持动态渲HTML 并生成 PDF 文件供用户下载。二、接口定义RequestMapping(value /rest/api/convertHtmlToPdf, method RequestMethod.GET) public void convertHtmlToPdfTwo(HttpServletResponse httpResponse) { // ... }三、核心实现代码RequestMapping(value /rest/api/convertHtmlToPdf, method RequestMethod.GET) public void convertHtmlToPdf(HttpServletResponse httpResponse) { try { // 1. 渲染 HTML 模板 String htmlContent service.buildConvertHtml(); // 2. 校验 HTML 内容 if (htmlContent null || htmlContent.trim().isEmpty()) { httpResponse.setStatus(HttpServletResponse.SC_NOT_FOUND); httpResponse.setContentType(application/json;charsetUTF-8); httpResponse.getWriter().write({\code\:404,\msg\:\未找到HTML内容\}); return; } // 3. 生成 PDF HtmlConvertToPdfUtils.generatePdf(htmlContent, httpResponse); } catch (Exception e) { try { httpResponse.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); httpResponse.setContentType(application/json;charsetUTF-8); httpResponse.getWriter().write({\code\:500,\msg\:\PDF生成失败: e.getMessage() \}); } catch (Exception ignored) { httpResponse.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } } }四、响应说明4.1 成功响应┌──────────────┬──────────────────┐│ 项目 │ 说明 │├──────────────┼──────────────────┤│ HTTP 状态码 │ 200 OK │├──────────────┼──────────────────┤│ Content-Type │ application/pdf │├──────────────┼──────────────────┤│ 响应体 │ PDF 文件二进制流 │└──────────────┴──────────────────┘浏览器会根据设置自动下载或在浏览器中直接预览 PDF 文件。五、关键技术点5.1 直接输出流到 Response该接口没有返回值void而是直接操作 HttpServletResponse 输出 PDF 流HtmlConvertToPdfUtils.generatePdf(htmlContent, httpResponse);这种方式的优点- 减少内存占用不需要在内存中先构建完整的 PDF 字节数组- 响应更快边生成边输出用户体验更好- 适合大文件避免了 OutOfMemoryError 风险支持自定义文件名response.setHeader(Content-Disposition, attachment; filename URLEncoder.encode(fileName, UTF-8) .pdf);六、总结1. 动态渲染根据业务数据和模板动态生成 HTML2. 流式输出直接输出到 Response内存友好3. 完善的异常处理多层保护确保用户收到明确的错误信息4. RESTful 风格GET 请求参数清晰便于浏览器直接访问这种实现方式在企业级应用中非常实用特别适合合同、报告、证书等文档的在线生成与下载场景。相关技术栈Spring Boot、iText / Flying Saucer、Thymeleaf / FreeMarker

相关新闻

亚马逊关键词不会挖?从词库搭建到广告投放,一篇讲透

亚马逊关键词不会挖?从词库搭建到广告投放,一篇讲透

做亚马逊运营,很多卖家一开始都会把精力放在选品、图片、价格和广告预算上。但真正跑起来之后才发现:Listing 写得好不好,广告投得准不准,流量能不能持续进来,背后都离不开一个基础动作——关键词研究。关键词找得不准…

2026/6/27 5:34:31阅读更多 →
AI率太高怎么降?10款降AI率软件实测(含免费降ai率工具)真实避坑指南

AI率太高怎么降?10款降AI率软件实测(含免费降ai率工具)真实避坑指南

最近这半年,我敢说,被“论文降aigc”折磨的同学,绝对比被查重折磨的还多。 说实话,现在这情况太难了。 你是不是也一样?有时候,你就是用AI帮你润色个摘要和前言,没写几个字,都可能被…

2026/6/27 5:34:31阅读更多 →
AI 智能体的身份与权限挑战Uber和Auth0如何重新思考访问控制

AI 智能体的身份与权限挑战Uber和Auth0如何重新思考访问控制

最近,Uber 描述了一种用于在多智能体 AI 工作流中传播智能体身份的内部架构。该设计的目标是,在智能体委派任务并调用内部工具时,能够保留原始的用户上下文、智能体的来源信息以及限定范围的访问权限。Uber 的案例研究印证了 Auth0 的观点&am…

2026/6/27 5:34:31阅读更多 →
【市场】物理AI国内厂家排行:中国企业排名

【市场】物理AI国内厂家排行:中国企业排名

物理AI硬技术国内厂家排行分析 1. 51WORLD 51WORLD在物理AI硬技术领域的市场地位相对突出,主要得益于其空间智能平台(51Aes)和高置信度物理仿真技术(51Sim)。公司以将物理仿真与人工智能相结合为核心,力图推…

2026/6/27 6:54:39阅读更多 →
中东华商ERP选型指南:阿拉伯语进销存系统哪家强?适配沙特、阿联酋批发与连锁零售最优解

中东华商ERP选型指南:阿拉伯语进销存系统哪家强?适配沙特、阿联酋批发与连锁零售最优解

摘要:随着中阿经贸合作持续深耕,沙特、阿联酋、卡塔尔、埃及等中东阿拉伯语国家,已成为国内五金建材、家居数码、食品快消、跨境工贸企业出海的核心增量市场。大量华商在中东布局跨境采购、多仓分销、线下批发、连锁零售等多元业态&#xff0…

2026/6/27 6:54:39阅读更多 →
CY5-PEG-NH2核心质控参数:分子量、荧光量子产率检测汇总

CY5-PEG-NH2核心质控参数:分子量、荧光量子产率检测汇总

一、材料基础说明CY5-PEG-NH₂属于氨基功能化近红外花菁 PEG 衍生物,分子一端连接近红外红色荧光染料 CY5,另一端带有活性氨基,可与多肽、多糖、磷脂、纳米颗粒发生共价偶联修饰。PEG 链段长度会直接影响产物分子量分布与荧光染料聚集淬灭程度…

2026/6/27 6:54:39阅读更多 →
2026年张家口当地知名Geo企业哪家专业?一文为你揭晓答案

2026年张家口当地知名Geo企业哪家专业?一文为你揭晓答案

在2026年这个人工智能全面普及的时代,AI.GEO(AI生成式引擎优化)作为全新迭代的全域智能获客新赛道,正成为企业数字化营销的核心布局。张家口的企业也在积极寻求专业的Geo企业合作,以解决传统获客难题,抢占人…

2026/6/27 6:54:39阅读更多 →
2026年珠海拱北夜生活指南: locals最爱的酒馆揭秘

2026年珠海拱北夜生活指南: locals最爱的酒馆揭秘

珠海拱北作为珠海经济和社会发展的核心区域之一,在夜生活方面同样焕发着独特的魅力。2026年的珠海拱北不仅是商务和游客交流融合的舞台,更是一个让本地人放松身心的港湾。今天就要带你走进珠海拱北的夜晚,揭秘一个当地人最爱的特色酒馆——猫…

2026/6/27 6:54:38阅读更多 →
git克隆出现这个报错

git克隆出现这个报错

fatal: unable to access https://githubxxxxSSL peer certificate or SSH remote key was not OK在cmd中输入 git config --global http .sslVerify "false" 完美解决。

2026/6/27 6:49:38阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →