Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Drucken unter Android (https://www.delphipraxis.net/212047-drucken-unter-android.html)

tkhandel 8. Dez 2022 09:44

Drucken unter Android
 
Hallo,

ich habe bisher unter Windows mit Fastreport gearbeitet bei der Anwendungsentwicklung für Android
steht mir weder die VCL noch die FMX Version zur Verfügung. Womit kann man Drucken?

Es werden hauptsächlich Kassenbons gedruckt.

schaumermal 8. Dez 2022 17:16

AW: Drucken unter Android
 
Dies würde mich auch brennend interessieren.
Ich dachte dies geht vielleicht mit FastReport (Client/ Server (muss separat erworben werden)).
Leider bin ich hier keinen Schritt weiter :-(

tkhandel 8. Dez 2022 20:46

AW: Drucken unter Android
 
Laut Matrix nicht, hatte mir schon fastreport fmx gekauft.
Wie kann man bei einem Marktanteil von 71,55 Prozent (Android) und 27,8 Prozent (Apples iOS)
ein Produkt fmx fähig bezeichnen ?

himitsu 8. Dez 2022 21:13

AW: Drucken unter Android
 
FMX heißt erstmal nichts.

zusätzlich sind die unterstürtzen Plattformen entscheidend.

juergen 8. Dez 2022 21:56

AW: Drucken unter Android
 
Vielleicht hilft dieser Tipp von SO weiter. Zu der Print-Library von Winsoft kann ich aber nichts sagen.

tggmx 9. Dez 2022 22:10

AW: Drucken unter Android
 
Die einfachste Lösung wäre es ESC-Sequenzen direkt über Bluetooth an den Drucker zu schicken.
Für die diese Lösung brauchst du keine zusätzlichen Komponenten.

tkhandel 10. Dez 2022 07:27

AW: Drucken unter Android
 
Danke, das mit den ESC denke ich wird der beste weg sein. Hat da jemand ein Beispiel
wie ich das umsetzen kann. Der Drucker ist ein Bixolon Bon-Drucker.
Danke euch!

jaenicke 11. Dez 2022 13:23

AW: Drucken unter Android
 
Über Bluetooth ist das nicht so einfach. Einfacher wäre ein Netzwerkdrucker, mit dem man eine einfache Netzwerkverbindung z.B. über W-LAN aufbauen kann. Dem kann man dann einfach die Escapesequenzen als Text schicken. Am besten klappt das allerdings mit Epson-Druckern, die direkt XML unterstützen (ePOS Print XML), weshalb die auch sehr verbreitet sind bei Verwendung mit Tablets. Per XML habe ich so schon problemlos drucken können.

In jedem Fall brauchst du dafür die Dokumentation des Herstellers, damit du weißt, was du schicken musst.

Da Android mittlerweile auch eine ganz gute Druckerschnittstelle hat, ist die aber auch sinnvoll nutzbar. Die bereits erwähnte Bibliothek von Winsoft ist dafür eine Möglichkeit und wurde ja auch schon bei Embarcadero vorgestellt:
Easily Print From Android Devices Using Winsoft’s Powerful Android Printing Library For Delphi
Ich habe diese vor einiger Zeit mal ausprobiert, als ich beruflich noch mit Kassen zu tun hatte. Das sah vielversprechend aus.

schaumermal 11. Dez 2022 20:46

AW: Drucken unter Android
 
Gibt es wirklich keine Möglichkeit "Reports" (also Berichte, Kassenbons, etc.) auf einem mobilen Geräte (Android und IOS) zu erzeugen und dann z.B. per Mail zu versenden?
In der Regel werden die Daten ja auf dem mobilen Gerät erzeugt und in einer Datenbank gespeichert.
Jetzt müsste man hier auch den Bericht erzeugen und z.B. als PDF speichern und senden können.

tkhandel 16. Dez 2022 12:22

AW: Drucken unter Android
 
Hallo,

auf die Winsoft’s Library war ich auch schon gestoßen hat aber den Nachteil das immer
eine Vorschau kommt und man den Drucker wählen muss (so wie ich das verstehe)
Hinzu kommt das der Bixolon Drucker dort als Drucker nicht nach einer Kopplung erscheint
sondern erst irgendwelche Drucker-Apps installiert werden müssen um den Drucker als
Drucker zu finden.

Ich hab nochmal ein bisschen gegoogelt und probiert bin jetzt soweit das ich in einer
ComboBox alle verbundenen Bluetoothgeräte somit auch den Bixolon auflisten kann und
festlegen kann.

Mit dem folgenden Code:

procedure TfraDrucker.ButtonClick(Sender: TObject);
var
DX:String;
SND:TBytes;
LServices : TBluetoothServiceList;
ServiceGUI, ServiceName:String;
lprintheader : string;
lprintfooter : string;
begin
if LDevice.IsPaired then
begin
LServices := LDevice.GetServices;
SelDevice := LDevice;
serviceGUI :='{00001101-0000-1000-8000-00805F9B34FB}';
serviceName :='SerialPort';
guid:= StringToGUID(servicegui);
end;
{/device}

if (LDevice <> nil) then
begin
LSockect := SelDevice.CreateClientSocket(Guid, true); //was LDevice
if (Assigned(LDevice)) And (Assigned(LSockect)) then
begin
if Not LSockect.Connected then LSockect.Connect
end
else
begin
LSockect := SelDevice.CreateClientSocket(Guid, True);
LSockect.Connect;
end;
lprintheader := lprintheader + ' ESC@ LF';
if Assigned(LSockect) then
begin
if LSockect.Connected then
begin
DX := lprintheader;
SND := TEncoding.UTF8.GetBytes(DX);
LSockect.SendData(SND);
Sleep(100);
LSockect.Close; // Connected := False;
end;
end;
end;


ich kann den Drucker anschließend ansprechen, der Drucker reagiert mit Empfangsmeldung macht alle 4 Clicks einen LF.
Wie muss ich die Steuerzeichen übertragen? ASCII, HEX, Trennzeichen dazwischen oder nur leerzeichen ?
Wie kann ich einen Text senden?

Fragen über Fragen

Danke für eure Bemühungen

Jürgen

TurboMagic 16. Dez 2022 21:34

AW: Drucken unter Android
 
ESC ist normalerweise als #27 zu senden. Nicht ESC!
Wir sind hier nicht beim Grand PRIX :P

Olli73 17. Dez 2022 08:30

AW: Drucken unter Android
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein uraltes Projekt von mir für Woosim Printer und für Zebra Printer.

Dem Zebra sende ich sowas:

Code:
^XA
^LL320
^POI
^CI27
^FO20,010^A0N,20,20^FDName:^FS
^FO20,040^A0N,36,36^FDHans Mustermann^FS
^FO20,090^A0N,20,20^FDStraße / Hausnummer:^FS
^FO20,120^A0N,36,36^FDBahnhofstraße 18 (äöüßÄÖÜ€)^FS
^FO20,170^AON,20,20
^TBN,536,120
^FDDies ist ein längerer Text, der automatisch umgebrochen wird, da er in einem Textblock steckt!^FS
^XZ
Und dem Woosim sowas:

Code:
[1B40][1B7404]Hello World![0A][1B2130]***äöüßÄÖÜ€***[1B2100][0A][1b2a000f000102040810204080402010080402010a1b2a010f000102040810204080402010080402010a][0A]ende[0A0A]

Der Bixolon arbeitet wahrscheinlich ähnlich (im besten Fall gleich) wie der Woosim...

Frickler 19. Dez 2022 14:37

AW: Drucken unter Android
 
Zitat:

Zitat von tkhandel (Beitrag 1516023)
Danke, das mit den ESC denke ich wird der beste weg sein. Hat da jemand ein Beispiel
wie ich das umsetzen kann. Der Drucker ist ein Bixolon Bon-Drucker.
Danke euch!

Der quasi-Standard für Bondrucker ist ESC/POS von Epson. Der Bixolon müsste das auch können. Eine (englische) Einführung mit Beispielen und Links zu den offiziellen Epson Dokus findet sich hier.

tkhandel 19. Dez 2022 21:40

AW: Drucken unter Android
 
Zitat:

Zitat von Frickler (Beitrag 1516408)
Zitat:

Zitat von tkhandel (Beitrag 1516023)
Danke, das mit den ESC denke ich wird der beste weg sein. Hat da jemand ein Beispiel
wie ich das umsetzen kann. Der Drucker ist ein Bixolon Bon-Drucker.
Danke euch!

Der quasi-Standard für Bondrucker ist ESC/POS von Epson. Der Bixolon müsste das auch können. Eine (englische) Einführung mit Beispielen und Links zu den offiziellen Epson Dokus findet sich hier.


Danke das hat geholfen, bin jetzt weiter gekommen.

Die Variable DX wurde jetzt als AnsiString deklariert und das encoding von UTF8 auf ASCII umgestellt.
TEncoding.ASCII.GetBytes(DX);

Jetzt druckt er, werde den Code nach Fertigstellung mal Online stellen für euch.

DANKE

Olli73 20. Dez 2022 10:58

AW: Drucken unter Android
 
Hattest du meine Testanwendung probiert?

tkhandel 20. Dez 2022 12:59

AW: Drucken unter Android
 
Zitat:

Zitat von Olli73 (Beitrag 1516443)
Hattest du meine Testanwendung probiert?

ja aber da fehlte mir irgendwas konnte das Projekt nicht kompilieren

Frickler 20. Dez 2022 14:16

AW: Drucken unter Android
 
Zitat:

Zitat von Olli73 (Beitrag 1516357)
Der Bixolon arbeitet wahrscheinlich ähnlich (im besten Fall gleich) wie der Woosim...

Jein. Zebra und Woosim sind Labeldrucker, und wenn es auch Labeldrucker von Bixolon (Samsung) gibt, so ist der Drucker von Tkhandel ein Bondrucker (Kassendrucker). Die Bixolon Labeldrucker würde man aber tatsächlich wie den Zebra ansteuern, also via ZPL, wie in Deinem Beispiel.

Olli73 20. Dez 2022 15:39

AW: Drucken unter Android
 
Zitat:

Zitat von Frickler (Beitrag 1516456)
Jein. Zebra und Woosim sind Labeldrucker, und wenn es auch Labeldrucker von Bixolon (Samsung) gibt, so ist der Drucker von Tkhandel ein Bondrucker (Kassendrucker). Die Bixolon Labeldrucker würde man aber tatsächlich wie den Zebra ansteuern, also via ZPL, wie in Deinem Beispiel.

Also das hier ist doch kein Labeldrucker?

Jedenfalls schicke ich dem Woosim Escape-Sequenzen. Das sollte doch auch mit dem Bixolon so sein?

Olli73 20. Dez 2022 15:57

AW: Drucken unter Android
 
Zitat:

Zitat von tkhandel (Beitrag 1516450)
Zitat:

Zitat von Olli73 (Beitrag 1516443)
Hattest du meine Testanwendung probiert?

ja aber da fehlte mir irgendwas konnte das Projekt nicht kompilieren

Ist zwar ein uraltes Projekt mit altem Delphi, aber es sollte doch zum Kompilieren gebracht werden können?

tkhandel 20. Dez 2022 18:13

AW: Drucken unter Android
 
Zitat:

Zitat von Olli73 (Beitrag 1516465)
Zitat:

Zitat von tkhandel (Beitrag 1516450)
Zitat:

Zitat von Olli73 (Beitrag 1516443)
Hattest du meine Testanwendung probiert?

ja aber da fehlte mir irgendwas konnte das Projekt nicht kompilieren

Ist zwar ein uraltes Projekt mit altem Delphi, aber es sollte doch zum Kompilieren gebracht werden können?

JstringToString kennt er nicht zum Beispiel

Olli73 21. Dez 2022 09:25

AW: Drucken unter Android
 
Zitat:

Zitat von tkhandel (Beitrag 1516471)
JstringToString kennt er nicht zum Beispiel

Wurde bestimmt in eine andere Unit (uses) verschoben...

TurboMagic 21. Dez 2022 17:20

AW: Drucken unter Android
 
Zitat:

Zitat von Olli73 (Beitrag 1516491)
Zitat:

Zitat von tkhandel (Beitrag 1516471)
JstringToString kennt er nicht zum Beispiel

Wurde bestimmt in eine andere Unit (uses) verschoben...

Ja, irgendwann in der Vergangenheit mal. Ist aber eine Weile her.

Olli73 21. Dez 2022 17:26

AW: Drucken unter Android
 
Ist halt, wie geschrieben, uralter Code.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz