ITextRenderer将PDF转换为HTML详细教程

引入依赖

复制代码
   <dependency>
      <groupId>org.xhtmlrenderer</groupId>
      <artifactId>flying-saucer-pdf-itext5</artifactId>
      <version>9.1.18</version>
  </dependency>

问题一:输出中文字体

下载字体simsun.ttc

下载链接:simsun.ttc · xiulian/fonts - Gitee.com

前端通过以下代码引入

css 复制代码
@Font-face{
font-family:"myFont",
src:url("下载的字体的路径")
}

后端通过一下代码引入

java 复制代码
ClassPathResource resource=new ClassPathResource("assets/font/simsun.ttc");
font.addFont(resource.getUrl.toString(),Base.IDENTITY_H,BaseFont.EMBDDED)

问题二:设置页面大小以及页面间距

css 复制代码
@Page{
size:A4;
margin:0
}

问题三:报错<link>没有以</link>结束

解决方案:在html中所有结束符都要加上</..>结束,例如<img></img>、<meta></meta>

问题四:图片和二维码不显示

ip地址加端口号加对应路径,列如本地http://localhost:81/admin/asset/top/png

总代码

前端

前端的html正常写就可以了,需要注意的就是样式里面的@page定义PDF样式的和@font-face引入字体以及每个html标签必须有结束符

后端

java 复制代码
@GetMapping()
public String exportPage(){
Ticket detail=ticketService.detail();
model.addAttribute("map",detail);
return "ticket/index";
}
java 复制代码
public void export(TicketParam param){
//二维吗生成
String code="图片路径";
File file=FileUtil.file(code);
if(!file.exists()){
FileUtil.mkParentDirs(file);
}
}
QRCodeUtil.generate("字符串",100,100,file);
//获取html
//通过okhttp访问上面的url地址获取html页面
相关推荐
吠品7 小时前
LangChain 里 tool_call_id 为空?一次 MCP 工具集成的排查记录
前端
柒和远方8 小时前
Phase 7.4 学习博客:为什么多 API 项目需要 Swagger / OpenAPI
前端·后端·架构
张龙6878 小时前
拼多多开放平台对接踩坑实录:从 CLIENT_ID 配置到 MD5 签名算法的完整填坑指南
前端
GuWenyue8 小时前
提示词彻底过时?一套上下文工程方案,3步让LLM落地生产,代码直接复用
前端·javascript·人工智能
柒和远方8 小时前
Phase 7.3 复盘:后台任务不只是“扔进队列”,还要能被看见
前端·后端·架构
2501_943782358 小时前
【共创季稿事节】 倒计时器:时分秒选择器与定时器的协同工作
前端·华为·harmonyos·鸿蒙·鸿蒙系统
奶油mm8 小时前
公司技术债堆积如山,我一人之力用 Vue3 偷换了整个前端架构
前端·vue.js
用户938515635078 小时前
深入理解 JavaScript 中的 this 与数据存储的奥秘
前端·javascript
JNX_SEMI9 小时前
AT2659 L1频段多模卫星导航低噪声放大器技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
Profile排查笔记11 小时前
指纹浏览器环境异常排查:Fingerprint、Profile、Proxy、Session 和 Task Log 怎么看
前端·人工智能·后端·自动化