因为打印机由于驱动程序的原因,在物理的顶边距和左边距、底边距等都有一个1~2厘米的不可打印区域,如何清除它,让打印机从物理的(0,0)开始打印直到物理的底边?

解决方案 »

  1.   

    不知道你的打印机是针式还是喷墨等其它打印如果是针式的话你可以人为的来进行控制。有点麻烦。减去偏差值,如下:
      Printer.BeginDoc;
      Printer.Canvas.TextOut(-dx,-dy,'delphi');
      Printer.EndDoc;
    这样你测试着打就可以弄到0了。
      

  2.   

    好象不行,我已经使用PDeviceMode方式进行了设置纸张大小,而且也是用Printer.Canvas进行打印,但是我那个需要套打的票据太接近底边了;如果将纸张设置准确,走纸控制没有问题,但是最后一行就是打印不出来;如果将纸张设置长一点,最后一行能打印出来,但是走纸又不准确了;实在是烦人...,不知道如何解决,兄弟们帮帮忙。
      

  3.   

    没有打印机测试不了,按你说的这样只要设置纸张大小就应该可以了。你看看这个:
    procedure printer_set;
    var
    Device:Array[0..256] of Char;
    Driver:Array[0..256] of Char;
    Port:Array[0..32] of Char;
    hDMode:THandle;
    pDMode:PDevMode;begin
    Printer.GetPrinter(Device,Driver,Port,hDMode);
    if hDMode<>0 then
    pDMode:=GLobalLock(hDMode);
    if pDMode<>nil then
    begin
    pDMode^.dmPaperSize:=256;
    pDMode^.dmPaperLength:=900;
    pDMode^.dmPaperWidth:=2900;pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
    pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH;
    pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH;
    end;
    ResetDC(Printer.Handle,pDMode^);
    GLobalUnLock(hDMode);end;
      

  4.   

    按 ksaiy(消失在人海) 说的:将打印机设为150*93MM之后,最后一行从82MM开始,但无论如何,最后一行就是打不出来,只有把纸张设为150*96MM,最后一行倒是打印出来了,但走纸又不对了......,用的是star 6400平推票据打印机,是150*93MM的连续打印纸。
      

  5.   

    经过查询资料,花了一点时间编写了一个票据打印控件,该控件是专为进行连续纸票据打印而设计,适应于大多数的针式打印机。下载地址:http://www.chinahdc.com/download/software/pjprint.rar,欢迎大家试用。
      

  6.   

    发布到其它盒子和playicq去吧.这样下载的人多点.