Autor |
Beitrag |
DieTerMiete
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: Do 15.05.08 09:47
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
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 15.05.08 12:40
Ich weiß gerade nicht so genau was dein Problem ist. Es gibt die Unit Printers, und dann kannst du via TPrinter drucken. Beispiele dazu findest du über die Suche oder z.B. hier:
delphi.about.com/od/...ng_with_TPrinter.htm
Oder was meinst du sonst mit "reine Daten schicken"?
|
|
DieTerMiete 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 15.05.08 13:38
|
|
DieTerMiete 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: Do 15.05.08 14:21
Nicht ganz, aber trotzdem ne schöne Sache! werde ich mir mal als nächstes reinziehen.
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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: 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 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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.
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
      
Beiträge: 24
|
Verfasst: 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.
gd.tuwien.ac.at/soft...hi/newl/midxd40f.htm
rawprint.zip ist gleichzeitig angehängt.
Ist zwar schon älter, funktioniert bei mir aber auch unter Turbodelphi.
HTH
G.
|
|
iKilledKenny
      
Beiträge: 394
Erhaltene Danke: 8
Win XP
D5 Prof, C# Express 2005
|
Verfasst: Fr 16.05.08 11:18
Z.B. TPRINTERDEFAULTS und DELPHI TDOCINFO1, jeweils der 1. Treffer.
|
|
DieTerMiete 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: Fr 16.05.08 11:53
Hey, Freude!!!
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!!!
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 16.05.08 19:50
du hast doch D7, weshalb nimmste nicht rave, via code based printing? das sollte doch problemlos funzen...
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: 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 dazu geschrieben. Anschließend kannst du das Dokument einfach per
RichEdit1.Print('Dokument-Name');
drucken.
Grüße,
Yogu
|
|
DieTerMiete 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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ß...
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 16.05.08 23:39
Der Link dn.codegear.com/article/30329 sollte dir das wichtigste zeigen... <HTH>
|
|
DieTerMiete 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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.
Ich werde es auf jeden Fall ausprobieren und berichten.
Gruß und ein schönes Wochenend...
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Sa 17.05.08 15:22
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 (  ) 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 
Hält's aus hier
Beiträge: 9
Win XP
Delphi 7Prof.
|
Verfasst: 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: 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ß...
|
|