請問各位高手,關於走紙的問題。
我的連續紙寬是230mm,刀縫與刀縫之間的距離是8mm,也就是每個標簽的高度是8mm,因為很難調到8mm的中間,所以打幾條記錄後,就會打印到刀縫裡去。請問我怎樣才能走得准確?
謝謝大家!請參考圖片 http://www.goan.com.cn/study/paper.gif

解决方案 »

  1.   

    看你的原图,发现你的每条记录需要打印的部分不是很多,最多是几段文本或者几条表格线,这样的情况你不用使用打印组件,你可以直接控制打印机的打印纸长度,好象是首先引用Printers类,然后直接设置Page参数,直接发送TextOut到打印机,应该可以近似与精确走纸,但是因为打印机走纸滚筒的摩擦稀疏不精确性,你也许无法做到真正的精确走纸。具体可以查看帮助!
      

  2.   

    第一张走的正确吗?如果第一张走的正确,后面越走越偏,请检查传感器。如果是类型是web,看看打印设置,纸张设置的大小和实际大小是否一致,如果是,即纸上有个黑斑,那一定要对好位置,我以前写那个Z4M时,用的,那个发光二极管没对中黑斑,走纸就越走越偏。上纸时一定要对准啊。
      

  3.   

    还有你试一下,不同的传感设置时,分别使用Continues和NONContounues的效果.有时非连接的设置也可以用于连续的纸张.
      

  4.   

    to gobiz(拔剑容易收剑难)对,是打印的不多,就是下面这样子的:
    品名:P4EPD12/13*9  批次:ADI123456000 工号:2153对了可否详细点?
    谢谢!to  Delphityro这是连续纸来的,第一条记录大致在中间(很难调到中间),所以有点偏差,后面的记录就会偏离中间,到一定数量时,就会打到刀缝里去。谢谢!請參考圖片 http://www.goan.com.cn/study/paper1.gif
      

  5.   

    uses printers;procedure SetPaperSize(X, Y: Integer); 
    // 单位是0.1mm 
    // A4时 Printer.Pagewidth:=1440; A5时 Printer.Pagewidth:=1049; 
    // B5时 Printer.Pagewidth:=1290; 16K时 Printer.Pagewidth:=1035; 
    // lq1600宽行打印机这个值宽度最大为42cm左右, 长度大约2m。 
    //改变devicemode结构 
    var 
       Device: array[0..255] of char; 
       Driver: array[0..255] of char; 
       Port: array[0..255] of char; 
       hDMode: THandle; 
       PDMode: PDEVMODE; 
    begin 
       Printer.PrinterIndex := Printer.PrinterIndex; 
       Printer.GetPrinter(Device, Driver, Port, hDMode); 
       if hDMode <> 0 then 
       begin 
          pDMode := GlobalLock(hDMode); 
          if pDMode <> nil then 
          begin 
             if (x = 0) or (y = 0) then 
             begin 
                {Set to legal} 
                pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize; 
                pDMode^.dmPaperSize := DMPAPER_FANFOLD_US; 
             end 
             else 
             begin 
                //这里设纸张大小
                pDMode^.dmFields := pDMode^.dmFields or 
                  DM_PAPERSIZE or 
                  DM_PAPERWIDTH or 
                  DM_PAPERLENGTH; 
                pDMode^.dmPaperSize := DMPAPER_USER;
                pDMode^.dmPaperWidth := x; 
                pDMode^.dmPaperLength := y;
             end; 
             //这两句是设进纸来源的,不要可以删掉
             pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL; 
             pDMode^.dmDefaultSource := DMBIN_MANUAL;
     
             GlobalUnlock(hDMode); 
          end; 
       end; 
       Printer.PrinterIndex := Printer.PrinterIndex; 
    end;//以下是打印代码
    Printer.Begindoc;
    with Printer.Canvas do
    begin
       Font.Name := '宋体';
       Font.Size := 14;
       Font.Color := clRed;
       TextOut(10,10, '大富翁论坛');
       …………
    end;
    Printer.EndDoc;
      

  6.   

    有這些命令,我怎樣使用?我的是LQ 300K+命令是:
    EPSON ESC/PK控制码
    在软件中选择一台EPSON ESC/PK打印机使您可以使用高级字体和图形。 
    操作: 
    CR 
     
    格式控制:
    ESC 0,ESC 2,ESC 3,ESC A,ESC+,LF,ESC J,ESC C,ESC C0,FF,
    ESC N,ESC O,ESC B,VT,ESC Q,ESC 1,ESC D,HT,ESC SP,ESC $,
    ESC (C,ESC (c,ESC (U,ESC (V,ESC (v 
     
    打印变化控制:
    SO,DC4,ESC W,SI,DC2,ESC E,ESC F,ESC G,ESC H,ESC w,ESC P,
    ESC M,ESC g,ESC p,ESC S,ESC T,ESC 4,ESC 5,ESC t,ESC 6,
    ESC 7,ESC !,ESC -,ESC (-,ESC R,ESC x,ESC q,ESC k,
    ESC %,ESC :,ESC &,ESC (X,ESC X,ESC c,ESC (^,ESC (t,ESC r 
     
    图像:
    ESC K,ESC L,ESC Y,ESC Z,ESC *,ESC ? 
     
    光栅图形模式控制:
    ESC (G (*1), ESC. (*1) 
      

  7.   

    反過來,如果樓主直接命令打印機打印出線條那還是可能的
    -----------------------------------
    to bluejingling(总是想起蓝精灵) 怎樣用啊?謝謝!
      

  8.   

    我的意思是,你直接用fastreport,quickreport,Rave等報表軟件全部自己設置.
    線條,文字都自己打印,那樣可能好一些
      

  9.   

    我這樣解決了:因為打印時,通常都是10行記錄後就會打到“刀縫”裡去,所以我當超過10行記錄時,就讓它的TopMargin:=2(小於時是為0的)誠如大家所說,這本來就不是高精度的機器,所以差不多就行。不過如有高手告訴我怎樣操控那些個EPSON ESC/PK控制码,那我真是太謝謝了!謝謝大家!
      

  10.   

    需要直接向打印机写码,在window下我没有用过,我原来的设置是DOS版的
    具体如下: (用BASIC语言)
        LPRINT CHR$(27);CHR$(112);CHR$(1)  // ESC p nESC 0 设定1/8英寸换行量
    ESC 2 设定1/6英寸换行量
    ESC 3 n 设定n/180英寸换行量 n值:0-255
    ESC + n 设定n/360英寸换行量 n值:0-255ESC ( U nL nH m 设定单位 m/3600英寸
     其中: nL=1,nH=0
     m值: 10 20 30 40 50 60
    ESC $ nL nH 设定绝对水平打印位置
        打印位置=(nL+nH*256)*(单位)+(左空白量)
        每点宽度1/60英寸
    ESC \ nL nH 设定相对水平打印位置
        打印位置=(nL+nH*256)*(单位)+(当前位置)
        信函每点宽度1/120英寸,草稿1/180英寸
    ESC ( V nL nH mL mH 设定绝对垂直打印位置
        打印位置=(mL+mH*256)*(单位)+(顶部空白量)
        其中: nL=2;nH=0
    ESC ( v 设定相对垂直打印位置
        打印位置=(mL+mH*256)*(单位)+(当前位置)
        信函每点宽度1/120英寸,草稿1/180英寸
        其中: nL=2;nH=0