管理信息化中水晶报表的打印与精确打印的实现

随着计算机技术的发展与普及,越来越多的单位或部门已基本实现无纸管理信息化,但是在一些场合现在还不能完全无纸化,还要将计算机处理结果以报表形式通过打印机输出到纸上,如公司产品销售的发票打印、企业资格证等。在B/S架构中,常规的打印方法是使用浏览器文件菜单中的“打印”。使用这种方法打印虽然简单,但打印出来的页面会出现你所不希望出现的页眉、页脚、页码及背景等,还会出现版面不美、布局不好的现象,而且无法实现精确打印。本文以ASP.NET技术为基础论述如何使用VS 2008实现B/S架构下的网页内容的打印与精确打印。 
   
  一、用VS 2008创建Microsoft SQL Server数据库 
   
  1. 打开VS 2008,新建一个Web窗体项目。 
  2. 在“视图”菜单中选择“服务器资源管理器”或者使用热键Ctrl+Alt+S将“服务器资源管理器”打开,见图1。 
  3. 在窗口的左边栏,用鼠标右键单击“数据连接”,在弹出的浮动菜单中选择“创建新的SQL Server数据库”,则有新窗口弹出,在该窗口中选择“服务器名”,如“47012CAAD3A04CE/SQLEXPRESS”(如果“服务”中的SQL Server Browser没有开启,则找不到服务器名),再填上“新数据库名称”,如“library”。最后用鼠标左键单击“确定”。 
  4. 在图1中用鼠标的右键单击“表”,在弹出的浮动菜单中选择“添加新表”,那么在图1的右边可以在数据库中添加表的“列名”和“数据类型”等。 
   
  5. 用鼠标左键单击图1的右上角的“×”符号,有窗口出现,在窗口中单击“是”,然后又出现一个较小的窗口,在这个窗口中输入数据库的表名,如“book”,然后再单击“确定”,那么这个表就建成了,可以用手动方法或编程方法给空表添加数据。 
   
  二、页面普通打印功能的实现 
   
  1. 在“解决方案”中选择当前的项目,然后在当前项目中添加“数据集”,并在“数据集”中添加DataTable,如book。 
  2. 新建一个网页文件,将VS 2008中工具箱的Crystal Report Source控件拖放到网页上,然后配置报表源。这时可按报表生成向导进行报表设计。在报表生成向导中的“可用数据源”中选择前面已经创建的数据集中的那个book表。 
  3. 将Crystal Report Viewer控件拖放到网页上,点击Crystal Report Viewer控件设置该控件的报表源。 
  4. 在网页的合适位置放一个Button控件,并将Button的text属性改为“打印报表”。双击该“打印报表”按钮,打开代码页,在代码页的命名空间处引入如下命名空间: 
  using CrystalDecisions.Shared; 
  using CrystalDecisions.ReportSource; 
  using CrystalDecisions.CrystalReports.Engine; 
  并且在Button事件中加入如下代码: 
  ReportDocument oRpt = new ReportDocument(); 
  oRpt.Load(Server.MapPath("CrystalReport1.rpt")); 
  // CrystalReport1.rpt为前面所建的水晶报表文件的默认名。 
  oRpt.PrintOptions.PaperSize = PaperSize.DefaultPaperSize; 
  //设置纸张尺寸为默认尺寸。 
  PageMargins margins; 
  margins = oRpt.PrintOptions.PageMargins; 
 

  margins.bottomMargin = 0; 
  margins.leftMargin = 0; 
  margins.rightMargin = 0; 
  margins.topMargin = 0; 
  //以上4行为页边距的设置。 
  oRpt.PrintOptions.ApplyPageMargins(margins); 
  oRpt.PrintOptions.PrinterName = ""; 
  //这里设置打印机名,当为空表示打印机为操作系统默认打印机。 
   oRpt.PrintToPrinter(1, false, 1, 1); 
   //代码中oRpt.PrintToPrinter(1, false, 1, 1)中的第一个参数为打印的份数 
   //第二个参数为是否设有逐份打印,false表是不逐份打印 
   //第三个参数为打印的起始页码,第四个参数为结束页码。 
   
  三、网页中精确打印功能的实现 
   
  精确打印指的是将页面内容打印到一定格式的表格、发票、证件上,实现步骤如下: 
  1. 将要精确打印的表格、发票、证件等进行扫描,生成图片文件,或者使用图像工具进行绘制。不管是扫描的还是绘制的,一定要与原件有同样的大小和比例。 
  2. 打开报表文件,在Crystal Reports 菜单上选择“插入”,再选择“ole对象”,在弹出的窗口中选择“由文件创建”,通过“浏览”在电脑上选择那个扫描或绘制的图片文件。 
  3. 如果精确打印的内容是由数据库管理的,那么将报表的“字段资源管理器”中的相关的数据库字段拖放在报表的表格、证件、发票的要打印的位置,根据要求设计字体、字形、大小等。如果精确打印的内容不是由数据库管理的,那么就拖入其他相关字段。如图2所示。 
   
  4. 选择刚才插入的ole对象,用鼠标右键单击该对象,选择“设置对象格式”,在弹出的窗口中勾选“抑制显示”。这样做的目的是使打印时不再打印水晶报表中的表格、证件、发票等(换句话说,这里的表格、证件、发票起的作用仅是为了能准确地将打印的内容打到指定位置),而只打印要打的相关字段。 
  5. 相关代码与前所提及的类似,但是如果打印的纸超过A4大小,需要修改下面的语句: 
  oRpt.PrintOptions.PaperSize = PaperSize.DefaultPaperSize; 
  如将DefaultPaperSize改成PaperA3,这里表示纸的大小为A3。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值