C#批量打印快递单连打的问题

jianbin1062 2015-01-14 01:36:24
现在单打已经通过单个打印了 怎么实现批量连打 如果一个一个的数据添加的话 打印机每次打印一张纸的话 就会停顿一下 矫正打印针  如何实现一直打印 不停顿 高手出来指点一下啊!

这个是打印的代码! 

//设置<打印文档>的边距
Margins margin = new Margins(0, 0, 0, 0);
pd.DefaultPageSettings.Margins = margin;
//设置<打印文档>的纸张大小
PaperSize pageSize = new PaperSize("快递单打印", Convert.ToInt32(MillimetersToPixel(Convert.ToInt32(dtBillType.Rows[0]["BillWidth"]), fDpiX)), Convert.ToInt32(MillimetersToPixel(Convert.ToInt32(dtBillType.Rows[0]["BillHeight"]), fDpiY)));
pd.DefaultPageSettings.PaperSize = pageSize;
//设置打印状态
pd.PrintController = new StandardPrintController();
//设置打印机名
pd.PrinterSettings.PrinterName = "Epson LQ-1600K";
printPreviewDialog.Document = pd;
printPreviewDialog.ShowDialog();
pd.Print();
...全文
313 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-01-14
  • 打赏
  • 举报
回复
纸张应该会有最大高度限制,不能无限大的. 最大应该是65535吧 反正你也不应该一次性打几百张,那样中间如果出了差错就不好办了 其实控制在一次打印个20-30张比较好,然后让打印机归位一次
jianbin1062 2015-01-14
  • 打赏
  • 举报
回复
我要修正的就是打印之间的停顿时间的!他主要慢就慢在打印针头在矫正位置! 每打完一单 就要停顿好久 打印一单是很快的! 我测试下 看纸张设置大一些是否可行! 
於黾 2015-01-14
  • 打赏
  • 举报
回复
每打印一张就撕掉一张,然后打印机退纸重新打印下一张,这种方式必然是最不会产生差错的方式,不过也是效率最低的方式
於黾 2015-01-14
  • 打赏
  • 举报
回复
此外,打印的快慢跟打印机有关系 打印一张需要20秒,明显是打印机打印的太慢了 你用打印机打印个word试试看,如果也那么慢,就跟你的代码没啥关系 而你修改代码后也只是节约了每张之间的停顿时间,而且会有打印N张之后纸张偏移越来越大的风险
於黾 2015-01-14
  • 打赏
  • 举报
回复
是的
jianbin1062 2015-01-14
  • 打赏
  • 举报
回复
我查了好多资料也没找到 快递单连打的资料啊 别人的那种打印方法也不知道是什么样的打印方法! 他们是可以批量设置打印页 我这个是可以打印的 关键就是效率太低了!一张快递单加上矫正打印针的时间需要20秒以上的!太慢了! 你的意思是说把 pageSize这个直接设置纸张大小的高度设置为打印多少张的高度 然后按照比例循环填入数据 只执行一次操作?
於黾 2015-01-14
  • 打赏
  • 举报
回复
GDI+画的时候直接把页面高度设置成单页面高度*数量,循环数据画在对应的位置上,然后只执行一次Print() 不过这样有可能出现打着打着就窜行了的情况

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧