我用EpSon LQ-300K 打印机
  我定义的顶边距是28mm 
但打印时是大于28mm 
而且下一张发票的顶边距有时是小于28mm
  这是什么原因?

解决方案 »

  1.   

    300K不怎么样
    北京7种发票那种都效果不好。
    你可以试试STAR打印机。另外,最好在代码里设定打印参数。
      

  2.   

    Procedure SetPrinter();
    Var
      PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char;
      PrnHandle: THandle;
      PrnMode: PDeviceMode;
    Begin
      Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle);
      If PrnHandle = 0 Then
        Raise Exception.Create('无法获取系统打印机信息!')
      Else
        Begin
          PrnMode:= GlobalLock(PrnHandle);
          With PrnMode^ Do
            Begin
              //打印份数
              dmFields:= dmFields Or dmCopies;
              dmCopies:= 1;          //打印方向
              dmFields:= dmFields Or dmOrientation;
              //dmOrientation:= DMORIENT_LANDSCAPE;
              dmOrientation:= DMORIENT_PORTRAIT;          //纸张大小
              dmFields:= dmFields Or dmPaperSize;
              dmPaperSize:= DMPAPER_USER;          dmFields:= dmFields Or dmPaperWidth;
              dmPaperWidth:= 2400;          dmFields:= dmFields Or dmPaperLength;
              dmPaperLength:= 1540;          dmFields:= dmFields Or PrnMode^.dmLogPixels;
              dmLogPixels:= 300;          ResetDC(Printer.Handle, PrnMode^);
            End;
        End;
    End;以上代码使用star,oki,citizen都没问题(9x,2k),你试试看。