润乾报表本地打印如何记录打印日志,是否打印,打印次数,被谁打印
由于某些业务需要,要记录报表被打印后的日志,比如是否已被打印((比如仓库出库单只能被打印一次,一旦打印就要被标记))、打印次数、被谁打印过等等之类。
虽本地打印无法采用页面上 js 的回调函数,但可以采用此打印监听类实现。
在本地打印成功打印报表后,会运行用户设置的监听类方法,实现用户设计的功能。
具体用法:
1、监听接口类
package com.raqsoft.report.ide.usermodel;
import org.json.JSONObject;
public interface ILocalPrintListener {
//params: 从报表页面传过来的参数,包括request、session中保存的和报表参数
public void printed( JSONObject params ) throws Exception;
}
2、用户监听类示例
package localprint;
import org.json.JSONObject;
import com.raqsoft.report.ide.usermodel.ILocalPrintListener;
import com.scudata.common.Logger;
public class MyListener implements ILocalPrintListener {
//params: 从报表页面传过来的参数,包括request、session中保存的和报表参数
public void printed( JSONObject params ) throws Exception {
String name = params.getString( "reportName" );
Logger.info( "报表" + name + "已打印" );
}
}
3、监听类部署
用户监听类固定部署在 [web 应用根目录]/localPrintListener 目录中,只须放 class 文件,不用加包名路径目录,如示例:
用户监听类中只能引用 jdk 系统类以及本地打印 jar 包中的类,本地打印程序运行时动态从服务器加载这个类,因为不知道它引用的其它类,所以加载不了其它类。比如想要实现将日志写到服务器端的文件里或数据库里,应该在监听方法 printed 中通过 URL 向服务器发送信息,由服务器端的程序执行记录。
4、配置文件
在报表配置文件中增加以下配置:
<Server>
……
<property name="localPrintListener" value="localprint.MyListener"/>
</Server>
value 值是监听类的类名,带包路径