日期:2014-05-20  浏览次数:21030 次

请教:web页面水晶报表不用预览,直接打印该如何实现
系统有几百份报告,每份有若干页,客户要求全选,点一下打印就能到打印机那取一堆报告。
参照水晶报表samples写的代码如下:
  protected void PrintReport_Click(object sender, ImageClickEventArgs e)
  {
  ReportDocument writReport = new ReportDocument();
  // ....
  // 此处省略代码几十行
  // ....
  writReport.SetDataSource(...);
  writReport.PrintOptions.PrinterName = @"\\192.168.0.168\HP6L";
  writReport.PrintOptions.PrinterDuplex = CrystalDecisions.Shared.PrinterDuplex.Horizontal;
  writReport.PrintToPrinter(1, true, 0, 0);
  }
点了按钮,打印机没有任务。
将writReport.PrintOptions.PrinterName 赋值为IIS上的打印机有时候有打印任务,有时候没有,大都时候没有。
问题的关键是页面不能访问客户端的打印机。有朋友叫我用ActiveX实现,但我不死心啊。
回答请注意:1.是Web打印 2.不用跟我说转pdf等导出方法,你给客户找麻烦显然行不通

------解决方案--------------------
打印机选择错误或设置错误吧
------解决方案--------------------
有时候有有时候没有的话,跟打印机一般没关系。
不过保险起见,做一个批量发送打印任务的测试程序测试一下打印机的响应也是可以的

WEB打印不预览直接调用打印机用Activex是实现不了的(主要是会弹出选择打印机选择框,不能一键完成)
所以就要求来说,局域网上用服务器端打印是唯一的解决方法

另外我想问一下这个问题,这个代码里因为涉及到一次按键,发送多个打印任务

假设能打印的时候,打印的是第一个任务还是最后一个任务还是其中的某个呢?
如果可以的话,在两个任务之间加一个服务器端的延时是否可行?(这个我没实际做过,不知道有没有方法)


------解决方案--------------------
学习了