反馈已提交

网络繁忙

JS 调用 FR 打印方法

  • 文档创建者:文档助手1
  • 历史版本:52
  • 最近更新:Alicehyy 于 2024-07-23
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0-

    1.2 功能简介

    在进行报表集成时,常常需要通过 JavaScript 来调用 FR 的打印事件。例如:不查看报表直接打印批量打印 

    在实现具体实例前,您需要了解 JS 调用 FR 打印方法的语法。

    注:打印功能不支持移动端。

    1.3 注意事项

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

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

    3)模板的参数是包含'的,需要传入这个引号才能有正确的数据,可用\\'转义',例如:var a = "\\'234";  reportlets += ",a:'" + a + "'";

    4)若 9.0 设计器升级至 11.0 版本,使用 JS 调用 FR 打印方法需要根据帮助文档重新编写 JS 代码,或去掉原 9.0 代码中的 FR.cjkEncode(),若 10.0 不开启模板认证则无需去掉。

    5)若第三方系统引用打印接口,需要配套引用 finereport.css 和 finereport.js 文件,否则会打印失败。引用方式请参考 FR对象使用说明

    2. 打印接口

    JS 打印接口:FR.doURLPrint(config),使用 get 传参,具体 config 参数如下表所示:

      参数含义  
    printurl需要打印的模板的应用地址和服务,如"http://localhost:8075/webroot/decision/view/report"

    允许为空。如果为空的话,就使用当前的 servlet 地址。如果需要跨域,则此参数不能为空

    isPopUp

    是否弹出设置窗口

    true:弹出

    false:不弹出

    该参数说明如下:

    • 10.0.11 版本之前,isPopUp 参数既绑定了打印设置的弹窗,又绑定了指定 sheet 页的弹窗,会导致 isPopUp 为 false 时指定 sheet 页弹窗不会出现

    • 10.0.11 版本及之后,指定 sheet 页的弹窗从 isPopUp 参数分离出来,新增参数 isSheetSelectPopUp 。为 true 时弹出指定 sheet 弹窗,为 false 或者不写时不弹。(兼容老的写法:老的逻辑是如果 isPopUp 为 true 时才弹出指定 sheet 的窗口)

    data为需要打印的模板列表及其参数,如"[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]"
    printType

    打印类型

    0:零客户端打印

    1:本地打印

    下面的参数为零客户端打印的参数,仅当 printType 为 0 时生效
    ieQuietPrint 

    IE 静默打印设置

    true:静默

    false:不静默

    下面的参数为本地打印的参数,仅当 printType 为 1 时生效
    printerName打印机名
    pageType

    打印页码类型

    0:所有页

    1:当前页

    2:指定页

    pageIndex

    页码范围

    当 pageType 为 2 时有效

    copy打印份数
    needSelectSheet

    是否打印指定 Sheet 页

    true:指定 Sheet 页

    false或参数为空:打印全部 Sheet

    sheetIndex

    Sheet页,只支持正整数或正整数区间

    正整数示例:2

    正整数区间示例:'7-10'

    示例:新建一个模板,在单元格 A1 添加「按钮控件」,并添加「点击」事件,如下图所示:

    222
    JS 代码:

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

    保存模板,选择填报预览,当点击按钮时,将使用本地打印方式打印模板,如下图:

    注:如果无法正常打印,请参见文档 [新]打印 中的注意事项。

    222

    3. 服务器端打印接口

    服务器端打印:直接调用服务器连接的打印机,可解决本地 PC 没有连接打印机无法打印的问题

    10.0 中,服务器端打印只能通过 JS 调用。如果不传参数,则弹窗;如果传参数,则静默打印。参数有默认值,不需要设置的话可以不传。

    // 弹窗
    window.contentPane.printReportServer();
    // 静默打印
    window.contentPane.printReportServer({
         pageType: 2,  // 打印页码类型:0:所有页,1:当前页,2:指定页
         pageIndex: '1-3',  // 页码范围。当 pageType 为 2 时有效
         printerName: "" // 指定打印机
    });
    // 静默打印
    window.contentPane.printReportServer({
         pageType: 1
    });
    // 静默打印
    window.contentPane.printReportServer({})
    示例:将上面的模板里的 JS 代码修改为:window.contentPane.printReportServer();
    填报预览后,点击按钮,将调用服务器端打印(弹窗),效果如下图所示:

    222

    附件列表


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

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

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

    不再提示

    10s后关闭



    AI

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