Posted on 2005-10-24 16:50
woow 阅读(580)
评论(0) 编辑 收藏 引用 所属分类:
学习
http://sgreport.yeah.net
http://www.uepoch.com
众合打表,完美支持数据类表格、不规则表格、嵌套表格、票据套打等
在c/s下与在b/s下效果完全一致
首创web打印在服务端运行组件,客户端得到的是纯html页面,而打印显示效果与c/s下完全一致,包括斜线之类的特殊效果
其实你可以用printer.currentx及printer.currenty来控制要打印的文字的位置。
当然,这得调试好久好久。
你可以用一下华表,或者直接用excel吧,那样打出来的效果也挺好的。
我有的
你可以设置一个数据库表,专门用来设置打印位置及打印与否
在程序中做一个设置界面和打印界面,输出时直接调用打印界面。
要的话,请找80027576,给分才行
精确控制打印机的走纸要使用打印机的指令集
自定义纸张,可以先在windows中定义好宽度和高度,然后打发票时调用api使打印机使用自定义纸打印,打报表时使用a4(a3)纸打印。如果相差太远,可加入调整参数,存入数据库,调整好就可正常打印了,下次就不用调整了,你可以程序中加入打印位置矫正功能,使打印机只在某个固定位置打印一个冒号,然后调整参数,直到使冒号位置与预定的位置相同,就算调好了。我也试过在程序中定义自定义纸大小,但也不成功。关于你说的打印完后自动进纸的问题,可参考打印机说明书设置一下即可,每张票打完后自动进到撕纸位置,撕下发票不管它,打下一张时它会自动退回正确位置。如果你还不明白,请去我的主页下载一个“门诊收费系统“,我做的,支持套打发票,其中的详细帮助可供你参考,
这是我以前问过的关于自定义纸张的一个问题
http://www.csdn.net/expert/topic/657/657650.xml?temp=.2023126
likesome(梦龙)和fuxc(Michael)的回答都可以实现。
注意如果是fuxc(Michael)的方法,最好选中纸型立即打印,如果中间插入别的操作可能会打印的纸型不正确。
当时没有解决打印完一张发票后走纸到撕纸位置,不过打印机上有一个走纸键可以走到撕纸位置,也就没再处理。
简单的方法是将ScaleMode 属性设为毫米,不用计算
然后用尺子量就可以了(如果要比例就ScaleHeight ,scalewidth求比例)
打印完调用EndDoc和KillDoc结束打印
只要驱动程序支持自定义纸张,就应能对hight和width设置
Public Sub leavecard_print()
If MsgBox("打印发货单?", vbQuestion + vbOKCancel, "提示") = vbOK Then
Dim yy As String
Dim mm As String
Dim dd As String
Dim fpath As String
On Error GoTo mylable
mydoc.Close
appwd.Quit
mylable:
Call del_doc
yy = Year(CDate(RTrim(T_date.Text)))
mm = Month(CDate(RTrim(T_date.Text)))
dd = Day(CDate(RTrim(T_date.Text)))
Printer.CurrentX = 0
Printer.CurrentY = 0
Printer.Font.name = "宋体"
Printer.Font.Size = 14
Printer.CurrentY = Printer.CurrentY + 550
Printer.CurrentX = 2400
Printer.Print "浙江华峰实业有限公司" '公司名称
Printer.Font.name = "宋体"
Printer.Font.Size = 11
Printer.CurrentY = 1170
Printer.CurrentX = 2300
Printer.Print yy + " " + mm + " " + dd '年月日
Printer.CurrentY = 1638
Printer.CurrentX = 2400
Printer.Print Cb_comp.Text '提货单位
Printer.CurrentY = 1638
Printer.CurrentX = 7900
Printer.Print T_link_man.Text '提货人
Printer.CurrentY = 2308
Printer.CurrentX = 2400
Printer.Print "普通等级/" + T_degree.Text '等级
Printer.CurrentY = 2308
Printer.CurrentX = 5200
Printer.Print T_breed_code.Text '编号
Printer.CurrentY = 2308
Printer.CurrentX = 8000
Printer.Print T_store_name.Text '仓位号
Printer.CurrentY = 2938
Printer.CurrentX = 2800
Printer.Print T_bill_number.Text '提货单号
Printer.CurrentY = 2938
Printer.CurrentX = 7500
Printer.Print T_amount.Text + " 吨" '提货数量
Printer.CurrentY = 3608 '4308
Printer.CurrentX = 2800
Printer.Print T_vehi_comp.Text '承运单位
Printer.CurrentY = 3608
Printer.CurrentX = 7500
Printer.Print T_vehi_tool.Text '运输工具
Printer.CurrentY = 4908 '6208
Printer.CurrentX = 7800
Printer.Print Cb_makeout_man.Text '开单人
Printer.EndDoc
Call Sleep(4000)
GoTo mylab0
mylab0:
On Error GoTo mylab1
Open "LPT1:" For Output As #1
For i = 0 To 16
Print #1, ""
Next
Close #1
Exit Sub
mylab1:
Err.Clear
Call Sleep(4000)
GoTo mylab0
End If
End Sub