利用水晶报表实现Web打印(转)
2012-07-12 22:38
387 查看
由于B/S系统是采用浏览器作为用户界面与服务器进行交互的,我们的应用程序是部署在服务器端,而打印机则在客户端,服务器端不能精确的控制客户端的打印机,使得B/S系统中的打印功能不像C/S系统中那么方便。 目前常见的几种Web打印方法(/article/6629876.html): 1.利用IE浏览器直接打印 ——缺点:对于复杂的报表难以实现,且页面上哪些东西需要显示哪些需要隐藏,需要花费大量时间去分析 2.调用Office实现Web打印 ——缺点:客户端必须要安装Office,导出数据前无预览功能 3.利用第三方控件实现打印 4.利用水晶报表实现打印 本人最近利用水晶报表实现了一个ERP系统中的单据打印功能,折腾了很久,在此做个记录: 最初为了图方便,页面上不用水晶报表控件,想直接使用PrintToPrinter通过一个打印按钮把东西给打印出来,结果本机用的好好的,部署到服务器上的时候,发现找不到客户端的打印机,代码如下:
这种方法即便是可以,也有一些缺陷,比如预览功能没有,选择打印设置也没有。
直接打印不行,那么跳转到新页面,把参数传过去,在新页面上放个水晶报表控件,只显示导出和打印按钮:
PrintMode设置成"ActiveX"
需要在WebConfig中做一些配置,在configuration节点下:
PrintControl.cab可以从官网下载,我只找到一个比较老的版本,链接地址:http://support.businessobjects.com/CRforVS2005/PrintControl.cab,VS2010也可以用
下载下来后,放到自己建立的一个文件夹下,发布到服务器上即可。
客户端第一个打开时,会提示安装一个ActiveX插件
我们要做的只是把报表生成即可,打印,导出功能,水晶报表都帮我们做好了,还是挺方便的。
缺点:
非IE内核的浏览器貌似不可以,不会提示让你安装ActiveX插件(我试了firefox4和Chrome,其他的没有试)。
既然浏览器不兼容,那么给点提示吧,免得用户点了木有反应:
protected void btnPrintDoc_Click(object sender, EventArgs e) { ReportDocument reportDoc = GenerateDocReport(); reportDoc.PrintToPrinter(1, true, 0, 0); }
这种方法即便是可以,也有一些缺陷,比如预览功能没有,选择打印设置也没有。
直接打印不行,那么跳转到新页面,把参数传过去,在新页面上放个水晶报表控件,只显示导出和打印按钮:
<body> <object classid="CLSID:BAEE131D-290A-4541-A50A-8936F159563A" codebase="http://127.0.0.1/rpt/PrintControl.cab" version="10,2,0,1078" viewastext style="display: none"> </object> <form id="form1" runat="server"> <div> <CR:CrystalReportViewer ID="DocumentReportView" runat="server" PrintMode="Pdf" AutoDataBind="true" HasCrystalLogo="False" HasDrilldownTabs="False" HasDrillUpButton="False" HasExportButton="True" HasGotoPageButton="False" HasPageNavigationButtons="False" HasRefreshButton="False" HasSearchButton="False" HasToggleGroupTreeButton="false" HasToggleParameterPanelButton="False" HasZoomFactorList="False" Height="50px" ToolPanelView="None" ToolPanelWidth="200px" Width="350px"/> </div> </form> </body>
PrintMode设置成"ActiveX"
需要在WebConfig中做一些配置,在configuration节点下:
<configSections> <sectionGroup name="businessObjects"> <sectionGroup name="crystalReports"> <section name="printControl" type="System.Configuration.NameValueSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, Custom=null"/> </sectionGroup> </sectionGroup> </configSections> <businessObjects> <crystalReports> <printControl> <add key="url" value="http://127.0.0.1/rpt/PrintControl.cab" /> </printControl> </crystalReports> </businessObjects>
PrintControl.cab可以从官网下载,我只找到一个比较老的版本,链接地址:http://support.businessobjects.com/CRforVS2005/PrintControl.cab,VS2010也可以用
下载下来后,放到自己建立的一个文件夹下,发布到服务器上即可。
客户端第一个打开时,会提示安装一个ActiveX插件
我们要做的只是把报表生成即可,打印,导出功能,水晶报表都帮我们做好了,还是挺方便的。
缺点:
非IE内核的浏览器貌似不可以,不会提示让你安装ActiveX插件(我试了firefox4和Chrome,其他的没有试)。
既然浏览器不兼容,那么给点提示吧,免得用户点了木有反应:
<script type="text/javascript"> $('#IconImg_DocumentReportView_toptoolbar_print').click(function () { if (!$.browser.msie) { alert("很抱歉,该打印功能目前只支持IE内核的浏览器!"); return false; } }); </script>
相关文章推荐
- 利用水晶报表实现Web打印
- 利用水晶报表实现Web打印
- 转:利用XML实现通用WEB报表打印 卢彦
- 利用XML实现通用WEB报表打印(参考)
- 利用XML实现通用WEB报表打印 (收藏)
- 利用XML实现通用WEB报表打印(转载)
- 利用XML实现通用WEB报表打印(zt微软技术社区)
- 利用XML实现通用WEB报表打印(实现篇)
- 利用XML实现通用WEB报表打印(实现篇)
- 利用XML实现通用WEB报表打印
- 利用XML实现通用WEB报表打印(参考)
- 利用XML实现通用WEB报表打印(实现篇)
- 续:利用XML实现通用WEB报表打印(实现篇)
- 利用XML实现通用WEB报表打印(实现篇)转载
- 利用XML实现通用WEB报表打印
- 利用XML实现通用WEB报表打印
- 卢彦的利用xml实现通用web报表打印
- 利用XML实现通用WEB报表打印
- 利用XML实现通用WEB报表打印(实现篇)
- 利用XML实现通用WEB报表打印