比如要对A.cpt这个模版指定Aprint这个打印机来打印。 打开模版,添加web按钮(比如是分页预览,则 设计器选择:模版〉模版WEB属性>分页预览设置)
选择为该模版单独设置。 勾选使用工具栏 双击自定义按钮来添加一个自定义按钮 然后在双击
进入编辑页面
选择自定义按钮,点击自定义事件 - var printName='FinePrint';
- var localtor=new ActiveXObject("WbemScripting.SWbemLocator");
- var service=localtor.ConnectServer(".");
- var properties=service.ExecQuery("SELECT * FROM Win32_Printer");
- var e=new Enumerator(properties);
- for(;!e.atEnd();e.moveNext()){
- var p=e.item();
- if(p.Name==printName){
- p.setDefaultPrinter();
- break;
- }
- }
- FR.doURLAppletPrint("/WebReport/ReportServer?reportlet=GettingStarted.cpt",false);
复制代码将红色标记改为你需要指定的打印机名和模版路径 假如你要打印的模版有参数,则将参数传递到这个事件中加在URL后面即可 比如:
这样就可以把参数传递进去。 - var url=FR.cjkEncode("/WebReport/ReportServer?reportlet=GettingStarted.cpt&地区="+parm);
- FR.doURLAppletPrint(url,false);
复制代码注:这里的cjkEncode是用来处理中文的,传递中文需要先编码一下。 然后确定到第一张图的位置,添加图中的applet打印后事件 为了不影响其他打印,我们把默认打印机设置回去。
- var defaultPrinter='Fax';
- var el=new Enumerator(properties);
- for(;!el.atEnd();el.moveNext()){
- var p=el.item();
- if(p.Name==defaultPrinter){
- p.setDefaultPrinter();
- break;
- }
- }
复制代码到此一张指定打印机的模版就完成了。 注: 该方案由于用到active控件,所以只能在IE下使用。 假如遇到Automation 服务器不能创建对象这样的报错按照一下方法来解决一般1和2就可以了。 1、如果是Scripting.FileSystemObject (FSO 文本文件读写)被关闭了,开启FSO功能即可,在“运行”中执行regsvr32 scrrun.dll即可
2、安全模式设置成“中”,如果javascript脚本中报这个错误,还应将IE的安全设置“不允许运行未标记为安全的activeX控件”启用即可。
注意如果您将相应的网站设成“受信任的站点”,必须对“受信任的站点”进行相应的IE安全设置,此时如果对“Internet”IE设置将是徒劳
的。
3、有些脚本需要微软的 MSXML 控件才能进入。当使用 IE 5 以上版本的缺省安全模式时,会提示是否接受 MSXML 控件,如果接受,MSXML 将
自动安装到您的机器上(得等上几分钟)。如果自动安装不成功,可以自行下载和安装 MSXML 3.0 SP7。有时是由于msxml 3服务被关掉了,使用
regsvr32 msxml3.dll即可 PS:模版中的打印机是我自己的虚拟打印机,测试的时候需要自己修改成自己设备能连接的打印机
|