问题描述
用水晶报表打印如何控制暂停和继续?
解决方案
解决方案二:
这不是水晶报表能控制到的了吧
解决方案三:
任务发送给打印机,暂停或者继续和水晶报表没神马关系
解决方案四:
privatevoidPrintOrders(stringorderid){DataTabledtPrint=bus.GetOrderDetailsInfo(orderid);dtPrint.TableName="dtOrderDetailsInfo";stringpathRpt=Application.StartupPath.Replace("\bin\Debug","")+@"crGoodsReport.rpt";ReportDocumentrepostDoc=newReportDocument();repostDoc.Load(pathRpt);//加载打印模板文件repostDoc.SetDataSource(dtPrint);//设置数据源repostDoc.PrintOptions.PrinterName=bus.GetAttrValueByUserName("选择打印机",Business.userName);//设置打印机名称repostDoc.PrintOptions.PaperSize=CrystalDecisions.Shared.PaperSize.Paper10x14;//设置打印纸张样式repostDoc.PrintOptions.PaperOrientation=CrystalDecisions.Shared.PaperOrientation.DefaultPaperOrientation;//纸张方向repostDoc.PrintToPrinter(1,true,1,10);}repostDoc.PrintToPrinter(1,true,1,10);执行这一句的时候就直接打印了,怎么暂停呢?用线程暂停好像控制不了吧
解决方案五:
repostDoc.PrintToPrinter(1,true,1,10)
这行代码是发送请求给打印机,命令发送后打印与否和报表就没关系了。
解决方案六:
问题是怎么控制暂停呢?
解决方案七:
随便问一下repostDoc.PrintToPrinter(1,true,1,2)改为repostDoc.PrintToPrinter(1,true,1,1)repostDoc.PrintToPrinter(1,true,2,2)打印出来的效果是否一样?因为我还要加个进度条
解决方案八:
解决方案九:
没人么,自己顶起
解决方案十:
没有暂停这个功能
解决方案十一:
引用2楼lovelj2012的回复:
任务发送给打印机,暂停或者继续和水晶报表没神马关系
打印的时候如何获取打印Jobid呢,就差这个了有了JobID我就可以暂停了publicstaticboolPauseOrResumePrintJob(stringprinterName,intprintJobID,stringtype){boolisActionPerformed=false;stringsearchQuery="SELECT*FROMWin32_PrintJob";ManagementObjectSearchersearchPrintJobs=newManagementObjectSearcher(searchQuery);ManagementObjectCollectionprntJobCollection=searchPrintJobs.Get();foreach(ManagementObjectprntJobinprntJobCollection){System.StringjobName=prntJob.Properties["Name"].Value.ToString();//Jobnamewouldbeoftheformat[Printername],[JobID]char[]splitArr=newchar[1];splitArr[0]=Convert.ToChar(",");stringprnterName=jobName.Split(splitArr)[0];intprntJobID=Convert.ToInt32(jobName.Split(splitArr)[1]);stringdocumentName=prntJob.Properties["Document"].Value.ToString();if(String.Compare(prnterName,printerName,true)==0){if(prntJobID==printJobID){if(type=="Pause")prntJob.InvokeMethod("Pause",null);elseprntJob.InvokeMethod("Resume",null);isActionPerformed=true;break;}}}returnisActionPerformed;}