最近作一個項目使用 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