Autor Beitrag
DieTerMiete
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 15.05.08 13:38 
Dann könnte dir das helfen ;-):
www.delphi-library.d...nd+pollen_36037.html
DieTerMiete Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: Fr 16.05.08 11:08 
user profile iconiKilledKenny 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Fr 16.05.08 11:18 
Z.B. Suche bei Google TPRINTERDEFAULTS und Suche bei Google DELPHI TDOCINFO1, jeweils der 1. Treffer.
DieTerMiete Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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!!!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 16.05.08 19:50 
du hast doch D7, weshalb nimmste nicht rave, via code based printing? das sollte doch problemlos funzen...
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: Fr 16.05.08 21:34 
user profile iconGrenzgaenger 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



BeitragVerfasst: Fr 16.05.08 23:39 
Der Link dn.codegear.com/article/30329 sollte dir das wichtigste zeigen... <HTH>
DieTerMiete Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Sa 17.05.08 15:22 
user profile iconDieTerMiete 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.

ausblenden 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); // uses Printers einfügen!
  Rewrite(Drucker);
  for i:=1 to xxx do
    begin
      c:= ...; // Hole Dir das Byte irgendwo her und mach ein Char draus
      Write(Drucker,c);
    end;
  CloseFile(Drucker);
end;

ub60
DieTerMiete Threadstarter
Hält's aus hier
Beiträge: 9

Win XP
Delphi 7Prof.
BeitragVerfasst: 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ß...