转换pdf异常The document appears to be corrupted and cannot be loaded解决

在系统中将Word文档转换为PDF时遇到异常,错误信息显示为XMLStreamException,原因是文档内容中的不合法字符'5'(code53)出现在'<'之后。源头在于Freemarker生成的文档模板存在解析错误,特别是某段备注内容包含不合法的小于号。为了解决这个问题,只需在从数据库获取数据后,对文本进行处理,将'<'替换为'<','>'替换为'>'。修复后的代码成功转换了文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统中word转pdf文档的时候出现异常提示,查看后是某条数据个例情况,查看异常信息提示

Caused by: java.lang.IllegalStateException: XMLStreamException: Unexpected character '5' (code 53) in content after '<' (malformed start element?).
 at [row,col {unknown-source}]: [6,28]
	at asposewobfuscated.zz6J.zzZ(Unknown Source)
	at asposewobfuscated.zz6J.read(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzKT.zzZ(Unknown Source)
	at asposewobfuscated.zzO.zzp(Unknown Source)
	at asposewobfuscated.zzLX.zzZ(Unknown Source)
	at asposewobfuscated.zzLX.zzr(Unknown Source)
	at asposewobfuscated.zzLX.zzs(Unknown Source)
	at asposewobfuscated.zzLX.<init>(Unknown Source)
	at asposewobfuscated.zzWH.zzVc(Unknown Source)
	at com.aspose.words.zz1R.zzZNC(Unknown Source)
	at com.aspose.words.zz1R.zzZNG(Unknown Source)
	at com.aspose.words.zz1R.zzZNH(Unknown Source)
	at com.aspose.words.zz1R.zzZU(Unknown Source)
	at com.aspose.words.Document.zzY(Unknown Source)
	... 65 more
Caused by: asposewobfuscated.zz3A: Unexpected character '5' (code 53) in content after '<' (malformed start element?).
 at [row,col {unknown-source}]: [6,28]
	at asposewobfuscated.zz26.zzr(Unknown Source)
	at asposewobfuscated.zz2G.zzYSv(Unknown Source)
	at asposewobfuscated.zz2G.next(Unknown Source)
	at asposewobfuscated.zz6J.read(Unknown Source)
	... 85 more

先打开源文档查看后发现freemarker生成的文档就出现了问题,再打开生成word文档的代码查看后逐一排查是一个小于号造成的,某段备注内容出现了

 这个会导致模板解析错误,解决办法也很简单,在数据库取值之后处理一下这段文本即可

str = str.replaceAll("<","&lt;");
str = str.replaceAll(">","&gt;");

改完之后再次运行代码转换完成!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beyond

打赏个666吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值