润乾报表在 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 测试