PrintDocument pd=new System.Drawing.Printing.PrintDocument();
pd.DefaultPageSettings.PaperSize=new PaperSize("myPaper",400,600)
pd.PrintPage+=new PrintPageEventHandler(pd_PrintPage);
pd.Print();
这是MSDN里描述的自定义纸张的标准方法,但是执行后没有效果,打印机任然按照设置的缺省纸张来打印。
难道是这是微软的.net的BUG?????MSDN的描述应该是可以的,为什么使用起来就是不行????
以前用VB的时候做过打印,按照MSDN的描述,自定义纸张10分钟就试出来了。
为什么到了.NET时代,就不行了?????
使用.NET,除了PrintDocument来打印之外,还有没有其它方法可以实现打印?????
太郁闷了,从今天下午一直试到刚才,现在才回家,打印了一堆废纸,居然还没有搞定。
由于是打印长度不定的结帐单,如果不能程序控制纸长的长度,会被客户骂死的。
希望有解决办法的朋友,能指教一二,谢谢。
周6、周日外出旅游,不能回贴,还请谅解一下。
现在严重郁闷中。。。。 劳累中。。。。。 对.NET失望中。。。。。。。。
希望最后的结局,不要是因为.NET无法解决,而被迫使用VB来做dll处理,那就郁闷了。 已经1年没用过VB了,郁闷
PaperSize pkCustomSize = new PaperSize("First custom size",(int)(82.55*100/25.4+1),(int)(184.0*100/25.4+1));
this.printDocument1.DefaultPageSettings.PaperSize = pkCustomSize;
this.printDocument1.DefaultPageSettings.Margins. = 0;
this.printDocument1.DefaultPageSettings.Margins.Left =0;
this.printDocument1.DefaultPageSettings.Margins.Bottom = 0;
this.printDocument1.DefaultPageSettings.Margins.Right = 0;
msdn上提供的信息不一定每个都正确,楼主可以查查其他解决方案,网上挺多的。
据我所知,除于进入控制面版设置自定义纸张并设置成默认的后用PaperSize外,没有直接的方法
其次是调用API,第二种方法你可以找一下VB.net版的“若尘”。
在Windows2000以上的系统中不再有自定义纸张类型,代替的是“服务器属性”,如果你没有预先设置好你的纸型的话,在打印机的支持纸张类型中是找不到你在程序中的自定义纸张类型,所以,在打印之前还是需要预先设置的。
灵活使用下面三个API就可以任意定义纸张格式大小了,不过对于一些激光打印纸以及在Win98不支持
这几个API
Public Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" _
(ByVal hPrinter As IntPtr, ByVal Level As Int32, ByVal pForm As IntPtr) As Int32
Public Declare Function SetForm Lib "winspool.drv" Alias "SetFormA" _
(ByVal hPrinter As IntPtr, ByVal pFormName As String, ByVal Level As Int32, ByVal pForm As IntPtr) As Int32
Public Declare Function DeleteForm Lib "winspool.drv" Alias "DeleteFormA" _
(ByVal hPrinter As IntPtr, ByVal pFormName As String) As Int32