VB环境下打印机的控制
VB提供了两种方式的打印控制。一种是通过打印机驱动程序,以页为基本打印单位,实现高精度打印字符、图形、图像、表格等。另一种是直接向打印机发送数据,以行为单位实现高速字符打印,此法还能通过发送控制指令对打印机实现完全的控制。
一、通过驱动程序控制打印
这是最常用的方式,因为与打印机无关,所以适应于任何类型的打印机。
㈠使用Printer对象
Printer对象是一个独立于打印机设备的封装,它可以代表不同的打印机,初始时,Printer对象为系统缺省的打印机,Printer对象具备例如:ColorMode、Copies、Duplex、Printquality等控制打印机特征的属性,提供了Newpage、EndDoc、KillDoc等控制打印过程的方法,以及大多数由窗体和图片框控件提供的图形属性和方法如:Currentx、Currenty、Textwidth、Textheight、Print、Pset、Line、PaintPicture和Circle等方法,它还拥有Font的所有属性。实现高分辨率的打印就是通过控制Printer对象的上述属性和方法完成的。
1.打印机的设置
若系统有多个打印机驱动,如果打印时没指定打印机,则选默认打印机。如果要用非默认打印机,可用Set Printer=Printers(N)来实现。
2.打印纸张的定义
纸张的大小用Printer的PaperSize属性,但设置的纸张必须打印机支持,故最好设普遍使用的纸张,如A4等。
纸张的方向用Printer的Orientation属性,0为横向,1为纵向。
纸张尺寸的计量单位用Printer的ScaleMode属性来设置。
下面的代码就是将纸张设为A4纵向、以毫米为计量单位。
Printer.PaperSize = vbPRPSA4
Printer.Orientation = 1
Printer.ScaleMode = vbMillimeters
3.分页控制
Printer对象进以页为基本单位,分页控制可用Printer 对象的NewPage(打印新的一页,CurrentX、CurrentY置为新页的左上角,可完成多页功能。)、EndDoc(将打印任务加入打印机队列)、KillDoc(取消打印任务)控制打印过程的。一般情况下,打印程序完成多页打印时会多次执行
NewPage,结束时执行一次EndDoc将打印任务加入打印机队列。如果你在NewPage后,立即使用EndDoc,VB则不会打印额外的空白页。如果希望显示空白页,则可在新的一页上只使用输出空格等空字符即可。
4.打印内容与定位
打印内容前应先定位,Printer对象的CurrentX与CurrentY属性可定位,若不定位,则从上次打印结束位置开始。
当定位好后,就可以使用Printer对象的Print方法进行内容打印。
5.打印字体设置
字符字体的设置,可用Printer对象的Font子对象,它有Name与Size等属性来设置字体与大小。
下面给出打印的部分代码:
㈡使用窗体的PrintFrom方法
若对打印质量要求不高,可直接用VB窗体的Printform 方法实现打印。此法简单、易用且功能强大,只需一行代码就能打印所有内容。
实现的方法就是:先将要打印的内容在窗体上显示出来,然后调用该窗体的PrintForm方法即可。其语法格式为:[窗体名] .PrintForm 。若窗体中有图形,则应将窗体的AutoRedraw属性设为真。
此法虽简,但消耗内存大、打印粗糙、速度慢,尤其是带有滚动条的图像,只能打印当前可视的区域。
二、直接向打印机发送打印数据
VB还可以文件方式直接向打印机端口写入数据,以实现底层控制打印机。
1.打印数据
基本方式是:
2.关于针式打印机的进纸与退纸问题
针式打印机现在主要用于连续多联票据打印,使用直接向打印机发送数据的方式控制很方便实现自动进/
printform退纸与切纸。但各种针式打印机支持的控制指令不完全一样,为了加强程序的通用性,应选用Epson兼容指令。因大多针式打印机都支持Epson兼容指令集。
总之,VB实现打印的方法较多。在实际开发中应该按需选用,一般对于打印质量要求不高、打印内容较少、为了控制的简便,可用窗体的PrintForm方法;若对质量要求高、内容较多、需精确定位等,应选Printer对象;多联票据类打印则用文件访问方式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论