最近作一个项目使用 PDFBOX将PDF转换为图片,跑了一段时间后Tomcat自动关闭,查看日志后发现 hs_err_pid5444.log,发现错误提示:java
Stack: [0x0000000002460000,0x0000000002560000], sp=0x000000000255e880, free space=1018k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [fontmanager.dll+0x12ec8] [error occurred during error reporting (printing native stack), id 0xc0000005] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j sun.font.FileFont.getGlyphImage(JI)J+0 j sun.font.FileFontStrike.getGlyphImagePtrs([I[JI)V+86 j sun.font.GlyphList.mapChars(Lsun/java2d/loops/FontInfo;I)Z+37竟然是 JDK 内部的错误,fontmanager.dll 字体错误? 分析 PDF文件发现PDF的字体 系统都是没有的:
分析后发现若是PDF里面有系统没有的字体, JDK报错退出。太夸张了,这也行!解决的方法2种:oop
1.把PDFBOX升级到最新1.6.0版本,1.6.0版本增长的判断PDF字体在系统是否存在,若是不存在就默认转换为系统的默认字体,避免的调用JDK获取系统不存在字体时报错的问题。字体
2.把安装不存在的字体。spa