各位同行,本人在一个项目中需要适应自定义尺寸纸张的打印,在代码中是这样设置的: this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom;
this.PageSettings.PaperHeight = 2f;
this.PageSettings.PaperWidth = 4f;
现在奇怪的事情来了
如果需要打印的客户端上使用的是网络打印机,打印的时候就会报错
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.ApplicationException: Failed to open the \\10.164.34.36\HP LaserJet Professional M1136 MFP printer, System error number: 5
在 GrapeCity.ActiveReports.Extensibility.Printing.DDPaperSize.AddCustomPaperSize(String printerName, String paperName, Single width, Single height)
在 GrapeCity.ActiveReports.Extensibility.Printing.DDPaperSize..ctor(String printerName, String paperName, Single width, Single height)
在 GrapeCity.ActiveReports.SectionReport.#azb()
在 GrapeCity.ActiveReports.SectionReport.#1yb(Boolean bDelayedInit)
在 GrapeCity.ActiveReports.SectionReport.Run(Boolean syncDocument)
在 GrapeCity.ActiveReports.SectionReport.Run()
在 PrintReportsProgram.PackMaterialBarcode..ctor(DataTable dt)
在 FormAppProgram.FunCommon.PrintPackMaterialBarcodeByDateAndSupplier(String fdate, String supplier)
--- 内部异常堆栈跟踪的结尾 ---
在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
在 System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
在 DCommon.frmComReport.CommonToolStripMenuItem_Click(Object sender, EventArgs e)
从日志来看,好像是网络打印机无法打开,但是如果将以下代码: this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom; 删掉,重新编译就不会报错了,还是同样的网络打印机,但是纸张就不是自定义的了,而是默认的纸张大小
还有一种情况,如果我默认的打印机不是网络打印机,是本机连接的打印机,加上这条代码:this.PageSettings.PaperKind = System.Drawing.Printing.PaperKind.Custom; 后也不会报错,而且预览的纸张大小就是我自定义的纸张大小。
我估计原因是出 在 GrapeCity.ActiveReports.Extensibility.Printing.DDPaperSize.AddCustomPaperSize(String printerName, String paperName, Single width, Single height),这里,对网络打印机自定义纸张设置没权限?
其他同行有没有碰到,求大神帮忙,不胜感激!
|
|