Pb中定制打印页长实现连续打印
pb与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码),
打印机使用控制码来定制打印机。大多数打印机指令使用控制码escape作为其指令序列的第一个序列码。
设置换行量(行距)1/8 英寸
ASCII码 ESC 0
十进制码 27 48
设置以行为单位的页长
ASCII码 ESC C n
十进制码 27 67 n
其中n 为每页行数范围(1-127)
二、 PB中控制码的传送及定制页长的实现
下面是具体的完成定制页长打印数据窗口的程序(定制页长为2.75英寸):
long ll_job
dw_print.reset()
ll_job = printopen()
if ll_job = -1 then
messagebox(gs_title,"打印机未准备好")
return
end if
//定制行距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)
1英寸约等于2.5厘米
pb dw打印参数设置
[General]
units设置为3使用厘米计算页边距
[Print Specifications]
left margin
right margin
top margin
bottom margin
值的单位为units设置的计量单位
pb9.0.2自定义纸张
一、 先决条件:
1、 PB的版本必须为9.0.2 build 7554 以上,否则请安装PB补丁(安装方法见后);
2、 我们将要使用的方法可以在任何版本的windows操作系统下使用;
3、 部分打印机不支持自定义纸张、网络打印机不支持;
二、 实现方法
1、设置打印机名称
dw_1.Object.DataWindow.Print.PrinterName = "DJ Printer"
2、设置打印张大小为256(自定义纸张类型)
dw_1.Object.DataWindow.Print.Paper.Size = 256
3、设置纸张宽度(单位:毫米)
dw_1.object.datawindow.print.CustomPage.Width =245
4、设置纸张高度(单位:毫米)
dw_1.object.datawindow.print.CustomPage.length =178
5、利用函数修改:
dw_data.modify("datawindow.printer = '" + printername + "'")
dw_data.Modify("DataWindow.Print.Paper.Size=256")
dw_data.Modify("DataWindow.Print.CustomPage.Length = " + height)
dw_data.Modify("DataWindow.Print.CustomPage.Width = " + width)
dw_data.Modify("DataWindow.Print.Margin.left = " + left)
dw_data.Modify("DataWindow.Print.Margin.right = " + right)
dw_data.Modify("DataWindow.Print.Margin.top = " + top)
dw_data.Modify("DataWindow.Print.Margin.bottom = " + bottom)
通过这种方法,可以指定打印机,自定义纸张的宽度高度,设置上下左右边距,但是有个问题。打印的时候,如果打印机的默认纸张是A4,打印完之后,依然会按A4的高度走纸,这个如何控制走纸呢。还是什么地方有错误。
把数据窗口的units 从 1/1000centimeter(3) 改为 powerbuilder(0) 就好