JS 调用 FR 打印方法

编辑
  • 文档创建者:文档助手1
  • 浏览次数:20960次
  • 编辑次数:34次
  • 最近更新:Leo.Tsai 于 2019-08-14
  • 1. 描述

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

    在 JAR 包版本为 2018-04-09 及以上版本后,提供了新的客户端打印js方法doURLPrint

    而在 JAR 为 2018-04-09 版本之前,FR 实现的是 Flash、PDF 两种客户端打印 JS 方法,doURLFlashPrint、doURLPDFPrint。

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

    2. 新打印接口

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

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

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

     isPopUp 是否弹出设置窗口,true 为弹出,false 为不弹出
      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
    sheetIndexsheet页,目前写法只支持正整数或正整数区间。正整数写法如:2,正整数区间写法如:'7-10'

    示例:

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



    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 :{ 
    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);
    保存模板,选择填报预览,当点击按钮时,将使用本地打印方式打印模板,如下图:


    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();
    填报预览后,点击按钮,将调用服务器端打印(弹窗),效果如下图:

    4. 老打印接口

    调用以下方法前,需要先引入 finereport.js,再通过 doURLxxxxPrint() 进行调用。

    1)doURLxxxxPrint(printurl)

    说明:printurl 为需要打印的报表路径,printurl以get 方式传递给服务器,服务器将报表结果返回给客户端,弹出打印选项框及打印对话框,供用户选择打印范围及打印机,然后进行打印。

    示例:

    FR.doURLFlashPrint("/webroot/decision/view/report?viewlet=report.cpt")

    2)doURLxxxxPrint(printurl,isPopUp)

    说明:printurl 为需要打印的报表路径

    isPopUp 布尔值(true/false),表示是否进行静默打印,true 为弹出打印对话框,false 为不弹出。

    示例:

    FR.doURLFlashPrint("/webroot/decision/view/report?viewlet=report.cpt",true);

    Flash 打印不支持静默打印,true/false 效果相同

    FR.doURLPDFPrint("/webroot/decision/view/report?viewlet=report.cpt",true);

    PDF 打印,true 时弹出打印对话框,false 不弹出

    3)doURLxxxxPrint(config)

    post 传参:

    说明:config 为参数配置,参数可以以 post 方式传递给服务器,config 数据格式为 {url : url,isPopUp : isPopUp,data:{reportlets:reportlets}}.

    URL 为需要打印的报表路径,isPopUp 布尔值(true/false),表示是否进行静默打印,true 为弹出打印对话框,false 为不弹出,data 需要打印的报表以及报表参数。

    示例


    var printurl="http://localhost:8075/webroot/decision/view/report";     
    var reportlets ="[{reportlet: '1.cpt', p1: 'a'}, {reportlet: '1.cpt', p1: 'b'}]";
    var config = {
    url : printurl,
    isPopUp : false,
    data : {
    reportlets: reportlets
    }
    };
    FR.doURLPDFPrint(config);

    详细示例可查看 批量打印_(Get/Post)

    get 传参:

    说明:config 为参数配置,参数可以以 get 方式传递给服务器,config 数据格式为 {url : url,isPopUp : isPopUp}.

    URL 为需要打印的报表路径,isPopUp 布尔值(true/false),表示是否进行静默打印,true 为弹出打印对话框,false 为不弹出。

    示例:


    var  url="http://localhost:8075/webroot/decision/view/report?viewlet=";  
    url+=document.report.cpt.value;  
    var  isPopUp = false;  
    var  config = {url : url,isPopUp : isPopUp}  
    FR.doURLPDFPrint(config);

    详细示例可查看 JS 调用打印_不查看直接打印

    注:post 传参与 get 传参的区别请查看 post 传参和 get 传参


    附件列表


    主题: 报表应用
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]