java生成pdf字体的坑
做过java生成pdf的应该都知道有很多坑,特别是字体。
这里就记录一下字体的问题。
-
系统必须安装字体,项目的resources目录放置了要用到的中文字体,宋体和黑体。并在代码中进行了引用。但是实际发现系统仍然需要安装字体。
-
安装字体的坑
这里主要记录一下安装字体的坑
网上找到的教程
cd /usr/share/fonts/
mkdir chinese
cd chinese
cp /root/simhei.ttf simhei.ttf # 字体上传在root用户目录下
cp /root/simsun.ttf simsun.ttf # 字体上传在root用户目录下
mkfontscale
mkfontdir
fc-cache -fv
这里确实导入了字体,但是使用发现,生成的pdf会有文字不换行,以及转成tiff图片后,汉字均不显示的问题。
因为开发环境是windows,测试环境是linux(开发经常遇到环境的问题)。然后真的是windows下没有问题,所以还是觉得代码没有问题,问题还是出在字体上。
继续寻找linux字体的教程,发现有一个教程多一个步骤
chmod -R 755 /usr/share/fonts/chinese
赶紧在测试服务器上看一下文件权限
[root@shtplybremake01 share]# cd fonts
[root@shtplybremake01 fonts]# ll
total 16
drwxr-x--- 2 root root 91 Nov 17 15:39 chinese
drwxr-xr-x. 2 root root 4096 Jul 20 15:51 google-droid
drwxr-xr-x. 2 root root 8192 Jul 20 15:53 urw-base35
果然chinese和其他2个目录不一样。接着按照教程修改权限。重新生成并验证。
[root@shtplybremake01 fonts]# chmod -R 755 chinese/
[root@shtplybremake01 fonts]# ll
total 16
drwxr-xr-x 2 root root 91 Nov 17 15:39 chinese
drwxr-xr-x. 2 root root 4096 Jul 20 15:51 google-droid
drwxr-xr-x. 2 root root 8192 Jul 20 15:53 urw-base35