关于打印的问题?(300分)

  • 主题发起人 主题发起人 happy_boy
  • 开始时间 开始时间
H

happy_boy

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好?我做了一个票据套打的程序,可是不知道如何适应各种打印机,在用户要
改变打印机的时候,我就要为他重写打印部分,请问如何才能写出适合各种打印机
的套打程序呢?我用的是TPrinter对象操作的打印。

谢谢!
 
不知重写的原因什么?打印上出现什么问题?
 
可以使用qrdesign控件
因为它的报表文件外部文件,所以不用改程序。
 
距离呀,应该是打印机的分辨率不同吧?
有好的解决方法吗?
 
我记得阅过相关的文章,是把读取打印机的分辩率,并把其转换成CM为单位,
这样你可以对不同打印机写代码了。
 
我看过这样的文章,  
 Var PointX,PointY:integer;
  PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
  PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
  printer.Canvas.rectangle(0,0,PointX*1,PointY*2)
不管用什么打印机,这个程序都可以打印机一个1英寸宽、2英寸高的矩形。
可是我这样做不是不能得到通用的距离呀?
 
通用距离是可以得到的:
PointX:=GetDeviceCaps(printer?Handle,LOGPIXELSX);
PointY:=GetDeviceCaps(printer?Handle,LOGPIXELSY);
mmX:=round(pixPerInX/25.4);
//每毫米水平方向象素
mmY:=round(pixPerInY/25.4);
这样用距离(毫米)乘mmX,mmY便可。
不过,要使套打适用各种打印机就烦了,多数套打是对特定打印机的。
  
 
做一个打印机参数设置程序,该程序可自动获得当前打印机的分辨率,然后把得到的分辨率
引用到原程序中
 
搜索一下前面的贴子,关于打印这个问题已经有很多人问过了
 
后退
顶部