VFP不安装打印驱动直接调用打印而且不自动进纸
2009-02-20 15:47
330 查看
之前程序要打印都是利服报表(report),设置好打印格式后,就调用report from 来打印,这样有其优点就是更改打印格式容易,但缺点是一定要安装打印机,而且要设好纸张,比如设好了A4纸,那么打印时每走一张A4纸高度就会自动进纸重新打第二页,而且打印驱动通常都自动设了页边距,这部份页边距不同于打印时设置的那些页边距,驱动中设有的页边距是不可调的,也就是说,要想打一页纸从最上边一直打印到最下面是不可能的,他总是会留下一定的上边距下页距.
这对于要一此特殊的情况就不适用了,比如POS的打印,大多的POS打印机都没有打印驱动的,就算有要找也麻烦,找了还要装,重装了电脑,又要重装驱动,这样对于一套软件来说,其维护的成本无形就增大了,而且中国人节约的优良传统也是其最大的障碍,很多公司都要打日记帐,一打就是几十页甚至几百页,如果每一页都留有上下边距,那无形中就是一个很大的浪费,正因为此,就引申出了今天这个文章.
旧版本的VFP是用@ Say 来送出打印的,这个功能一直被继承到了现在,要实现不用驱动,直接打印,最主要就是利用@ Say 把所要打印的内容送到一个*.PRN打印文件中,然后,再把这个文件复制到LTP的打印口,就可以了.代码如下.
SrPrint()
SET SAFETY OFF
SET DEVICE TO FILE output.prn &&生成打印文件
SELECT 0
USE _lj
Gs1=ALLTRIM(Gs_F)
USE
@ PROW(),0 SAY GS1+IIF(EMPTY(_Spdjhc1.Sm1_F)," 草稿","")
@ PROW()+1,0 SAY "小票清单"
@ PROW()+1,0 SAY "日期:"+DTOC(DATE())+" 收银:"+ALLTRIM(_Spdjhc1.P_Zdr_F)
@ PROW()+1,0 SAY _Spdjhc1.Sm1_F+" 会员:"+ALLTRIM(_Spdjhc1.P_Hy_F)
@ PROW()+1,0 SAY "──────────────"
@ PROW()+1,0 SAY " 品名 批号"
@ PROW()+1,0 SAY " 厂家"
@ PROW()+1,0 SAY " 批准文号"
@ PROW()+1,0 SAY " 数量 售价 售额"
@ PROW()+1,0 SAY "──────────────"
SELECT _Spdjhc2
SCAN FOR NOT EMPTY(Spzd_Sp_F)
@ PROW()+1,0 SAY PADR(LEFT(_Spdjhc2.P_Sp1_F,20),20," ")+ALLTRIM(_Spdjhc2.Scph_F) &&商品 批号
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.P_Kh1_F) &&厂家
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.Pzwh_F) &&批准文件号
@ PROW()+1,0 SAY ALLTRIM(STR(_Spdjhc2.Sl_F,20,4)) &&数量
@ PROW(),9 SAY ALLTRIM(STR(_Spdjhc2.Xsdjhs_F,20,2)) &&售价
@ PROW(),18 SAY ALLTRIM(STR(_Spdjhc2.Xsjehs_F,20,2)) &&金额
@ PROW()+1,0 SAY "──────────────"
ENDSCAN
@ PROW()+1,0 SAY "应收:"+ALLTRIM(STR(_SPDJHC1.sxlj_F,20,2))+" 实收:"+ALLTRIM(STR(_SPDJHC1.TETSSJE_F,20,2))
@ PROW()+1,0 SAY "找零:"++ALLTRIM(STR(_SPDJHC1.TETSSJE_F-_SPDJHC1.sxlj_F,20,2))
@ PROW()+2,0 SAY ""
@ PROW()+1,0 SAY ""
SET DEVICE TO SCREEN
COPY FILE output.prn TO lpt1.dos &&送到LPT1打印口
SET SAFETY ON
这对于要一此特殊的情况就不适用了,比如POS的打印,大多的POS打印机都没有打印驱动的,就算有要找也麻烦,找了还要装,重装了电脑,又要重装驱动,这样对于一套软件来说,其维护的成本无形就增大了,而且中国人节约的优良传统也是其最大的障碍,很多公司都要打日记帐,一打就是几十页甚至几百页,如果每一页都留有上下边距,那无形中就是一个很大的浪费,正因为此,就引申出了今天这个文章.
旧版本的VFP是用@ Say 来送出打印的,这个功能一直被继承到了现在,要实现不用驱动,直接打印,最主要就是利用@ Say 把所要打印的内容送到一个*.PRN打印文件中,然后,再把这个文件复制到LTP的打印口,就可以了.代码如下.
SrPrint()
SET SAFETY OFF
SET DEVICE TO FILE output.prn &&生成打印文件
SELECT 0
USE _lj
Gs1=ALLTRIM(Gs_F)
USE
@ PROW(),0 SAY GS1+IIF(EMPTY(_Spdjhc1.Sm1_F)," 草稿","")
@ PROW()+1,0 SAY "小票清单"
@ PROW()+1,0 SAY "日期:"+DTOC(DATE())+" 收银:"+ALLTRIM(_Spdjhc1.P_Zdr_F)
@ PROW()+1,0 SAY _Spdjhc1.Sm1_F+" 会员:"+ALLTRIM(_Spdjhc1.P_Hy_F)
@ PROW()+1,0 SAY "──────────────"
@ PROW()+1,0 SAY " 品名 批号"
@ PROW()+1,0 SAY " 厂家"
@ PROW()+1,0 SAY " 批准文号"
@ PROW()+1,0 SAY " 数量 售价 售额"
@ PROW()+1,0 SAY "──────────────"
SELECT _Spdjhc2
SCAN FOR NOT EMPTY(Spzd_Sp_F)
@ PROW()+1,0 SAY PADR(LEFT(_Spdjhc2.P_Sp1_F,20),20," ")+ALLTRIM(_Spdjhc2.Scph_F) &&商品 批号
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.P_Kh1_F) &&厂家
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.Pzwh_F) &&批准文件号
@ PROW()+1,0 SAY ALLTRIM(STR(_Spdjhc2.Sl_F,20,4)) &&数量
@ PROW(),9 SAY ALLTRIM(STR(_Spdjhc2.Xsdjhs_F,20,2)) &&售价
@ PROW(),18 SAY ALLTRIM(STR(_Spdjhc2.Xsjehs_F,20,2)) &&金额
@ PROW()+1,0 SAY "──────────────"
ENDSCAN
@ PROW()+1,0 SAY "应收:"+ALLTRIM(STR(_SPDJHC1.sxlj_F,20,2))+" 实收:"+ALLTRIM(STR(_SPDJHC1.TETSSJE_F,20,2))
@ PROW()+1,0 SAY "找零:"++ALLTRIM(STR(_SPDJHC1.TETSSJE_F-_SPDJHC1.sxlj_F,20,2))
@ PROW()+2,0 SAY ""
@ PROW()+1,0 SAY ""
SET DEVICE TO SCREEN
COPY FILE output.prn TO lpt1.dos &&送到LPT1打印口
SET SAFETY ON
相关文章推荐
- 有双面打印功能的打印机,安装驱动后,无法选择自动双面打印的解决方法
- Linux CUPS 打印服务器为Windows客户端自动安装驱动的配置碰到的问题
- 自动安装的打印驱动不兼容Windows8如何卸载打印机驱动
- TQ2440 LINUX 2.6.30.4 LED驱动感言,从最初的打印字符,到自动分配设备号,到自动创建设备节点,到次设备号分控led
- Delphi调用安装驱动sys的单元
- 我的第一个简单的linux打印输出驱动(文件自动注册有问题)
- ThinkPad 驱动自动安装盘
- WinForm中 如何直接调用Excel的打印预览功能,但不显示Excel文件
- 原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法
- VFP中将表单的内容直接打印
- (1)制作windows 2003自动安装盘-集成补丁/Raid及硬件驱动
- (5)制作windows 2003自动安装盘-集成补丁/Raid及硬件驱动
- 繁体XP安装惠普1530打印驱动
- 转:禁止360随身wifi驱动自动安装
- HTML 浏览器直接打印,表格自动分页代码。
- 通过调用Word模板(Doc、dot)直接打印 z
- win7,win8安装pl2303驱动失败的解决方法-关闭驱动自动安装功能
- C# 调用系统API函数直接连接pos打印机 打印
- 在jasperreport中使用applet进行客户端打印以及jre在局域网中的自动安装
- 自动更新下载完APK时,提示选择打开方式不直接安装