反馈已提交

网络繁忙

影响导出打印效果的环境因素

  • 文档创建者:LarryYI
  • 历史版本:20
  • 最近更新:Carly 于 2023-11-29
  • 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 或图片。

    openjdk:1.8.0_332-b09 存在导出pdf乱码,excel正常的问题

    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

    • 安装「itext7导出及国际化换行插件」后对应的字体文件:%FR_HOME%/webroot/WEB-INF/fonts

    不同场景,使用的字体库不同。如下表所示:

    使用方式
    字体来源
    设计器设计时选择的字体 设计器所在电脑的系统字体+设计器工程依赖的 JRE 下的字体+itext7导出及国际化换行插件字体(若安装了插件)
    Web 端预览时使用的字体Web 浏览器所在电脑的系统字体
    导出时使用的字体服务器的系统字体+服务器依赖的 JRE 下的字体+itext7导出及国际化换行插件字体(若安装了插件)
    打印时使用的字体零客户端打印时和导出相同,本地软件打印时使用本地系统字体和打印软件 JRE 下的字体

    详情请参见:字体缺失检测

    3.2 字体缺失时的现象

    1)导出图表时,图例、分类名包含中文+英文的字符串时,比如“一二三abc”,导出会发生上下错位;文字空白,只有图表

    2)pdf 导出时,文字挤压重叠/模糊/乱码/变成另外一种字体

    3)打印结果有偏移/针式打印断断续续/条形码打印时错开

    4)前台明确提示:不支持这个字体

    3.3 字体不支持时的现象

    1)上标显示异常,因为宋体没有上下标设置,大部分字体也只支持数字1,2,3

    2)带√ 的框型字符无法正常导出,因为特殊符号并不是所有字体都能绘制,excel可以自动选择可以绘制的字体,PDF不会自动选择
    3)本地设计器导出的pdf里面的字体不一样,因为字体本身权限有问题,字体嵌入性受限

    4. 临时文件夹

    4.1 逻辑说明

    excel导出需要用到临时文件夹,而导出PDF不需要

    4.2 排查思路

    1)windows:检查Tomcat根目录下是否有temp文件夹。

    • 如果有,备份后清空 temp 文件夹下的内容或者更改临时文件目录(参考 Tomcat中指定日志/临时文件路径),重启tomcat。

    • 如果无,在 tomcat 根目录下新建 temp 文件夹,重启 Tomcat。

    2)Linux:

    • 缺少临时目录文件: 使用jinfo <pid> | grep "java.io.tmpdir"查看临时目录路径,检查这个目录下面有没有 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 逻辑说明

    出于安全性的考量,平台在「安全防护」界面内提供了一些安全功能开关,包括:Cookie 增强、HSTS 设置、文件上传校验、脚本调用公式限制、Security Headers、请求响应优化、Token认证增强。需要关注以下两个设置:

    【点击劫持攻击防护】:开启后,默认页面只能在同一个域中加载

    内容嗅探攻击防护】:开启后,禁用浏览器类型猜测来保证安全性

    123.png

    详情请参见:安全防护

    5.2 案例

    5.2.1 跨域调用失败

    问题描述:

    • 自定义打印按钮js,调的打印接口,直接预览打印正常,嵌入页面后打印,f12报错跨域

    • 平台调用URL导出未生成导出文件,直接在模板预览界面url加&format=excel导出正常,F12有报错500

    • https环境下安装FR打印机软件,并且修改了配置文件 'httpsMode' : true ,但是启动仍报错失败

    原因分析:跨域使用

    解决方案:决策平台安全关闭关闭【点击劫持攻击防护】和【内容嗅探攻击防护

    补充说明:谷歌浏览器HTTPS_SameSite_跨域,详情请参见:谷歌浏览器单点登录失败

    5.2.2 打印机启动失败

    问题描述:打印前端控制台报错:This request has been blocked; the content must be served over HTTPS

    原因分析:本地打印没有配https

    解决方案:修改了配置文件 'httpsMode' : true,详情请参见:本地打印https配置说明

    6. 浏览器

    6.1 逻辑说明

    1)不支持特定浏览器与低版本

    • MAC浏览器safari会出现导出乱码的问题

    • ie8版本、低版本谷歌浏览器

    2)特殊设置:

    • 浏览器设置》管理加载项》工具栏和扩展 Adobe Reader开启

    • 谷歌浏览器启用了新的安全策略,不再允许非 HTTPS(F12前端有明显报错)

    • 特定软件下载PDF或excel,如迅雷下载插件,会导致导出0KB

    6.2 案例

    1)mac12.1 本地设计器导出excel,里面的数据没乱码,但是文件名乱码

    2)360浏览器,极速模式异常,兼容模式正常

    3)本地的打印方法无法打印,但是零客户端是可以的,原因是远程服务器调用本地打印软件,跨域限制

    4)浏览器最小字体设置导致的预览与导出效果不一致,以谷歌为例,按照"设置→外观→自定义字体"的步骤,最小字体设置如下调整

    6.png

    7. Excel/Wps

    7.1 版本因素

    7.1.1 因扩展名无效无法打开文件

    1.png

    原因分析:未安装对应版本的 excel 软件,低版本 excel 无法打开高版本文件

    解决方案:安装导出excel方式选择插件,然后模板 web 属性选择导出成 excel2003 的。

    7.1.2 试图打开文件错误

    2.png

    原因分析:受保护的视图/来自其他电脑,文件被锁定

    解决方案:通过修改受保护的视图/来自其他电脑,勾选解除锁定。

    7.2  常见问题

    7.2.1 报错详情:Report index :1, Layer Report can not export by this way

    原因分析:10.0 行式引擎插件+流式导出 excel 插件,不支持分页分 sheet 导出 excel。

    解决方案:关闭插件后导出。


    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持