Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: UTF-8 Drucker Befehle direkt an Drucker senden

  Alt 15. Dez 2021, 11:56
Mal versucht einen String als UTF8String zu deklarieren? Template.Text ist jedenfalls KEIN UTF-8, sondern Unicode!
Danke für den Tipp, das ist es gewesen. Irgendwie hatte ich im Kopf weil bei Template.LoadFromFile('', TEncoding.UTF8) angegeben habe, das es sich um UTF-8 handelt, aber ist natürlich alles Unicode intern.

Delphi-Quellcode:
var
  Template: TStringList;
  dwCount: DWORD;
  UTF8Str: UTF8String;
  hPrinter: THandle;
  DocInfo: TDocInfo1;
  dwJob: DWORD;
  dwBytesWritten: DWORD;

begin
  //init
  UTF8Str := UTF8String(Template.Text);
  dwCount := TEncoding.UTF8.GetByteCount(Template.Text);

  if OpenPrinter('Printername', hPrinter, nil) then
  begin
    try
      DocInfo.pDocName := 'RAWPrint';
      DocInfo.pOutputFile := nil;
      DocInfo.pDatatype := 'RAW';

      dwJob := StartDocPrinter(hPrinter, 1, @DocInfo);
      if dwJob <> 0 then
      begin
        try

          if StartPagePrinter(hPrinter) then
          begin

            try
              if WritePrinter(hPrinter, PAnsiChar(@UTF8Str[1]), dwCount, dwBytesWritten) then
              begin
                if dwBytesWritten <> dwCount then
                  raise Exception.Create('Daten konnten nicht an Drucker gesendet werden!');
              end;{if}
            finally
              EndPagePrinter(hPrinter)
            end;{try..finally}

          end;{if}

        finally
          EndDocPrinter(hPrinter);
        end;{try..finally}
      end;{if}

    finally
      ClosePrinter(hPrinter);
    end;{try..finally}
  end
  else
    ShowMessage('Fehler: Barcode-Druck fehlgeschlagen!');
  Mit Zitat antworten Zitat