PB 中定制打印页长

----在使用连续纸打印数据窗口的情况下,需要定制打印的页长,以保证打印机走纸正确,不用人工干预,实现连续打印。在PB中须调用外部函数来自定义纸张长度,比较繁琐。本文介绍一种直接对打印机的控制方法,简单实现对页长的设定。

一、预备知识

计算机与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码),打印机使用控制码来定制打印机。大多数打印机指令使用控制码escape作为其指令序列的第一个序列码。下面介绍本文用到的几个指令码序列:

设置换行量(行距)1/8英寸
ASCII
ESC0
十进制码
2748
设置以行为单位的页长

ASCII
ESCCn
十进制码
2767n
其中n为每页行数范围(1-127

二、PB中控制码的传送及定制页长的实现

----PB中通过函数Printsend(printjobnumber,string,{zerochar})来实现向打印机发送控制码。各参数定义如下:

printjobnumber:printjob()函数返回的打印作业号;
string:
控制字符串,使用ASCII码;
zerochar:
用来替代string中的数字0


---
由于字符串中,0终止字符串,如果string中包含0,则需利用其他字符来表示0,参数zerochar即为此用途而设,当PB发送控制字符串给打印机时,把替代的字符zerochar转化为0

---下面是具体的完成定制页长打印数据窗口的程序(定制页长为2.75英寸):

longll_job
dw_print.reset()
ll_job=printopen()
ifll_job=-1then
messagebox(gs_title,"
打印机未准备好")
return
endif
//
定制行距1/8英寸

PrintSend(ll_job,CHAR(27)+CHAR(48))
//
设定页长22
PrintSend(ll_job,CHAR(27)+CHAR(67)+CHAR(22))
printdatawindow(ll_job,dw_print)
printclose(ll_job)

你可能感兴趣的:(打印)