用Printer对象进行票据打印时,在一台打印机上试验通过,在另外一台打印机上打印出来的票据中线和字符的位置混乱,两台打印机型号不同(一台EPSON,一台HP)。
究竟是怎么回事,如何解决?

解决方案 »

  1.   

    你是用Canvas操作打印机的吗?如果是的话打印机的分辨率不同有时候会造成这种情况。
      

  2.   

    我用的是printer.canvas,如何解决不同打印机的分辨率不同造成的问题。
      

  3.   

    用 arial這個字體吧,一般系統都有,true type的字體,不變形
      

  4.   

    转一个:
    用打印机的点数做度量单位
    如果想让打印程序在任何打印机上都能正常地打印,
    你就必须改变你的度量单位。如果采用固定的度量,
    不同分辨率的打印效果是不同的。
    举例来讲:printerCanvasrectangle(0,0,360,720)
    在360×360的佳能4200SP上能打出一个1英寸宽、2英寸高的矩形,
    但在600×600的惠普6L上只能打出06英寸宽、12英寸高的矩形。
    使用打印机的点数做为度量单位是一个明智的选择。
    具体做法如下:VarPointX,PointY:integer;PointX:=GetDeviceCaps(printerHandle,LOGPIXELSX);
    PointY:=GetDeviceCaps(printerHandle,LOGPIXELSX);
    printerCanvasrectangle(0,0,PointX*1,PointY*2)
    这样,无论你使用什么样的打印机,都能得到一个1英寸宽、2英寸高的矩形。 
      

  5.   

    我用了GetDeviceCaps(printerHandle,LOGPIXELSX);但是不同的打印机打出来还是有几毫米的偏差,而且这个偏差是线和字符之间的。就是说在第一个打印机上打出来刚好字贴着线,第二个打印机就出现字压线,甚至跳格的现象。
    还能怎样解决?谢谢各位了