Thema: Delphi QR-Code mit ESC-Commands

Einzelnen Beitrag anzeigen

Papaschlumpf73
Online

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#8

AW: QR-Code mit ESC-Commands

  Alt 27. Jul 2022, 17:31
Wenn Escape-Sequenzen an den Drucker geschickt werden sollen, wird das mit dem ganzen Grafik-Gedöns aller Printer.Canvas und Co. wahrscheinlich nichts werden. Ich habe hier noch ein paar Codeschnipsel gefunden, die schon über 20 Jahre alt sind. Damit habe ich früher 10.000e Seiten PCL-Text in wenigen Sekunden zum Drucker gejagt. Allerdings funktioniert es nicht mehr so richtig - musste zu viel rausnehmen. Aber mal so als Denkansatz oder Google-Hilfe:
Delphi-Quellcode:
uses winapi.WinSpool, Printers;

procedure TForm5.Button1Click(Sender: TObject);
begin
TextToPrinter(Printer.Printers[Printer.PrinterIndex], 'Mein Text');
end;

procedure TForm5.TextToPrinter(Drucker, TextToPrint: String);
var pHandle: THandle; DocInfo1: TDocInfo1; N: DWORD;
begin
DocInfo1.pDocName:=PChar('MeinDokumentname');
DocInfo1.pOutputFile:=nil;
DocInfo1.pDataType:='RAW';
if not OpenPrinter(PChar(Drucker), pHandle, NIL) then raise Exception.Create(SysErrorMessage(GetLastError));
if StartDocPrinter(pHandle, 1, @DocInfo1)=0 then raise Exception.Create(SysErrorMessage(GetLastError));
if not StartPagePrinter(pHandle) then raise Exception.Create(SysErrorMessage(GetLastError));
if not WritePrinter(pHandle, PChar(TextToPrint), Length(TextToPrint), N) then raise Exception.Create(SysErrorMessage(GetLastError));
if not WritePrinter(pHandle, PChar(#12#13), 2, N) then raise Exception.Create(SysErrorMessage(GetLastError));
if not EndPagePrinter(pHandle) then raise Exception.Create(SysErrorMessage(GetLastError));
if not EndDocPrinter(pHandle) then raise Exception.Create(SysErrorMessage(GetLastError));
if not ClosePrinter(pHandle) then raise Exception.Create(SysErrorMessage(GetLastError));
end;
  Mit Zitat antworten Zitat