打印方法中,用CreateFile写打印端口 PrintDocument 哪个好?

HBJMSHOP 2015-09-20 11:11:44
如题,现市面上常用的两种打印方法:用CreateFile写打印端口 PrintDocument 哪个好?,请问这两种的利弊在哪,现感觉CreateFile写打印端口,有点不稳定,有时会不打印,需重启程序才行。
...全文
144 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
HBJMSHOP 2015-09-21
  • 打赏
  • 举报
回复
引用 3 楼 Forty2 的回复:
粗略来说,两者的区别如下(下图打印系统的流程简单化,供参考理解用): PrintDocument -> 打印系统服务 -> 具体的打印驱动 -> 打印机 CreateFile -> 打印机 至于那个好,我一定说是PrintDocument好。因为它得到的打印系统的帮忙,程序员不用去关心一些底层细节。 归根到底,打印数据总要传给打印机(那个红色箭头部分)。 但是具体打印机的数据格式千差万别(比如有PCL,PJL,ESP/P,Text等等),而且具体的连接方式也有好多(LPT,COM,USB,TCP,SMB等等)。 CreateFile: 如果你要自己CreateFile传送数据,要首先把打印内容渲染为打印机理解的格式,然后要根据连接方式传送数据,等等这些任务都极其繁重。而且,一旦换打印机或更改连接方式,你就要更新代码。 PrintDocument: 打印服务系统,极大简化了该过程。你只要关心如何在统一的画布(GDI)上打印内容,其他任务系统都帮你完成。系统可以利用打印驱动来渲染打印任务,帮你传输数据,包括打印机忙碌重传机制等等。
!谢谢!
HBJMSHOP 2015-09-21
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
[quote=引用 楼主 HBJMSHOP 的回复:] 有时会不打印,需重启程序才行。
那是你的程序有bug,而你不解决 bug。 这二者根本不是同样的机制。就像是你自己种菜地然后收割之后炒菜吃,跟你到饭馆去点一盘蔬菜沙拉,随随便便问“哪个好”没有意义。[/quote] 谢谢!,!!
Forty2 2015-09-21
  • 打赏
  • 举报
回复
粗略来说,两者的区别如下(下图打印系统的流程简单化,供参考理解用): PrintDocument -> 打印系统服务 -> 具体的打印驱动 -> 打印机 CreateFile -> 打印机 至于那个好,我一定说是PrintDocument好。因为它得到的打印系统的帮忙,程序员不用去关心一些底层细节。 归根到底,打印数据总要传给打印机(那个红色箭头部分)。 但是具体打印机的数据格式千差万别(比如有PCL,PJL,ESP/P,Text等等),而且具体的连接方式也有好多(LPT,COM,USB,TCP,SMB等等)。 CreateFile: 如果你要自己CreateFile传送数据,要首先把打印内容渲染为打印机理解的格式,然后要根据连接方式传送数据,等等这些任务都极其繁重。而且,一旦换打印机或更改连接方式,你就要更新代码。 PrintDocument: 打印服务系统,极大简化了该过程。你只要关心如何在统一的画布(GDI)上打印内容,其他任务系统都帮你完成。系统可以利用打印驱动来渲染打印任务,帮你传输数据,包括打印机忙碌重传机制等等。
  • 打赏
  • 举报
回复
引用 楼主 HBJMSHOP 的回复:
有时会不打印,需重启程序才行。
那是你的程序有bug,而你不解决 bug。 这二者根本不是同样的机制。就像是你自己种菜地然后收割之后炒菜吃,跟你到饭馆去点一盘蔬菜沙拉,随随便便问“哪个好”没有意义。
HBJMSHOP 2015-09-20
  • 打赏
  • 举报
回复
两者区别在哪,问下大家

111,094

社区成员

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

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

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