还是我自己来解答吧。经过努力,我已基本解决此问题。用TPRINTER对象是肯定无法实现的。我是用 openprinter 和 writeprinter的方法来实现的。但实验的结果在喷墨机上不行,只能在针打上实现,我也不明白为什么,可能是因为我实验的喷墨机没有连续纸型可用的原因吧。

解决方案 »

  1.   

    能具体给出代码吗?
                     _
                  _ooOoo_
                 o8888888o
                 88" . "88
                 (| -_- |)
                 O\  =  /O
              ____/`---'\____
            .'  \\|     |//  `.
           /  \\|||  :  |||//  \
          /  _||||| -:- |||||_  \
          |   | \\\  -  /'| |   |
          | \_|  `\`---'//  |_/ |
          \  .-\__ `-. -'__/-.  /
        ___`. .'  /--.--\  `. .'___
     ."" '<  `.___\_<|>_/___.' _> \"".
    | | :  `- \`. ;`. _/; .'/ /  .' ; |
    \  \ `-.   \_\_`. _.'_/_/  -' _.' /
     `-.`___`-.__\ \___  /__.-'_.'_.-'
                  `=--=-'
      

  2.   

    拿去吧!给那些同样需要的朋友,并请你们请过告知在什么机型(打印机的)上运行可以,什么机型不行。
    uses prints
    function PrintRawStr(S : String):integer;
    Var
      Handle      : THandle;
      N           :  Longword;
      DocInfo1    : TDocInfo1;
      P           : Byte;
      Printername : String;Begin
      Printername := Printer.Printers[0]; //取得打印机文件名
      P := Pos(' on ',PrinterName);
      If P > 0 then
        PrinterName := Copy(PrinterName,1,P - 1);  If not OpenPrinter(PChar(PrinterName),Handle,nil) then
       Begin
          Case GetLastError of
             87 : printrawstr:=1;
          else
             printrawstr:=2;
          End ;
        Exit;
      End;  With DocInfo1 do
      Begin
        pDocName := PChar('raw job test'); // 打印进程名
        pOutputFile := nil;
        pDataType := 'RAW';
      end;  StartDocPrinter(Handle,1,@DocInfo1);
      StartPagePrinter(Handle);
      WritePrinter(Handle,PChar(S),Length(S),N);
      EndPagePrinter(Handle);
      EndDocPrinter(Handle);
      ClosePrinter(Handle);
      printrawstr:=0;
    End;
      

  3.   

    办法倒有,就是直接对并口操作,实行逐行打印,完全避开windows
    下驱动程序以页为单位走纸的限制
      

  4.   

    兄弟啊,兄弟,你的程序好像编译不到啊,満怀希望都扔进水中去了.uses prints ???DocInfo1    : TDocInfo1;???what's this???