admin 管理员组文章数量: 887021
2024年1月17日发(作者:struts2 spring)
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纵向、以毫米为计量单位。
ize = vbPRPSA4
ation = 1
ode = 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.关于针式打印机的进纸与退纸问题
针式打印机现在主要用于连续多联票据打印,使用直接向打印机发送数据的方式控制很方便实现自动进/退纸与切纸。但各种针式打印机支持的控制指令不完全一样,为了加强程序的通用性,应选用Epson兼容指令。因大多针式打印机都支持Epson兼容指令集。
总之, VB实现打印的方法较多。在实际开发中应该按需选用,一般对于打印质量要求不高、打印内容较少、为了控制的简便,可用窗体的PrintForm方法;若对质量要求高、内容较多、需精确定位等,应选Printer对象;多联票据类打印则用文件访问方式。
版权声明:本文标题:VB环境下打印机的控制 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705471497h486139.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论