用pdfbox进行pdf转图片中文乱码,缺失字体 |
您所在的位置:网站首页 › 夸克pdf转换找不到图片 › 用pdfbox进行pdf转图片中文乱码,缺失字体 |
PDDocument pdDocument = PDDocument.load(inputStreamByUrl);
PDFRenderer pdfRenderer = new PDFRenderer(pdDocument);
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(i, 144F, ImageType.RGB);
使用pdfbox读取pdf转图片的时候,如果缺失字体,中文会乱码。 运行在Windows的提示 2020-03-20 19:14:53.598 [Thread-13] WARN o.a.pdfbox.pdmodel.font.FileSystemFontProvider - New fonts found, font cache will be re-built 2020-03-20 19:14:53.598 [Thread-13] WARN o.a.pdfbox.pdmodel.font.FileSystemFontProvider - Building on-disk font cache, this may take a while 2020-03-20 19:14:53.704 [Thread-13] WARN o.a.pdfbox.pdmodel.font.FileSystemFontProvider - Finished building on-disk font cache, found 447 fonts 2020-03-20 19:14:53.711 [Thread-13] WARN org.apache.pdfbox.pdmodel.font.PDCIDFontType0 - Using fallback DengXian for CID-keyed font AdobeKaitiStd-Regular 2020-03-20 19:14:53.829 [Thread-13] WARN org.apache.pdfbox.pdmodel.font.PDCIDFontType0 - Using fallback DengXian for CID-keyed font AdobeKaitiStd-Regular 2020-03-20 19:14:53.860 [Thread-13] WARN org.apache.pdfbox.pdmodel.font.PDCIDFontType0 - Using fallback MalgunGothic-Semilight for CID-keyed font STSong-Light 2020-03-20 19:14:53.916 [Thread-13] WARN org.apache.pdfbox.rendering.CIDType0Glyph2D - No glyph for 21271 (CID 041a) in font STSong-Light 2020-03-20 19:14:53.918 [Thread-13] WARN org.apache.pdfbox.rendering.CIDType0Glyph2D - No glyph for 20140 (CID 08d8) in font STSong-Light 2020-03-20 19:14:53.660 [Thread-13] ERROR o.a.pdfbox.pdmodel.font.FileSystemFontProvider - Could not load font file: C:\WINDOWS\FONTS\mstmc.ttf java.io.EOFException: null at org.apache.fontbox.ttf.TTFDataStream.readUnsignedInt(TTFDataStream.java:152) at org.apache.fontbox.ttf.TTFParser.readTableDirectory(TTFParser.java:309) at org.apache.fontbox.ttf.TTFParser.parse(TTFParser.java:139) at org.apache.fontbox.ttf.TTFParser.parse(TTFParser.java:87)运行在Linux的提示 2020-03-25 14:17:28.686 WARN 1 --- [ Thread-3] o.a.pdfbox.pdmodel.font.PDCIDFontType0 : Using fallback LiberationSans for CID-keyed font AdobeKaitiStd-Regular 2020-03-25 14:17:28.766 WARN 1 --- [ Thread-3] o.a.pdfbox.rendering.CIDType0Glyph2D : No glyph for 1050 (CID 041a) in font AdobeKaitiStd-Regular 2020-03-25 14:17:28.767 WARN 1 --- [ Thread-3] o.a.pdfbox.rendering.CIDType0Glyph2D : No glyph for 2264 (CID 08d8) in font AdobeKaitiStd-RegularUsing fallback LiberationSans for CID-keyed font AdobeKaitiStd-Regular Using fallback LiberationSans for CID-keyed font STSong-Light 这个提示是说当前环境缺少CID-keyed font AdobeKaitiStd-Regular字体和CID-keyed font STSong-Light字体,pdfbox使用使用LiberationSans字体进行替换。 这两个字体可以用AdobeKaitiStd-Regular.otf和SimSun.ttf两个字体文件。 找字体文件可以在自己的电脑上找,可以在这个C:\Windows\Fonts找到,或者用everything工具查找,没有的话可以在网上找 有些字体实在找不到,也可以修改pdfbox的源码,修改字体的替换规则, 替换的规则在org.apache.pdfbox.pdmodel.font.FontMapperImpl可以查看到 可以看到这个集合里,如果key的字体缺失,就会依次找value指定的字体进行替换。 pdf文件用到了哪些字体,可以用福昕之类的pdf编辑工具查看 可以看到项目提示信息指的字体,所使用的实际字体是什么名字,查找这个字体就可以。 至于报错的那个缺少字体mstmc.ttf,这个字体找了很久没找到,不过也无所谓了,反正项目最后是布在Linux上的。 找到字体之后将字体安装在服务器环境就可以。 要进到这个路径 /usr/share/fonts/ 然后新建一个文件夹,把字体文件放到新建的文件夹里 然后执行下面三条命令 mkfontscale mkfontdir fc-cache -fv 执行完之后字体就安装成功了,可以使用fc-list命令查看已安装的字体。 如果是使用docker的话,记得要把刚刚新建的字体文件夹挂载到docker容器里,不然不会生效。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |