1. 概述编辑
导出打印在使用过程中,会有很多因素影响其最终的效果。通过对这些因素进行说明,来帮助用户更好的使用导出打印功能,主要影响的因素包括 JDK、注册功能、字体、权限、浏览器等。
2. JDK编辑
2.1 须知
(1)FineReport 10/11 设计器支持 JDK 版本:JDK 1.8 且小版本需在 JDK8u102 以上。
(2)FineReport11 有内置JDK 11 的设计器版本,可直接使用,详情请参见:内置JDK11的设计器
jdk1.8.0_262,jdk-8u231,jdk1.8.0_192 三个版本不建议使用导出功能将普通报表导出为 PDF 或图片。
2.2 案例
2.2.1 导出图表空白
问题描述:
1)导出图表空白,且模板有报错信息:"C library and JDK version do not meet the requirements, Please upgrade GBLIC to 2.17 And GLIBCXX to 3.4.19 or JDK to 1.8"
2)定时调度时,导出图表空白,系统消息提示运行失败,日志中报错:"C library and JDK version do not meet the requirements, Please upgrade GBLIC to 2.17 And GLIBCXX to 3.4.19 or JDK to 1.8"
原因分析:
导出的模板中存在图表,由于工程缺少j2v8相关的环境,用nashorn性能比较慢。需要升级GCC
解决方案:
升级GCC编译环境,详情请参见:图表导出升级说明
2.2.2 图片预览正常,导出底色变红
问题描述:
图片预览正常,导出底色变红,大部分图片导出都异常
原因分析:
jdk里imageio.read特定图片的bug
解决方案:
用自定义函数和png格式图片规避
2.2.3 导出PDF未换行或者文字重叠
问题描述:
导出PDF后,原本需要换行的地方没有换行,内容溢出到右边。字没有分开,挤在一起
原因分析:
JDK bug
解决方案:
更换JDK
3. 字体编辑
3.1 字体使用逻辑
预览、导出、打印报表时,报表最终呈现的字体效果和设计器、服务器、浏览器所在的本地系统紧密相关。
预览、导出、打印报表时,字体主要来源于以下三个字体库:
系统字体:设计器、服务器、浏览器所在设备的系统字体。Windows系统所在位置:C:/Windows/Fonts;Linux系统所在位置:/usr/share/fonts
服务器依赖的 JRE 下的字体:%Tomcat%jre/lib/fonts
安装「性能优化插件」后对应的字体文件:%FR_HOME%/webroot/WEB-INF/fonts
不同场景,使用的字体库不同。如下表所示:
使用方式 | 字体来源 |
---|---|
设计器设计时选择的字体 | 设计器所在电脑的系统字体+设计器工程依赖的 JRE 下的字体+性能优化插件字体(若安装了插件) |
Web 端预览时使用的字体 | Web 浏览器所在电脑的系统字体 |
导出时使用的字体 | 服务器的系统字体+服务器依赖的 JRE 下的字体+性能优化插件字体(若安装了插件) |
打印时使用的字体 | 零客户端打印时和导出相同,本地软件打印时使用本地系统字体和打印软件 JRE 下的字体 |
3.2 字体缺失时的现象
1)导出图表时,图例、分类名包含中文+英文的字符串时,比如“一二三abc”,导出会发生上下错位;文字空白,只有图表
2)pdf 导出时,文字挤压重叠/模糊/乱码/变成另外一种字体
3)打印结果有偏移/针式打印断断续续/条形码打印时错开
4)前台明确提示:不支持这个字体
3.3 字体不支持时的现象
1)上标显示异常,因为宋体没有上下标设置,大部分字体也只支持数字1,2,3
4. 临时文件夹编辑
4.1 逻辑说明
excel导出需要用到临时文件夹,而导出PDF不需要4.2 排查思路
1)windows:检查Tomcat根目录下是否有temp文件夹。
如果有,备份后清空 temp 文件夹下的内容或者更改临时文件目录(参考 Java IO 的2.3部分),重启tomat。
如果无,在 tomcat 根目录下新建 temp 文件夹,重启 Tomcat。
2)Linux:
缺少临时目录文件: 查看临时目录路径,检查这个目录下面有没有 poifiles 文件夹,当这个文件夹缺失的时候,会导致Excel导出0KB, 需要重启 web 服务器,会重新自动生成poifiles文件夹。
权限问题:非 root 用户启动 tomcat 可能无法创建临时目录和文件 /tmp/poifiles,需要修改文件或目录所属的用户或用户组。
3)缓存路径修改:FineDB 数据库的 FINE_CONF_ENTITY 表中,修改CacheConfig.cacheDirectory
4.3 案例
4.3.1 文件夹权限/不存在
1)temp文件满了或无temp文件夹,导出execl提示:java.io.expection:no such file or directory,导出的 excel 是 0kb
2)导出报错:/root/.FineReport100/cache/webroot/excel-temp/TEMP_ XXXXXXX(Perminssion denied)
3)模板分页导出或者分页分 sheet 导出都报错, 原样导出能成功 但是文件是 0kb
4)输出PDF/WORD等格式正常,导出EXCEL没有内容
4.3.2 文件夹空间
报错:because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache
5. 浏览器编辑
5.1 逻辑说明
1)不支持特定浏览器与低版本
MAC浏览器safari会出现导出乱码的问题
ie8版本、低版本谷歌浏览器
2)特殊设置:
浏览器设置》管理加载项》工具栏和扩展 Adobe Reader开启
谷歌浏览器启用了新的安全策略,不再允许非 HTTPS(F12前端有明显报错)
特定软件下载PDF或excel,如迅雷下载插件,会导致导出0KB
5.2 案例
1)mac12.1 本地设计器导出excel,里面的数据没乱码,但是文件名乱码
2)360浏览器,极速模式异常,兼容模式正常
3)本地的打印方法无法打印,但是零客户端是可以的,原因是远程服务器调用本地打印软件,跨域限制