解决:ITextRenderer 将html文件转为PDF时 报空指针异常NullPointerException

在使用ITextRenderer将HTML文件转换为PDF时遇到NullPointerException。异常源于resolveAndOpenStream方法中,变量is未初始化。该方法被调用两次,首次加载bootstrap.min.css成功,第二次加载字体文件时失败。问题出在外部资源被错误解析,导致同一文件加载两次。解决方案是删除定义外部资源的关系,即移除link标签中的rel=stylesheet引用。

异常信息:

    java.lang.NullPointerException: null
	at org.xhtmlrenderer.swing.NaiveUserAgent.getBinaryResource(NaiveUserAgent.java:228)
	at org.xhtmlrenderer.pdf.ITextFontResolver.importFontFaces(ITextFontResolver.java:97)
	at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:178)
	at org.xhtmlrenderer.pdf.ITextRenderer.setDocument(ITextRenderer.java:142)
	at org.xhtmlrenderer.pdf.ITextRenderer.setDocumentFromString(ITextRenderer.java:159)

我们debug跟进来发现

报错的点在这里:

这里的变量is没有取到值初始化时时null,导致出现空指针异常:

跟一下resolveAndOpenStream这个方法,发现:

重要的点是这个方法走了两次:

第一次网址是可以访问的,没有抛异常:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值