Asuka5279 发表于 2022-2-23 15:58:33

想用delphi实现调用打印机用zpl指令打印,遇上了问题

想用delphi实现调用打印机用zpl指令打印,参考了网上的。遇上了问题,打印没有反应,打印机查看正在打印的列表里能看见文件存在了一瞬间,然后就没反应了。但是当我把pDatatype   := 'RAW';改成pDatatype   := 'Text';就可以成功打印,但是只能把zpl指令当作文本输出。求大佬指教!
procedure WriteRawStringToPrinter(PrinterName, S: string);
var
Handle: THandle;
N: DWord;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
   raise Exception.Create('打开打印机失败!');
with DocInfo1 do
begin
    pDocName    := PChar('Test Doc');
    pOutputFile := nil;
    pDatatype   := 'RAW';
end;

StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;




procedure TForm1.Button1Click(Sender: TObject);
var
ZPL: string;
sList: TStringList;
begin
sList := TStringList.Create;
try
    sList.Clear;
    sList.LoadFromFile('E:\print.txt');
    showmessage(sList.Text);
    ZPL := sList.Text;
    WriteRawStringToPrinter(comboBox1.Text, ZPL);    //’打印机名’
finally
    sList.Free;
end;
end;

ba21 发表于 2022-2-23 16:18:46

是不是驱动不对。
https://www.cnblogs.com/chengeng/p/6133764.html

Asuka5279 发表于 2022-2-23 16:21:24

ba21 发表于 2022-2-23 16:18
是不是驱动不对。
https://www.cnblogs.com/chengeng/p/6133764.html

驱动应该没问题,我打印其他的都可以,用别的打印软件也可以。谢谢awa
页: [1]
查看完整版本: 想用delphi实现调用打印机用zpl指令打印,遇上了问题