最近在做一个将PDF文件转换成图片文件,然后传给前端展示的功能。刚开始时是用pdfbox,在本地windows环境下可以正常转换,图片没有任何问题。然后上了linux的测试环境,一样没问题。但是上了linux的生产环境之后,传出来的图片里面的中文内容就变成乱码了。
刚开始时以为是pdfBox本身有兼容性问题或者bug,因为在网上也查到资料说pdfBox转换会有乱码。后来就换了icePdf,但是结果一样,本地windows没问题,linux测试环境没问题,但生产linux环境出问题了。经过一番网上查资料折腾无果,最后想到,会不会是字库的问题,因为linux本身其实对中文支持就不是很好。最后,把linux测试环境里面的中文字库都放到了linux生产环境上面,刷新字库缓存之后,问题解决!
后来总结了一下,这个问题搞了这么久,有两个原因,一、对pdf格式文件不够了解,一开始以为它是和图片差不多,只是普通的像素组成,没想到还与字符编码有关系。2、Java的跨平台特性一直都很好,所以没有想到这个小问题会与平台本身的环境有关,花了大量时间在代码的检查上面。
因为在网上看不到有这种问题的解决办法,所以特此写了出来,希望能帮助到更多同行。
PS:如果不知道需要装什么字库文件,可以用pdf阅读器打开pdf文件,然后可以看到这个pdf文件里面用到了什么字体,然后再去一一对应的找出来,然后安装进去就可以了
转载请注明出处:http://www.cnblogs.com/Starshot/p/7481724.html