历史版本29 :JS 调用 FR 打印方法 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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 打印份数

示例:

新建一个模板,在单元格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 :{ 
	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

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传参