连续套打时,相邻两张发票的间距是不是要在程序中控制一下,还是让打印机自动控制

解决方案 »

  1.   

    我用代码实现,你参考一下,希望有帮助...Function TSysPrinter_1.PrintMe: Boolean;
    Var
      PrnDevice, PrnDriver, PrnPort: Array[0..255] Of Char;
      PrnHandle: THandle;
      PrnMode: PDeviceMode;
    Begin
      Result:= False;  { 设定打印参数 }
      Try
        Printer.GetPrinter(PrnDevice, PrnDriver, PrnPort, PrnHandle);
      Except
        MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息',
          MB_OK + MB_ICONERROR);
        Exit;
      End;  If PrnHandle = 0 Then
        Begin
          MessageBox(Application.Handle, '无法获取系统打印机信息!', '系统信息',
            MB_OK + MB_ICONERROR);
          Exit;
        End
      Else
        Begin
          PrnMode:= GlobalLock(PrnHandle);
          With PrnMode^ Do
            Begin
              //打印份数
              dmFields:= dmFields Or dmCopies;
              dmCopies:= 1;          //打印方向
              dmFields:= dmFields Or dmOrientation;
              dmOrientation:= DMORIENT_PORTRAIT;          //纸张类型为用户自定义
              dmFields:= dmFields Or dmPaperSize;
              dmPaperSize:= DMPAPER_USER;          //纸宽,单位为0.1mm
              dmFields:= dmFields Or dmPaperWidth;
              dmPaperWidth:= PaperWid;          //纸长,单位为0.1mm
              dmFields:= dmFields Or dmPaperLength;
              dmPaperLength:= PaperLen;          dmFields:= dmFields Or PrnMode^.dmLogPixels;
              dmLogPixels:= 300;          ResetDC(Printer.Handle, PrnMode^);
            End;
        End;  { 开始打印 }
      Try
        Printer.Canvas.Font.Name:= SysInfo.PrnFont;
        Printer.Canvas.Font.Size:= SysInfo.PrnSize;    Printer.BeginDoc;    { 税务登记号 }
        Printer.Canvas.TextOut(pstX_RegNO, pstY_RegNO, str_RegNO);    { 收款单位 }
        Printer.Canvas.TextOut(pstX_Payee, pstY_Payee, str_Payee);    { 付款单位 }
        Printer.Canvas.TextOut(pstX_Payer, pstY_Payer, str_Payer);
        Printer.Canvas.TextOut(pstX_PayerID, pstY_PayerID, str_PayerID);    { 经营项目 }
        Printer.Canvas.TextOut(pstX_Item1, pstY_Item1, str_Item1);
        Printer.Canvas.TextOut(pstX_Charge1, pstY_Charge1, str_Charge1);    Printer.Canvas.TextOut(pstX_Item2, pstY_Item2, str_Item2);
        Printer.Canvas.TextOut(pstX_Charge2, pstY_Charge2, str_Charge2);    Printer.Canvas.TextOut(pstX_Item3, pstY_Item3, str_Item3);
        Printer.Canvas.TextOut(pstX_Charge3, pstY_Charge3, str_Charge3);    Printer.Canvas.TextOut(pstX_Item4, pstY_Item4, str_Item4);
        Printer.Canvas.TextOut(pstX_Charge4, pstY_Charge4, str_Charge4);    Printer.Canvas.TextOut(pstX_Item5, pstY_Item5, str_Item5);
        Printer.Canvas.TextOut(pstX_Charge5, pstY_Charge5, str_Charge5);    { 金额合计 }
        Printer.Canvas.TextOut(pstX_Total, pstY_Total, str_Total);    Printer.EndDoc;
        Result:= True;
      Except
        MessageBox(Application.Handle,
          '无法处理打印信息,请确定打印机驱动程序安装正确!', '系统信息', MB_OK +
          MB_ICONERROR);
        Exit;
      End;
    End;