润乾报表在 linux 下导出文件问题

 

1. 导出 pdf 为空 / 导出 pdf 大小为 0 字节


解决方案:

删除 demo\WEB-INF\lib 下的 pdfbox_073.jar 包

2.html 导出 pdf 字体模糊问题


html 内容导出后,在 pdf 中显示是图片,文字有时候会有显示不清晰的问题出现

解决方案:

导出 pdf 有两个包,itext2_rq.jar、pdfbox_073.jar,pdfbox_073.jar 是免费的,导出可能会出现不好看,出现这样的情况 jdk 应该先应用 pdfbox_073 了,把这个 jar 从项目中删除后重启服务测试导出正常了

PS:itext2_rq.jar、pdfbox_073.jar 这两个 jar 在本地的润乾 demo 包中均存在,两个都包含 pdf 的导出功能,itext2 功能强大,但涉及到版权;pdfbox 是免费的,但导出的不好看。两个包装了谁就用谁,两个都装了,就 jdk 先找到谁用谁。一般情况下当存在 itext2 的时候 pdfbox 可能就没用了。
 给用户的安装包,应该一般是没有 pdfbox 的;但就算有两个包,也不会出错。

【建议:】

在实际项目中,根据需求、限定,选取其中一个 jar 包即可,另外一个 jar 包可删除,不建议两个都放。

3. 样式丢失问题


解决方案:

itext 源代码是按照如下路径去找字体文件的;如果字体文件虽然在操作系统认识的路径但不属于下列路径,则 PDF 仍然找不到; 
 把字体放到下列路径之一,即可以导出文本 PDF 
 c:/windows/fonts,c:/winnt/fonts,d:/windows/fonts,d:/winnt/fonts, 
 /usr/X/lib/X11/fonts/TrueType, 
 /usr/openwin/lib/X11/fonts/TrueType, 
 /usr/share/fonts/default/TrueType, 
 /usr/X11R6/lib/X11/fonts/ttf, 
 /Library/Fonts, 
 /System/Library/Fonts 
需要将所需的字体安装在上述的目录中,才能在 linux 下导出 pdf 和 windows 下一样。

PS:java 列出的字体共有三个组成部分: 

1,操作系统上安装的字体;

2,java 的逻辑字体;

3,jdk 下自带的字体; 
第 2,3 种是属于 java 自己的一套机制,导出时 pdf 是不认识的,导出 pdf 只能识别第一种字体,但是 word 可以识别其他的字体,导致了只有 pdf 没法粗体的现象。

附录:


 

Linux 下安装字体步骤:

1、将 WINDOWS 系统下的相应字体考到 linux 的 /usr/share/fonts/default/TrueType 目录下,windows 的字体目录为:C:\Windows\Fonts

2、考完后,直接在 /usr/share/fonts/default/TrueType 下打开终端,执行如下

mkfontscale

  mkfontdir

fc-cache——> 执行 fc-cache 搜索新字体。

3、重启 web 服务,例如 tomcat 就是重启 tomcat 测试