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

异常信息:

    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跟进来发现

报错的点在这里:

解决:ITextRenderer 将html文件转为PDF时 报空指针异常NullPointerException_第1张图片

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

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

解决:ITextRenderer 将html文件转为PDF时 报空指针异常NullPointerException_第2张图片

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

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

解决:ITextRenderer 将html文件转为PDF时 报空指针异常NullPointerException_第3张图片

 第二次进来,这个网址访问异常:

两次加载的url:

https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css

https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/../fonts/glyphicons-halflings-regular.eot

 

第一次走的时候明显是加载bootstrap样式css文件的时候出了问题,同一个文件加载了两次:

原因:

解决:ITextRenderer 将html文件转为PDF时 报空指针异常NullPointerException_第4张图片

在定义外部资源与文档关系时,被当作另一个资源,导致两次解析,

解决方案 :

去掉外部资源关系(删掉红框里面的路径);

参考:link 标签中“rel=stylesheet”的作用

你可能感兴趣的:(Java)