Entwickler-Ecke
Sonstiges (Delphi) - Datei zum Standarddrucker schicken.
DieTerMiete - Do 15.05.08 09:47
Titel: Datei zum Standarddrucker schicken.
Hallo,
mein erster Post hier, bin ganz aufgeregt!
Bisher hat mir die Suche immer weitergeholfen aber bis jetzt hab ich zu meinem Problem noch nichts gefunden.
Ich habe ein Programm geschrieben, das Daten aus einer Datenbank auf Etiketten druckt.
Bisher löse ich das so, das ich,
1. eine Textdatei erzeuge mit den Daten die gedruckt werden sollen. Die Daten sind im ZPL-Format (Zebra Printer Language) ähnlich Postscript.
2. eine Batchdatei erzeuge die die Textdatei zur Parallelen schnittstelle schickt. (copy druckdaten.txt prn)
3. mittels Doscomponent rufe ich die Batch auf und die Daten kommen aus dem Drucker.
Um die ganze sache etwas sauberer zu bekommen suche ich etwas das die reinen Daten zum Standarddrucker schickt.
aber wie und was?
Danke im Vorraus,
Gruß Chriss
DieTerMiete - Do 15.05.08 13:36
Hmmm,
ich möchte halt einfach meine erzeugte Datei zum Drucker schicken. Die Datei ist schon so, das der Drucker sie versteht.
Quasi das gleiche was ich jetzt über die "Krücke" mit der Batch mache. (copy Druckdatei prn) also umlenken der Datei auf die Parallele Schnittstelle.
Mit Printers hab ich jetzt schon rum gemacht aber irgendwie nicht das gefunden, womit die Datei unverändert am Drucker ankommt.
Ich hoffe man versteht was ich meine. :?
Gruß Chriss
DieTerMiete - Do 15.05.08 14:21
Nicht ganz, aber trotzdem ne schöne Sache! werde ich mir mal als nächstes reinziehen. :wink:
Ich will ja eigentlich nicht an eine Schnittstelle gebunden sein, ich möchte die Datei einfach zum Standarddrucker schicken.
Wenn ich das z.B. so mache:
Delphi-Quelltext
1: 2: 3: 4:
| Printer.Title := 'Zetteldruck'; Printer.BeginDoc; Printer.Canvas.TextOut(100,100,'Test'); Printer.EndDoc; |
Bekomme ich zwar 'Test' gedruckt aber das ist doch wenn ich es recht verstehe als Grafik zum Drucker geschickt worden. von daher nicht das was ich gebrauchen kann.
Ich will eine Datei bzw. einen String zum Drucker schicken.
Gruß...
jaenicke - Do 15.05.08 14:25
Nur so nebenbei: via Copy nach prn geht das nicht, wenn es ein USB-Drucker ist. Um Copy zu benutzen müsste ein USB-Drucker freigegeben werden und dann über die Netzwerkadresse angesprochen werden statt via prn...
DieTerMiete - Fr 16.05.08 06:05
Moin moin,
Klar, das geht nur wenn es ein Drucker an LPT1 ist. mit einer weiteren "Krücke" bekommt man das aber auch gelöst.
Mittels "Net use LPT1 'Druckerfreigabenamen'" kann man die Schnittstelle auf einen Netzwerkdrucker oder einem anderen freigegebenen Lokalen Drucker umleiten.
Gruß...
iKilledKenny - Fr 16.05.08 08:25
Schau dir mal TPrinterDefaults und TDocInfo1 an. Ich mache das mit einem Barcodedrucker und einem Steuerfile genauso. Weitere nützliche Dinge: OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter, EndDocPrinter, ClosePrinter
DieTerMiete - Fr 16.05.08 11:08
iKilledKenny hat folgendes geschrieben: |
Schau dir mal TPrinterDefaults und TDocInfo1 an. Ich mache das mit einem Barcodedrucker und einem Steuerfile genauso. Weitere nützliche Dinge: OpenPrinter, StartDocPrinter, StartPagePrinter, WritePrinter, EndPagePrinter, EndDocPrinter, ClosePrinter |
Dank dir, ich mache übrigens auch Barcodes. :wink:
Aber wo soll ich mir die Sachen denn ansehen? Sorry, stehe da jetzt etwas auf dem Schlauch weil die Delphi Hilfe schmeißt zu den Begriffen nichts raus. :(
Gruß...
gfehmke - Fr 16.05.08 11:16
Hi
Ein ähnliches Problem ( erzeugen von PCL-Escapesequenzen und Ausgabe an den Standarddrucker unter Umgehung eines Druckertreibers ) habe ich mit der TRAWPrinter-Komponente von Przemyslaw Jankowski gelöst.
http://gd.tuwien.ac.at/softeng/delphi/newl/midxd40f.htm
rawprint.zip ist gleichzeitig angehängt.
Ist zwar schon älter, funktioniert bei mir aber auch unter Turbodelphi.
HTH
G.
DieTerMiete - Fr 16.05.08 11:53
Hey, Freude!!! :D
aus der zweiten Suche, der "Delphi-Fundgrube", dort gibt es eine Procedure "DruckeRoh_String(DiesenText:string);"
Das geht schon genau in die Richtung die ich brauche!
Das werde ich mir jetzt mal genauer reinziehen.
Danke!!!
Delete - Fr 16.05.08 19:50
du hast doch D7, weshalb nimmste nicht rave, via code based printing? das sollte doch problemlos funzen...
Yogu - Fr 16.05.08 20:23
Hallo,
wenn du ohne Bilder auskommst, kannst du auch einfach mit einem
RichEdit drucken. Ich habe hier sogar mal ein
kleines Tutorial [
http://www.delphi-forum.de/viewtopic.php?p=484862#484862] dazu geschrieben. Anschließend kannst du das Dokument einfach per
RichEdit1.Print('Dokument-Name');
drucken.
Grüße,
Yogu
DieTerMiete - Fr 16.05.08 21:34
Grenzgaenger hat folgendes geschrieben: |
du hast doch D7, weshalb nimmste nicht rave, via code based printing? das sollte doch problemlos funzen... |
Ahhh, das hört sich ja mal gut an!
hatte jetzt schon angefangen die oben von mir genannte Procedur so umzubasteln das ich eine Datei übergebe und die soll dann als Text zum Drucker geschickt werden.
aber mit Rave?! das find ich gut, leider bin ich in Rave (noch) etwas unterbelichtet. :?
Gib doch bitte noch ein wenig info. Hatte anfang der Woche erst meinen ersten brauchbaren Report mit Rave erstellt.
Gruß...
DieTerMiete - Sa 17.05.08 12:36
Danke, ich werde das am Montag ausprobieren.
Wird denn da wirklich der Text übergeben oder der Text als Grafik? scheint mir fast so. :gruebel:
Ich werde es auf jeden Fall ausprobieren und berichten.
Gruß und ein schönes Wochenend...
ub60 - Sa 17.05.08 15:22
Titel: Re: Datei zum Standarddrucker schicken.
DieTerMiete hat folgendes geschrieben: |
Hallo,
Um die ganze sache etwas sauberer zu bekommen suche ich etwas das die reinen Daten zum Standarddrucker schickt.
aber wie und was?
|
Nach den vielen abenteuerlichen ( :lol: ) Vorschlägen hier mal die Puristen-Lösung für eine byteweise Übertragung an den Drucker ohne Zusatzkomponenten. Soooo schwer ist das auch nicht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var Drucker : TextFile; i : Integer; c : Char; begin AssignPrn(Drucker); Rewrite(Drucker); for i:=1 to xxx do begin c:= ...; Write(Drucker,c); end; CloseFile(Drucker); end; |
ub60
DieTerMiete - Mi 21.05.08 20:10
Um hier noch einen Abschluß rein zu bekommen,
Ich kam leider erst heute dazu weiter zu machen.
Ich hab jetzt also von hier:
http://www.delphi-fundgrube.de/faq13.htm die Procedur "DruckeRoh_String(DiesenText:string);" soweit umgebastelt das ich ihr die Datei die ich zum Drucker schicken möchte übergebe, das zusammen mit dem Namen des Druckauftrages.
Meine Procedur ließt nun die Datei Zeilenweise ein und schickt sie zum Drucker.
Zu beachten dabei ist noch, das man dem Drucker die Zeilenumbrüche mitteilt! (#13#10 anhängen) sonst gibt es sehr merkwürdige Effekte bis gar keinen Effekt mehr. :?
Danke an alle, Gruß...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!