Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Druckdatenstrom ? (https://www.delphipraxis.net/59423-druckdatenstrom.html)

goose33 22. Dez 2005 09:13


Druckdatenstrom ?
 
Hallo,

folgendes Problem :

Ich möchte einen Druckdatenstrom abfangen und diesen verändern.
Verändern in dem Sinne das ich unter das zu druckende ein Formular legen möchte . So eine
Art Kopfbogen also.

Ist das irgendwie möglich ?

Matthias

marabu 22. Dez 2005 09:36

Re: Druckdatenstrom ?
 
Hallo Matthias,

bei mir ist das eine Funktionalität des Druckers. Wenn dein Drucker das nicht beherrscht oder du vom Drucker unabhängig sein möchtest, dann ist vielleicht ein virtueller Drucker ein Lösungsansatz für dich.

Grüße vom marabu

goose33 22. Dez 2005 10:22

Re: Druckdatenstrom ?
 
Hallöchen,

naja nicht wirklich, den hab ich schon probiert.
Damit geht das nicht was ich machen muss.

Also es steht irgendwo ein einfacher Rechner als Printserver.
Darauf wird von allen Workstations gedruckt. Die Workstations geben als Drucker nur den Port an,
also 192.168.100.10:lp0 ( lp0 MUSS die Freigabe sein !! ) Geht aus dem Programm nicht anders.

Der Datenstrom wird dann an den Printserver gesendet und dort muss ein Formular
unterlegt werden ( Briefkopf meinetwegen ) und dann wird erst gedruckt.

Auf dem Printserver sind dann alle Drucker der "Firma" per Druckerfreigabe installiert.

So soll es funktionieren.

Wie kann ich das denn nur lösen ?
Muss doch irgendwie gehen oder ?

Matthias

franktron 22. Dez 2005 13:30

Re: Druckdatenstrom ?
 
Also das wird wircklich mit dem Drucker gemacht die meisten Grösseren Laserdrucker können das.

Ich habe das auch noch nicht anderes gesehen bis auf das die zu Druckende Software das selbst macht.

goose33 22. Dez 2005 13:40

Re: Druckdatenstrom ?
 
Hallöchen,

naja, der Drucker kann das schon, is ja ein Laserdrucker.
Das Problem ist einen Datenstrom abzufangen ( kommt per 192.168.100.10:lp0 ) und
dann diesen zu verändern ( ein Formular da drunter zu legen.

Matthias

goose33 28. Dez 2005 10:14

Re: Druckdatenstrom ?
 
Hallööchen,

ich wärm das ganze nochmal auf.
Vielleicht gibt es ja irgendwie die Möglichkeit den Datenstrom abzufangen und den zusammen
mit einem Bild ( dem Formular was unter den geschriebenen Text soll ) zu drucken ?

Also eigentlich 2 Bilder übereinander.
Das Problem den Datenstrom erst mal abzufangen besteht allerdings immer noch.

Vielleicht kann ja doch jemand helfen ?

Matthias

Ps.: Guten Rutsch ins neue Jahr

Ratte 28. Dez 2005 11:25

Re: Druckdatenstrom ?
 
Müssen die Daten direkt an den Drucker? Ansonsten könntest du die Daten ja an einen Druckertreiber, der Bilder erstellt umleiten, das Bild mit dem Hintergrund zusammenfügen und dann erst an den eignetlichen Drucker schicken.

mfg,
Ratte

goose33 28. Dez 2005 11:34

Re: Druckdatenstrom ?
 
Hallöchen,

also das Programm aus dem gedruckt werden MUSS erlaubt nur die Einrichtung eines Druckers an der wartesclange lp0. Also die zu druckenden Daten werden an (z.B.) 192.168.100.207:lp0 gesendet.
Auf dem Rechner ist eine Warteschlange ( lp0 ) eingerichtet die den Datenstrom dann an den drucker sendet.
Anders geht das leider Programmtechnisch nicht.

Ich müsste also diese Warteschlange abfangen, das Formular drunterlegen und dann das
ganze an den Drucker senden.

Hoffe das war so verständlich ?

Matthias

Ratte 28. Dez 2005 11:40

Re: Druckdatenstrom ?
 
Muss das Bild unter alle Ausdrucke gelegt werden? Das habe ich nicht ganz sicher verstandne.

mfg,
Ratte

goose33 28. Dez 2005 11:43

Re: Druckdatenstrom ?
 
Hallöchen,

ja, es gibt ein Formular ( is so eine Art Briefkopf , oben steht der Firmenname und unten so ein Impressum ) das muss unter jeden Druck unterlegt werden.
Es gibt also auch nur dieses eine Formular.

Matthias

Ps.: Dank Dir

Ratte 28. Dez 2005 11:53

Re: Druckdatenstrom ?
 
könnte man nicht den Bilddrucker in die Warteschlange lp0 legen und den Drucker irgendwo anders? Dein selbstgeschreibenes Programm wäre ja nicht auf lp0 angewiesen und könnte den Drucker auch an einer anderen Schnittstelle ansteuern. Und das Hauptprogramm liefert seine Daten weiter an lp0, dein Programm verändert die erstellte Bilddatei und gibt diese an den eigentlcihen Drucker weiter.

mfg,
Ratte

Flocke 28. Dez 2005 12:50

Re: Druckdatenstrom ?
 
Also normalerweise macht man das mit vorgedrucktem Briefpapier :mrgreen:

Als Tipp für ein mögliches Vorgehen:
1. Schreibe eine DLL, die du über SetWindowsHookEx in jeden Prozess einfügst.
2. Diese DLL prüft ob es sich um die betreffende Anwendung handelt.
3. Wenn ja, dann wird z.B. die Prozedur StartPage mit einem API-Hook umgeleitet.
4. Für diese DLL schreibst du eine kleine Dummy-Anwendung, die in Autostart aufgerufen wird (oder z.B. einen Dienst)

In der umgeleiteten Routine (3) kannst du dann zunächst das originale StartDoc durchführen lassen und dann den Briefkopf in den DC zeichnen (zur Not einfach ein Metafile abspielen).

Ein Beispiel für eine Injection-DLL findest du z.B. hier.
Funktionen für Code-Hooks gibt's z.B. von Brechi (hier) oder auch von mir (hier, Beispiel).

goose33 28. Dez 2005 13:11

Re: Druckdatenstrom ?
 
Hallöchen,

ich danke Dir erst mal.
Heut abend werde ich mich darum mal kümmern und mir die Links
mal durchlesen.
Schaff es jetzt leider nicht mehr.

Ich meld mich sicher nochmal .

Danek Dir erst mal !!

Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 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 by Thomas Breitkreuz