VS.NET2005 CrystalReport的打印模式分为Pdf和ActiveX两种,打印模式的设置在
CrystalReportViewer.PrintMode 属性中。
1、PDF模式的打印需在服务端及客户端安装pdf格式阅读器。
2、ActiveX模式:ActiveX 打印控件允许使用者将报表直接打印至本机打印机。使用ActiiveX模式需要在
Web.config的<configuration>节中添加如下配置信息:
<configSections> <sectionGroup name="businessObjects"> <sectionGroup name="crystalReports"> <section name="printControl" type="System.Configuration.NamueSectionHandler,
System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"
/> </sectionGroup> </sectionGroup> </configSections> <businessObjects> <crystalReports> <printControl> <add key="url" value="http://localhost:5760/web/PrintControl.cab" /> </printControl> </crystalReports> </businessObjects>
PrintControl.cab 档案可以从 Business Objects 技术支持网站下载取得,并可以将 cab 档案放在 本
地Web 服务器虚拟目录中,以供 URL 存取之用。
PrintControl.cab 档案的下载地址:
http://support.businessobjects.com/CRforVS2005/PrintControl.cab。
可以将PrintControl.cab 档案显示在页面上,在Web页面Html中加入如下代码:
<object id="CrystalPrintControl" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A"
codebase="http://127.0.0.1/rpt/PrintControl.cab" #Version="10,2,0,1078" viewastext></object>
#Version是版本号,如果你是其他的版本将版本号修改一下即可。
可以看到它是一个CrystalReport的一个打印控件。
把这个插件arview2.cab直接放在这个页面相同的文件夹里就是下面的写法
<object id="arv" codebase="arview2.cab #version=2.4.1.1283" width="100%"
classid="clsid:8569D715-FF88-44BA-8D1D-AD3E59543DDE" viewastext style="height: 100%"> <param name="_ExtentX" value="26141"> <param name="_ExtentY" value="11959"> </object>
在服务器上装上 1、CRRedist2005_x86.msi 2、CRREdist2005_x86_chs.msi 3、CrystalReports10_NET_EmbeddedInstall.msi(序列号:A6860-0900000-U70005X)
注册表的PrintJobLimit:0,不然会有使用限制。
下载PrintControl.cab 建个.html <html> <object id= "CrystalPrintControl " style="display:none" classid= "CLSID:BAEE131D-290A-4541-A50A-8936F159563A "codebase= "http://192.168.0.1/PrintControl.cab " #Version= "10,2,0,1078 " viewastext> </object> </html>
客户端第一次打印时调用一下,安装ActiveX控件~
水晶报表中<CR:CrystalReportViewer" PrintMode="pdf" />中将PrintMode=Activex,启用插件打印后,点击打印按钮弹出一个小对话框,但是空白 解决: 在服务器上装上 1、CRRedist2005_x86.msi 2、CRREdist2005_x86_chs.msi 3、CrystalReports10_NET_EmbeddedInstall.msi(序列号:A6860-0900000-U70005X)
注册表的PrintJobLimit:0,不然会有使用限制。
下载PrintControl.cab 建个.html <html> <object id= "CrystalPrintControl " classid= "CLSID:BAEE131D-290A-4541-A50A-8936F159563A " codebase= "http://192.168.0.1/PrintControl.cab " #Version= "10,2,0,1078 " viewastext> </object> </html>
客户端第一次打印时调用一下,安装ActiveX控件~
水晶报表printmode 的pdf改为ActiveX后就是直接打印报表,但是始终出不来,原来还要下载个ActiveX,但是好象官方的下载不下来!最后还是用讯雷下下来放在服务器上.
首先下载printcontrol.cab从:http://support.businessobjects.com/CRforVS2005/PrintControl.cab#
方法一: 一个自己想的方法,但是安装速度比较慢,直接解压PrintControl.cab后把PrintControl.dll添加到引用,这样不需要<add key="url" value="http://localhost/PrintControl.cab" />,这里好象要绝对路径. 方法二: 然后在web.config中插入: <configSections> <sectionGroup name="businessObjects"> <sectionGroup name="crystalReports"> <section name="printControl" type="System.Configuration.NamueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null" /> </sectionGroup> </sectionGroup> </configSections>
<businessObjects> <crystalReports> <printControl> <add key="url" value="http://localhost/PrintControl.cab" /> </printControl> </crystalReports> </businessObjects>
注意 只有 Internet Explorer 才會支援 ActiveX 控制項。若從非 Internet Explorer 的用戶端 (FireFox、Safari、Mozilla 等) 列印,將會回復到 PDF 匯出對話方塊。 =====================================
经过我的测试,是IE升级了补丁,对摸态窗的安全加强了,所以就算你将文件放到本地服务器估计也安装失败,除非你自已写代码连续弹出两次摸态窗,才会提示安装,不过这样给用户是不可能的。
我测试过,将代码写入摸态窗,打开页面就自动弹出执行会出错,除非你设个定时器,过30秒或一分钟后再弹出是正常的。 所以完全可以将他的CAB下载回来放到本地服务器,然后写下面代码放到一个单独的页面放用户先安好。
先下载http://support.businessobjects.com/CRforVS2005/PrintControl.cab,放到自已的服务器上。
<object id="CrystalPrintControl" style="display:none" classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A" codebase="http://127.0.0.1/rpt/PrintControl.cab" #Version="10,2,0,1078" viewastext></object>
#Version是版本号,如果你是其他的版本将版本号修改一下即可。 接着是加载报表失败的问题,因为我新建立一个空项目是正常的,代码是肯定没有问题,所以问题一定在WEB.CONFIG配制文件里,因为我的环境比较复杂,所以WEB.CONFIG是很多配制,就一个一个拆吧,拆到<identity impersonate="true"/>时,也,正常了,原来是不能将他设为true,将他改为<identity impersonate="false"/>就正常了。
|