反馈已提交

网络繁忙

打印常见问题

  • 文档创建者:Wendy123456
  • 历史版本:17
  • 最近更新:Carly 于 2023-11-01
  • 1. 概述

    本文介绍 打印 时遇到的问题、解决方案以及常见的排查思路。

    2. 常见问题排查思路

    常见打印问题以及排查思路如下图所示:

    2.1 打印失败的排查思路

    打印失败的排查步骤如下:

    1)确认打印软件启动是否成功:首先观察电脑本地程序打印是否已经启动,如果无说明没有启动成功

    2)确认具体的现象

    • 偶发出现还是必定出现,如果是首次启动失败,需要点击多次才能正常打印,一般是启动超时问题。

    • 若是必定复现,首先保证检查打印软件是否存在多个版本互相冲突,并且保证打印软件不要安装在设计器目录下

    3)检查端口占用情况:本地打印软件默认接口的 9092,若被占用,可释放相应的接口或者修改本地打印软件的端口号,另外本地打印软件的配置文件也要修改成一样的端口,修改完保存重启。

    4)检查配置:若是https环境想要调用本地软件,首先得配置好本地打印的https,可参考文档 本地打印https配置说明,其次检查配置文件的httpsMode 选项,设为 true,则为 https 模式;设为 false,则为 http 模式。

    5)检查是否为浏览器限制问题或杀毒软件的问题。

    6)检查插件和 JAR 包是否匹配。

    7)查看 bin 目录下的 debug.log 日志查看报错,进行具体分析。

    2.2 打印慢的排查思路

    1)排查模板问题:需要确定是个别模板打印慢还是所有模板打印都慢。

    • 若个别模板打印慢:可以检查模板的具体设置。比如:是否有过多的图片插入,条形码转换,单元格形态设置多,数据量大,本身导出pdf文件就很大,可以尝试优化具体的模板,或者加大内存设置。

    • 若是所有模板都慢:可能是工程问题,可尝试升级JAR包。

    2)检查是否是浏览器问题:单个浏览器调用打印慢,可升级浏览器或者重置浏览器的设置,IE浏览器可尝试关闭兼容性视图。

    3)排查是否为网络因素导致的打印慢。

    4)排查是否为杀毒软件的问题。

    2.3 打印偏移的排查思路

    根据产生偏移的因素,可简要分为外部和内部两个因素,通常内部因素对单个模板较常见,外部因素通常对工程所有模板起效,如下图所示:

    3. 内置打印功能常见问题

    3.1 打印软件不生效

    问题描述

    升级后,打印软件不生效。

    原因分析

    一般是由于打印软件版本过低,使用 打印 文档中 3.3.1 节提供的 FinePrint 版本即可。

    3.2 本地打印软件启动失败

    问题描述

    1)选择「本地软件打印」时,提示本地打印软件启动失败,如下图所示:

    2.png

    2)本地打印,提示本地打印软件启动失败,但是fineprint进程在的,右下角也是有图标的

    解决方案

    1)点击提示中的「下载安装」,下载并启动本地打印软件。并注意以下几点:

    • 本地打印不要安装在设计器的安装目录下。

    • 若已安装好本地打印软件,提示启动失败,请检查 9092 端口是否被占用。

    • 若机器性能较差,会导致首次启动消耗时间较长。出现以上报错时请耐心等待,或稍后再次尝试打印。

    2)检查工程是 http 还是 https ,其次检查配置文件的httpsMode 选项,设为 true,则为 https 模式;设为 false,则为 http 模式。根据工程的配置修改即可,可参考文档 本地打印https配置说明

    3.3 IE浏览器打印没反应或者打印不跳转窗口

    问题描述

    1)IE浏览器下点击打印按钮没有弹窗显示。

    2)IE浏览器点击打印卡在“正在加载PDF”然后无响应。

    解决方案

    1)安装或者重装Adobe Reader。

    在线安装Adobe Reader:https://get.adobe.com/cn/reader/

    离线安装Adobe Reader:https://get.adobe.com/cn/reader/enterprise/

    2)取消兼容视图设置。

    3.4 自定义纸张打印不全

    问题描述

    当「模板>页面设置」中纸张大小为「自定义」时,本地软件打印的内容可能会显示不全。

    1646989398662201.png

    原因分析

    因为 Java 默认的打印,会从打印机纸张里寻找相近的纸张进行匹配。如果没有在打印软件中添加自定义纸张,可能找出来的是别的纸张。从而导致打印内容被截断。

    解决方案

    需要在打印软件中添加自定义纸张大小。具体设置请参见:Java 读取打印机自定义纸张

    3.5 打印字体重叠

    问题描述

    用户是「零客户端打印」,打印后,字体重叠。

    解决方案

    服务器缺失字体导致。详情请参见:字体缺失检测 或 服务器安装字体

    3.6 Flash 打印不可用

    问题描述

    FineReport 独创了 Flash 打印技术,可以精确分页打印,连打都可以做到,非常的方便,完美解决了困扰报表行业十几年的基于浏览器的打印问题。由于某些原因 Flash 打印没法使用,下面详细介绍无法使用的原因。

    注1:10.0设计器和部署包使用的都是 openjdk,而使用 openjdk 无法启动 flash 打印,但使用 Oracle/sun jdk 可以。

    注2:flash 打印目前是已经被淘汰了的技术,很多浏览器都将不再支持 flash 打印,建议客户使用零客户端或本地打印。

    解决方案

    1)没有安装 Flash Player 插件:客户端点击Flash打印会触发 Flash Player 插件,通过打印插件把要打印的数据画出来,再传到打印机把数据就打印出来,因此浏览器必须安装插件才可以进行打印。

    2)当前版本没有此功能:由于 Flash 打印是我们特有的高级功能,所以注册的低版本可能没有 Flash 打印功能,点击 Flash 打印弹出如下对话框时,说明您购买的版本中没有此功能,如果您需要使用这个功能的话,您可以联系我们的商务。

    3)使用 Chrome 浏览器自带的打印插件:

    一般来说,浏览器打印功能都是使用 NPAPI 方式,但是在 Chrome20 之后,Chrome 浏览器的打印方式默认是采用 PPAPI 的,将默认打印方式停用即可。在 URL 地址栏里面输入 chrome://plugins/,进入 Chrome 览器插件设置页面,将 Adobe Flash Player 插件里的 Shockwave Flash 23.0 r0 System 停用即可,如下图:

    停用之后效果:

    注1:如果打开插件设置界面,没有显示上面的界面,而是显示收缩页面,则点击详细信息展开

    注2:如果插件设置界面上没有 NPAPI 插件,则说明浏览器中的 Flash 版本中不包含 NPAPI 插件,需要去 Adobe Flash Player 官网下载 Flash,安装后重启 Chrome 即可。

    3.7 如何控制打印时有无水印

    问题描述

    打印到纸上时需要显示水印,或者客户打印报表的时候,希望根据自己情况选择打印模板是否带有水印

    解决方案

    请参考:如何控制打印时有无水印

    3.8 文本的对齐设置,预览打印时效果不一致

    问题描述

    设计器中已调整成对齐样式,但是网页预览和打印预览时,会出现较大的不一致现象,如下图:

    原因分析

    目前只支持全角空格的前后端一致效果,半角空格不支持,但是输入法默认的就是半角。

    解决方案

    将所有半角空格替换为全角空格。

    3.9 base64图片打印显示的很小

    问题描述

    base64 展示图片并打印,预览正常,打印的时候,图片缩的很小。

    解决方案

    html 里的单位改成 pt 即可。

    3.10 火狐浏览器打印方向异常

    问题描述

    使用火狐浏览器打印,打印机设置为纵向,但是点击打印时,方向却是横向的。

    解决方案

    火狐浏览器建议使用 113 版本,或更换谷歌浏览器进行打印。

    4. 调用打印方法常见问题

    4.1 invalid sheet index

    问题描述

    JS 调用打印,指定不弹出 sheet ,打印报错:invalid sheet index

    代码如下:

    /*单个模板打印*/
    var printurl="http://localhost:8075/webroot/decision/view/report";
    var reportlets ="[{reportlet: 'GettingStarted.cpt', 地区: '华北'}]";
    var config = {
    printUrl : printurl,
    isPopUp : true, 
    // 是否弹出设置窗口,true为弹出,false为不弹出
    data :{ 
    reportlets: reportlets // 需要打印的模板列表
    },
    printType : 1, // 打印类型,0为零客户端打印,1为本地打印
    // 以下为零客户端打印的参数,仅当 printType 为 0 时生效
    ieQuietPrint : true,// IE静默打印设置 true为静默,false为不静默
    // 以下为本地打印的参数,仅当 printType 为 1 时生效
    //printerName : '', // 打印机名
    isSheetSelectPopUp:false,
    pageType: 1, // 打印页码类型:0:所有页,1:当前页,2:指定页
    pageIndex: 2, // 页码范围。当 pageType 为 2 时有效
    copy: 2, // 打印份数
    };
    FR.doURLPrint(config);

    解决方案

    config 代码中需要指定 sheetIndex 。sheetIndex 介绍请参见:JS 调用 FR 打印方法

    注:isSheetSelectPopUp 参数介绍请参见 JS 调用 FR 打印方法

    4.2 报错 404

    问题描述

    Tomcat 上调用 FR 工程的本地打印,如果 Tomcat 上无 FR 工程,下面这个请求报错 404,如下图所示:

    注:该问题在 Finereport 10.0 和 Finereport 9.0 中都会出现。

    原因分析

    执行 FineReport.js 的时候,会尝试从本服务器上加载资源,而调用者的服务器上,没有报表工程,加载不到资源,所以报错。 

    解决方案

    在跨域调用新打印时,需要额外引入两个 js,分别是 socket.io.js 和 jquery.watermark.js (引入位置在 FineReport.js 后面),示例代码如下所示:

    注:Tomcat 下不能有报表工程。

    1)10.0 示例

    <script type="text/javascript" 
    src="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script>
    <script type="text/javascript" 
    src="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js"></script>

    2)9.0 示例

    <script type="text/javascript" 
    src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script> 
    <script type="text/javascript" 
    src="http://localhost:8075/WebReport/ReportServer?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js"></script>

    4.3 一直显示正在加载控件

    问题描述

    在页面中调用 finereport.js 下的 FR.doURLPDFPrint(url) 时,会一直显示"正在打印 正在加载控件...",如下图所示:

    您引用的 finereport.js 和页面不在同一个应用下,如您的 Web 工程名为 FR,而您调用 finereport.js 的语句是:

    <script type="text/javascript" src="http://localhost:8075/webroot/decision/view/report?op=emb&resource=finereport.js"></script>

    这就涉及到跨域访问js,从而出现如上情况。

    解决方案

    1)若您应用为 Java 应用,且页面没有通过 iframe 嵌入报表,而是希望不预览模板直接打印或者批量打印报表,则可以采用如下方案:

    将报表应用 嵌入式部署 到 Java 应用中,修改调用 finereport.js 语句,使用相对路径引用 JS,如修改后的调用 finereport.js 的语句为:

    <script type="text/javascript" src="/工程名/decision/view/report?op=emb&resource=finereport.js"></script>

    2)若您页面通过 iframe 嵌入了报表,希望打印该报表,则可以采用如下方案(Java/非 Java 应用都可以,可以为独立的报表应用):

    不调用 finereport.js 下的FR.doURLPDFPrint(url)进行打印,而是获取 iframe 中的报表直接打印,即使用 iframe 解决跨域问题。

    假设 iframe 的 id 是 reportFrame,则打印方法如下:

    function doprint(){
       document.getElementById('reportFrame').contentWindow.contentPane.pdfPrint();
    }

    4.4 缺少相关文件

    问题描述

    使用 JS 调用 FineReport 打印方法时,有如下报错:

    Access to XMLHttpRequest at 'file:///F:/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/socket.io.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https

    原因分析

    经控制台查看发现是缺少相关文件:

    解决方案

    缺少文件,补齐即可,在html中做如下引用:

    <script type="text/javascript" src="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/socket.io.js"></script> <script type="text/javascript" src="<a href="http://localhost:8075/webroot/decision/view/report?op=resource&resource=/com/fr/web/core/js/jquery.watermark.js">

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭

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