异常信息:
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这个方法,发现:
重要的点是这个方法走了两次:
第一次网址是可以访问的,没有抛异常:
第二次进来,这个网址访问异常:
两次加载的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文件的时候出了问题,同一个文件加载了两次:
原因:
在定义外部资源与文档关系时,被当作另一个资源,导致两次解析,
解决方案 :
去掉外部资源关系(删掉红框里面的路径);
参考:link 标签中“rel=stylesheet”的作用