水晶报表10在WEB下客户端能否不点击打印按钮和不弹出打印对话框而直接通过客户端安装的打印机打印?

时间:2020-12-16 08:36:46
水晶报表10在WEB下客户端能否不点击打印按钮和不弹出打印对话框而直接通过客户端安装的打印机打印?
基本代码如下:
DB MyDB=new DB();
DataSet d=MyDB.GetRecByDataSet("select * from bobzhuvw_instrumentinput);
ReportDocument ReportDoc  = new  ReportDocument();
ReportDoc.Load(Server.MapPath("InstrumentInputPrintss.rpt"));
ReportDoc.SetDataSource(d);
//ReportDoc.PrintToPrinter(1,true,0,0);
CrystalReportViewer1.ReportSource = ReportDoc;

在水晶报表10中设置printmode 为activex后可以直接在客户端使用客户端的打印机直接打印,但是要使用crystalreportview这个控件,而且在打印时会弹出打印对话框,不知道哪位高手能解决这个问题:就是打印时不点击打印按钮、不弹出打印对话框而直接通过客户端安装的打印机打印!ReportDoc.PrintToPrinter(1,true,0,0);这个方法是直接打印到WEB服务器上的打印机的而不是客户端的打印机的所以不在考虑的范围之内!

8 个解决方案

#1


能不能先告诉我怎么装10,谢谢
等装好了我们一起研究,OK?

#2


DB MyDB=new DB();
DataSet d=MyDB.GetRecByDataSet("select * from bobzhuvw_instrumentinput);
ReportDocument ReportDoc = new  ReportDocument();
ReportDoc.PrintOptions.PrinterName = "\\ShareMachineName\SharePrintName"; //本地或网络打印机共享名
ReportDoc.Load(Server.MapPath("InstrumentInputPrintss.rpt"));
ReportDoc.SetDataSource(d);
ReportDoc.PrintToPrinter(1,true,0,0);
//CrystalReportViewer1.ReportSource = ReportDoc;

如此即可,你上面的代码就是少了设置打印机这一步。

#3


非常感谢楼上的回答!再请教楼上几个问题:
1)在开发时开发人员并不知道客户端用的打印机名称,所以是否可以通过程序代码来获得客户端的默认打印机信息?
2)“\\ShareMachineName\SharePrintName”中的ShareMachineName是什么意思?请指教

#4


客户端的打印机可以获取,但水晶报表的页面是随着打印机不同而变化的,如果客户端打印机和你设计时的不同,那就不能保证你设计的报表在客户端会正确打印;

ShareMachineName是指网络机器名,SharePrintName指网络打印机名,\\ShareMachineName\SharePrintName这表示一个网络打印机

#5


Crystal Repoert属性 print Mode 默认是 PDF 设置为ActiveX
就可以直接打印了

#6


to:xwdd129(成功,因为心中总有梦) 
谢谢您的回复,能告诉我获取客户端的默认打印机信息的相关代码吗?任务很急,没有时间自己去研究了,万分感谢,马上结分!

#7


不好意思,我没有这个代码,你参考一下原来有篇帖子:

http://community.csdn.net/Expert/topic/4366/4366924.xml?temp=.2213709

#8


luckyprg(lucky)

我按你那样设的怎么报RPC服务器不可用呢??

#1


能不能先告诉我怎么装10,谢谢
等装好了我们一起研究,OK?

#2


DB MyDB=new DB();
DataSet d=MyDB.GetRecByDataSet("select * from bobzhuvw_instrumentinput);
ReportDocument ReportDoc = new  ReportDocument();
ReportDoc.PrintOptions.PrinterName = "\\ShareMachineName\SharePrintName"; //本地或网络打印机共享名
ReportDoc.Load(Server.MapPath("InstrumentInputPrintss.rpt"));
ReportDoc.SetDataSource(d);
ReportDoc.PrintToPrinter(1,true,0,0);
//CrystalReportViewer1.ReportSource = ReportDoc;

如此即可,你上面的代码就是少了设置打印机这一步。

#3


非常感谢楼上的回答!再请教楼上几个问题:
1)在开发时开发人员并不知道客户端用的打印机名称,所以是否可以通过程序代码来获得客户端的默认打印机信息?
2)“\\ShareMachineName\SharePrintName”中的ShareMachineName是什么意思?请指教

#4


客户端的打印机可以获取,但水晶报表的页面是随着打印机不同而变化的,如果客户端打印机和你设计时的不同,那就不能保证你设计的报表在客户端会正确打印;

ShareMachineName是指网络机器名,SharePrintName指网络打印机名,\\ShareMachineName\SharePrintName这表示一个网络打印机

#5


Crystal Repoert属性 print Mode 默认是 PDF 设置为ActiveX
就可以直接打印了

#6


to:xwdd129(成功,因为心中总有梦) 
谢谢您的回复,能告诉我获取客户端的默认打印机信息的相关代码吗?任务很急,没有时间自己去研究了,万分感谢,马上结分!

#7


不好意思,我没有这个代码,你参考一下原来有篇帖子:

http://community.csdn.net/Expert/topic/4366/4366924.xml?temp=.2213709

#8


luckyprg(lucky)

我按你那样设的怎么报RPC服务器不可用呢??