js打印设置打印偏移

目录:

1. 问题描述

FineReport提供了不预览报表直接打印的js方法,也提供了根据打印效果设置打印偏移的方法。但是打印偏移必须在预览报表的情况设置,直接js打印没有途径设置打印偏移,下面将介绍一种方案实现js打印设置打印偏移。

2. 解决方案

采用op=getsessionid的方式获取到一个报表的sessionid,然后用ajax去访问偏移量的url ,最后根据sessionid来进行打印。

3. 具体事例

3.1 生成报表sessionid

编写函数根据传入的报表路径和参数返回报表计算完成的sessionid,参考代码如下:

function getsessionid(cpt,para){ var sessionID; var url="/WebReport/ReportServer" var data = $.extend({ op:'getSessionID', reportlet:cpt },para); FR.ajax({ url: url, type: 'POST', data: data, async: false, complete: function (res, status) { if (status == 'success') { sessionID = res.responseText; } } }); return sessionID; }

3.2 根据sessionid打印报表

编写函数根据传入的偏移量和sessionid进行打印,参考代码如下:

function print(x,y,sessionid){ var pianyiurl="/WebReport/ReportServer?op=printer_offset&cmd=pt_submit&sessionID="+sessionid+"&type=2&offset_x="+x+"&offset_y="+y+"&copy_IP=localOffset";//偏移量的设置的url,其中sessionID就是报表的sessionID,type是偏移的类型1代表全局设置,2代表单个模板设置,offset_x和offset_y分别是横纵方向的偏移量可以为负数 FR.ajax({ url:pianyiurl, type:"GET", async: false, complete: function(msg){ FR.doURLPDFPrint("/WebReport/ReportServer?sessionID="+sessionid); } }) }

3.3 传入报表参数打印

传入报表名字和参数进行打印

print(100,0,getsessionid("1.cpt",{a:'111',b:'222'}));

模板设计的样式:

222

A1、B1单元格为获取传入的参数。

B5单元格表示当前的页码数。

打印样式:

222

完整的html代码:

<head> <title>FineReport Demo</title> <script type="text/javascript" src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script> <link rel="stylesheet" type="text/css" href="/WebReport/ReportServer?op=emb&resource=finereport.css"/> <script type="text/javascript"> function getsessionid(cpt,para){ var sessionID; var url="/WebReport/ReportServer" var data = $.extend({ op:'getSessionID', reportlet:cpt },para); FR.ajax({ url: url, type: 'POST', data: data, async: false, complete: function (res, status) { if (status == 'success') { sessionID = res.responseText; } } }); return sessionID; } function print(x,y,sessionid){ var pianyiurl="/WebReport/ReportServer?op=printer_offset&cmd=pt_submit&sessionID="+sessionid+"&type=2&offset_x="+x+"&offset_y="+y+"&copy_IP=localOffset";//偏移量的设置的url,其中sessionID就是报表的sessionID,type是偏移的类型1代表全局设置,2代表单个模板设置,offset_x和offset_y分别是横纵方向的偏移量可以为负数 FR.ajax({ url:pianyiurl, type:"GET", async: false, complete: function(msg){ FR.doURLPDFPrint("/WebReport/ReportServer?sessionID="+sessionid); } }) } print(100,0,getsessionid("1.cpt",{a:'111',b:'222'})); </script> </head> <body> <body> </html>

注:需要先引入finereport.js才能够调用FineReport的js方法

注:将html文件存放到%FR_HOME%\WebReport中,并挂载到决策系统中,即可查看效果。

附件列表


主题: 专题总结

文档内容仅供参考,如果你需要获取更多帮助,请咨询帆软技术支持
关于技术问题,您还可以通过帆软论坛获取帮助,论坛上有非常多的大神,有些水平比帆软工程师还要高哦。
若您还有其他非技术类问题,可以联系帆软传说哥(微信ID:frbiaoge)