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