Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Papierschneider eines POS Druckers ansteuern (https://www.delphipraxis.net/216297-papierschneider-eines-pos-druckers-ansteuern.html)

HolgerX 6. Dez 2024 16:05

AW: Papierschneider eines POS Druckers ansteuern
 
Hmm..

Zitat:

Zitat von TurboMagic (Beitrag 1543948)
Zitat:

Zitat von Redeemer (Beitrag 1543945)
Zitat:

Zitat von TurboMagic (Beitrag 1543938)
Nur die Frage: gibt's da nicht direkt was im Drucken API von Windows dafür?
Ich konnte bisher noch nichts finden.

Man stellt in den Druckeinstellungen von Windows ein, dass nach dem Druck abgeschnitten werden soll. So ist das zumindest bei unseren Citizens.

Naja, dann müsste ich aber für jeden einzelnen Bon (also nicht eine Rechnung, sondern eine Wertmarke z.B. für 1x Pommes)
ein eigenes Dokument erzeugen. Und der Anwender muss das in den Druckertreiber Einstellungen einstellen.
Nur: Anwender und was einstellen...
...riecht nach mehr Supportaufwand.

Wir verwenden Drucker von Zebra mit Cutter für Endlos-Etiketten, um hier unterschiedlich lange Etiketten zu erzeugen.
Hier aktivieren wir das Schneiden nach dem Druckende im Treiber.

Unsere Druckroutine kann dann einfach per TPrinter das Etikett drucken, muss nur am unteren Rand einen kleinen schwarzen Punkt setzen, damit das Etikett die richtige höhe hat und nicht nach der letzten Text-Zeile bereits abschneidet.

Im Treiber steht glaube ich dann auch Endlospapier oder A4.....

TurboMagic 7. Dez 2024 12:13

AW: Papierschneider eines POS Druckers ansteuern
 
Zitat:

Zitat von jaenicke (Beitrag 1543950)
Zitat:

Zitat von TurboMagic (Beitrag 1543938)
Ach ja, für C# scheint's was "out of the box" zu geben:
https://learn.microsoft.com/en-us/uw...ntjob-cutpaper

Das ist nicht nur für C#. Das kannst du auch problemlos in Delphi nutzen. Schau dir einfach mal die Unit Winapi.Devices.PointOfService.pas an, die im Rahmen der Windows RT API Schnittstellen mit Delphi mitgeliefert wird.

Zitat:

Zitat von jaenicke (Beitrag 1543950)
Zitat:

Zitat von TurboMagic (Beitrag 1543938)
Ach ja, für C# scheint's was "out of the box" zu geben:
https://learn.microsoft.com/en-us/uw...ntjob-cutpaper

Das ist nicht nur für C#. Das kannst du auch problemlos in Delphi nutzen. Schau dir einfach mal die Unit Winapi.Devices.PointOfService.pas an, die im Rahmen der Windows RT API Schnittstellen mit Delphi mitgeliefert wird.

Ich hab' mir die Unit mal grob angeschaut. Das sind lauter Interface Deklarationen.
Mir fehlt jetzt nur noch, wie ich so eine Interface Referenz bekomme.

Eine erste Google Suche mit Delphi mit als Suchbegriff hat noch nichts in der Richtung geliefert.
Naja, evtl. mal nach dem Mittagessen ohne Delphi als Stichwort suchen und dann schauen ob das was
adaptierbares raus kommt.

Die Frage wäre auch, ob ich das mit normalem GDI Drucken mischen kann. Diejenigen Interfaces in
der Unit die sich mit Textdrucken beschäftigen scheinen ja wieder Text direkt senden zu wollen;
womit man wieder direkt von den wenigen beim Drucker vorhandenen Schriftgrößen abhängig wäre.

Heutige POS Drucker sind aber auch für Grafikdruck schnell genug, d.h. ich würde eher eine Mischung
aus GDI Drucken und den Cut fähigen Interfaces dieser Unit bevorzugen.

Ist das technisch möglich und wie müsste ich das angehen?

Olli73 7. Dez 2024 12:33

AW: Papierschneider eines POS Druckers ansteuern
 
Was für ein Drucker ist es überhaupt?

Probiere doch Mal das mit control Font aus...

jaenicke 7. Dez 2024 14:05

AW: Papierschneider eines POS Druckers ansteuern
 
Zitat:

Zitat von TurboMagic (Beitrag 1543988)
Ich hab' mir die Unit mal grob angeschaut. Das sind lauter Interface Deklarationen.
Mir fehlt jetzt nur noch, wie ich so eine Interface Referenz bekomme.

Da hilft ChatGPT z.B. weiter.

Zitat:

Zitat von TurboMagic (Beitrag 1543988)
Heutige POS Drucker sind aber auch für Grafikdruck schnell genug, d.h. ich würde eher eine Mischung
aus GDI Drucken und den Cut fähigen Interfaces dieser Unit bevorzugen.

Dann solltest du die WinRT Geschichten nicht verwenden. Ich habe das nur verlinkt, weil du es erwähnt hattest. Aber dann solltest du auch alles damit machen.

Escapesequenzen kann man mit der erwähnten control Schriftart schicken, aber man kann diese auch direkt an den Drucker schicken. Wenn du GDI verwenden möchtest, solltest du den Weg gehen.

TurboMagic 7. Dez 2024 15:16

AW: Papierschneider eines POS Druckers ansteuern
 
Ok! Danke mal soweit. Die WinRT Geschichten sind ja eher eine Umsetzung mittels Druckerschriftarten usw.
und damit nicht so flexibel. Da hast du dann sicherlicht recht: entweder diese so verwenden wie im API
dort angegeben oder gar nicht.

jaenicke 7. Dez 2024 15:55

AW: Papierschneider eines POS Druckers ansteuern
 
Du kannst natürlich auch auf eine TBitmap rendern und diese dann lediglich auf eine Zeichenfläche kopieren. Das hat den Riesenvorteil, dass du diese zu Debugzwecken auch speichern kannst. Und du kannst sie als Vorschau im Programm anzeigen. Ich habe das auch selbst so umgesetzt.

Mit diesem Bild kannst du dann jegliche Schnittstelle nutzen, egal ob du die WinRT Funktionalität, einen Delphi-TPrinter oder das XML-Format von Epson verwendest. Du musst lediglich vorher schauen welche native Auflösung der Drucker hat, damit dort nicht skaliert werden muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr.
Seite 2 von 2     12   

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