Versuch mal sowas wie
if WritePrinter(hPrinter, PAnsiChar(@SomeUtf8String[1]), dwCount, dwBytesWritten) then
anstelle von
if WritePrinter(hPrinter, PAnsiChar(AnsiData), dwCount, dwBytesWritten) then
in deinem ursprünglichen Kode. Du mußt nur sicherstellen dass dwCount die Zahl der Bytes im UTF8-String ist und nicht die Zahl der Zeichen. Und natürlich darf der String nicht leer sein...
Funktioniert leider nicht.
Die Anzahl der Bytes habe ich sowohl mit ByteLength() versucht zu ermitteln also auch mit..
dwCount := TEncoding.UTF8.GetByteCount(Template.Text);
Aber das Fazit war immer, das gar nichts mehr an den Drucker geschickt wurde.