在使用freemarker导出pdf时,有时候导出的内容里面有特殊字符,比如&符号,如果不处理,那么导出时将报错。

导出内容:他&和-#ta

报错信息如下:

java.lang.Exception: org.xhtmlrenderer.util.XRRuntimeException: Can't load the XML resource (using TRaX transformer). org.xml.sax.SAXParseException; lineNumber: 59; columnNumber: 24; 对实体 "和-" 的引用必须以 ';' 分隔符结尾。at com.test.common.util.PDFUtil.createPDFfileByTempName(PDFUtil.java:248)at com.test.controller.PdfController.loan(PdfController.java:280)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.test.common.filter.CommonFilter.doFilter(CommonFilter.java:77)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:96)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:41002)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)

可以用下面的处理方式:

1, 替换内容里面的&符号,或者去掉&等特殊字符

2,使用<![CDATA[   ]]>,比如:

 <td colspan="3"><![CDATA[ ${record.memo!} ]]></td>

如果memo里面有特殊字符,那么用这个CDATA符号后,将不会转义这个特殊字符,而是按照普通的字符展示出来。

freemarker 导出pdf特殊字符处理相关推荐

  1. freemarker导出pdf

    freemarker模板导出doc的之前有写过,这里就不再多说了,不清楚的可以看之前的文章Freemarker 模板导出(带图片). 转换后的文件展示 FreemarkerUtils工具类(这里用的工 ...

  2. Java使用Freemarker通过模板文件导出PDF文件、横向显示

    前言: 尝试了不少通过模板文件导出pdf文件的方法,要么实现起来复杂,要么实现效果不理想,经过反复查找资料和尝试发现此方法是最理想的. 本博客又经大量网友实践及建议,经过几次完善修改,又日趋完善,在此 ...

  3. IReport 导出PDF中的 平方(m²) 与 立方(m³) 特殊字符再Adobe Acrobat DC显示不全问题

    问题: IReport 导出PDF 平方(m²)  与 立方(m³)  特殊字符再Adobe Acrobat DC显示不全,而再WPS.Office.浏览器.等工具打开正常. 相关截图: 在浏览器打开 ...

  4. Java通过freemarker实现导出PDF

    制作模板 引入依赖 引入所需字体文件 工具类的编写 业务实现 一.模板制作 (1)编写html代码 ,需要替换的值与内容预留出来,用${name}代替,需循环处.表格前加上<#list list ...

  5. iText实现HTML页面导出PDF

    iText实现HTML页面导出PDF 引言 实现效果 前期准备 实现功能 1.需要的jar包 2.封装导出类 3.需要的jar包 4.前端调用 5.模板文件 引言 最近项目中,涉及到票据导出功能,ex ...

  6. 【原创】Java开发word模板转html导出pdf

    使用iText5来导出pdf,具体操作步骤如下: 1.首先创建一个doc格式的word文档,转换为html格式 word模板转html链接地址 2.替换要填充的内容,把html文件后缀改为ftl并放在 ...

  7. Docker 快速验证 HTML 导出 PDF 高效方案

    需求分析 项目中用到了 Echarts,想要把图文混排,当然包括 echarts 生成的 Canvas 图也导出 PDF. 设计和实现时,分析了 POI.iText.freemaker.world 的 ...

  8. freemarker转PDF,支持分页,增加页眉页脚

    参考 https://github.com/superad/pdf-kit.git 先看效果(不能上传PDF文档...) POM.XML <?xml version="1.0" ...

  9. Java 根据模板导出PDF

    文章目录 前言 思路一:直接导出pdf 使用itext模板导出pdf 思路二:先导出word再转成pdf 1)导出word 2)word转pdf 最终方案 ~~docx4j~~ spire.doc.f ...

最新文章

  1. 【2021】一位清华大佬的互联网秋招算法岗总结
  2. No entry found for dependency in Cartfile.
  3. 箭头函数可被打印却不能调用_5种应该避免使用箭头函数的情况
  4. 【HDU - 5056】Boring count (尺取法)
  5. Python flask使用实例
  6. 信号量 互斥锁 条件变量的区别
  7. Atitit 架构的原则attilax总结
  8. 【博主推荐】HTML5响应式手机WEB(附源码)
  9. Mybatis——拦截器Interceptor
  10. QT QTableView(基于QStandardItemModel用法)操作详解
  11. office创建数据透视表
  12. python当前时间获取_python 当前时间获取方法
  13. Python数据分析师使用低代码Streamlit实现Web数据可视化方法——入门篇
  14. 大数据可视化之医疗大数据平台
  15. TransCad导入Excel中的OD矩阵和PA数据
  16. “No input file specified “问题的处理
  17. 大数据就是非相关数据的相关性
  18. 计算机中流水线的应用,计算机中的流水线技术
  19. 严格模式、混杂模式与怪异模式
  20. R语言笔记一:R软件的下载、界面简介、帮助文档

热门文章

  1. 省钱利器!基于TensorFlow的端到端验证码识别
  2. sql delete
  3. /LGC图形渲染/图像处理系列之扭曲(distort)
  4. 如何打造“百万美金直播间”?教你几招跨境直播秘诀。
  5. AI 换脸冒充明星直播带货:仅需 3.5 万元,随意“换脸”
  6. 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C.L”之线程池(最全,最深,最喜欢)
  7. #ifndef是什么意思
  8. Python scapy抓取网卡中的数据包
  9. Oracle函数之LISTAGG
  10. 【MATLAB教程案例96】基于GA优化的WSN最大覆盖率和最少节点部署数量matlab仿真