AW: Drucken mit gleichzeitigem generieren eines PDFs
Hmm..
Zitat:
Redmon stellt nur einen 'Anschluss' bereit, wie z.B. LPT1: oder IP:. Ein installierter Druckertreiber (hier am besten ein Drucker, welcher PhostScript erzeugt/verwendet) erzeugt und sendet die (Roh-)Daten an diesen 'Anschluss'. Dieser 'Anschluss' überträgt diese Daten an den Drucker (per LPT/IP/USB, oder welcher 'weg' auch immer). Der Drucker nimmt diese Daten dann entgegen und erzeugt den Ausdruck. Mit RedMon als 'Anschluss' werden die Daten nun nicht an eine Physikalische Schnittstelle/Drucker weitergegeben, sondern an ein anders Programm. An welches und (teilweise) auch wie kann in der Konfiguration des 'Anschlusses'/RedMon eingestellt werden. Was dann mit diesen Druckdaten von diesem Programm gemacht wird, ist für RedMon unerheblich. Ist dieses Programm nun ein Script, welches die Druckdaten an z.B. GhostScript weiter gibt, um damit PDFs zu erzeugen, können diese als Datei abgelegt werden. PostScript Druckertreiber deshalb, weil GhostScript aus PostScript PDFs erzeugen kann. Der 'MS Publisher Color Printer', fest bei Win10 dabei, erzeugt PostScript Druckerdaten. |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Zitat:
|
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hallo zusammen,
sorry, dass ich das hier nochmal aufwärme aber ich hatte bis jetzt dazu keine Zeit mehr mich damit zu beschäftigen. Ich bin da allerdings ein wenig weiter gekommen und zwar lasse ich ein PDF mit Bullzip erzeugen und dieses an anschließend auf einem festgelegten Drucker drucken. Hier gibt es 2 Probleme: 1. Mit fehlt der Hintergrund des Briefpapiers im PDF, 2. ich muss den Papier-Drucker fest in eine globalsettings.ini Datei schreiben und das Briefpapier darf nicht im Ausdruck erscheinen. Ich habe mir Redmon angesehen, aber das ist etwas zu komplex für mich, mir fehlt das Verständnis dafür. Funktioniert es unter Windows 10 noch, es ist ja auch schon etwas älter? Dann dachte ich, ich kann einen TCP Server verwenden und den Port 9100 "abgreifen" und aus der Datei, die ich dann schreiben lasse, einmal ein PDF machen und einmal an dem vom benutzer gewählten Drucker leiten.
Delphi-Quellcode:
Wenn ich über einen generischen Drucker mit lokaler IP 127.0.0.1 drucke, wird die Datei erzeugt. Drucke ich auf einem Drucker im Netzwerk macht er logischerweise nichts.
procedure TForm1.S1Execute(AContext: TIdContext);
var DStream, FStream : TStream; begin DStream := TMemoryStream.Create; AContext.Connection.IOHandler.ReadStream(DStream, -1, true); FStream := TFileStream.Create('c:\temp\xy.prn', fmCreate); DStream.Position := 0; FStream.CopyFrom(DStream, DStream.Size); FStream.Free; DStream.Free; end; Wie könnte ich die Datei, die dort erzeugt wird, einerseits ein PDF machen (am liebsten mit Bullzip, weil ich hier den Hintergrund separat mit einspielen kann) und andererseits die Datei an den vom Benutzer ausgewählten Drucker weiter leiten? Oder kann ich irgendwie die Daten vom Port 9100 "loggen" während der Druckauftrag zum vom Benutzer gewünschten Drucker übertragen wird und dann aus der entstandenen Datei einfach ein PDF machen? Viele Grüße Mirko |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hallo, was würde passieren wenn Du zwei mal druckst? Einmal in PDF und einmal an den Drucker?
|
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hallo,
also das Ganze kommt aus einer Fremdanwendung und ich habe keinen Einfluss auf den Druckauftrag oder wie oft gedruckt wird. Das Beste wäre wahrscheinlich den Auftrag ab zufangen, eine prn Datei schreiben zu lassen und diese dann zum Erstellung des PDF zu verwenden. So weit so gut aber es bestehen die beschriebenen Probleme. LG Mirko |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hmm..
Zitat:
Redmon kann die Druckdaten an dein eigenes Programm weiter leiten und dieses erzeugt daraus per z.B. GhostScript ein PDF dem Du den Hintergrund bei Aufruf von GS mitgibst. Zusätzlich dann noch ein Ausdruck auf einem Drucker deiner Wahl, hier dann ohne deinen Hintergrund! |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hallo Holger,
okay ich habe Redmon installiert und den Port RPT1 erzeugt. Ich leite den Ausdruck also zu meinem Programm um wo ich einmal das PDF erzeuge und einmal an den Drucker weiter leite. Wie komme ich an die Daten, die ans Programm übergeben werden?
Delphi-Quellcode:
Eventuell so aber was mache ich danach damit?
var
Input: TStream; begin Input := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE)); ... LG Mirko |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Redmon ist eine tolle Sache.
Das hier ist das Einzige was mich etwas stört, auch wenn es dann jetzt doch noch mit Win10 funktionert, scheint der zukünftige Support bei 0 zu liegen. Zitat:
|
AW: Drucken mit gleichzeitigem generieren eines PDFs
Ja das hab ich auch gelesen und deswegen dachte ich dass es mit Windows 10 nicht mehr läuft.
Eigentlich bräuchte man bei Redmon gar kein eigenes Programm oder? Ich bin jetzt soweit, dass ich ein PDF mit Ghostscript pdfwrite bekomme und dann aber den Ausdruck gleichzeitig an einen Netzwerkdrucker weiterleiten kann. Problem ist noch: Wie bekomme ich den Hintergrund ins PDF und auf dem Drucker wird nichts ausgedruckt. Egal was ich im Redmon Port einstelle. REDMON_OUTPUTPRINTER zeigt den richtigen Namen des Druckers aber egal ob Copy stdout to printer, Copy temporary file to printer oder Copy pipe to printer es kommt nichts an. LG Mirko |
AW: Drucken mit gleichzeitigem generieren eines PDFs
Hmm..
Wenn die Daten per Redmon mit StdOut geschickt werden, dann geht das:
Delphi-Quellcode:
Dann an der richtigen Stelle in einer Kopie des Streams dein Hintergrundbild einfügen (dazu brauchst Du PS Kenntnisse oder GOOGLE).
function ReadStdInStream(AStream : TStream):boolean;
var Stdin : THandleStream; BytesRead : Int64; Buffer : array[0..1023] of Byte; begin result := false; try StdIn := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE)); try StdIn.Seek(0,0); repeat BytesRead := StdIn.Read(Buffer,1024); if BytesRead > 0 then AStream.WriteBuffer(Buffer,BytesRead); until BytesRead <= 0; finally StdIn.Free; end; result := (AStream.Size > 0); except on E:Exception do begin // Fehlerbehandlung end; end; end; Oder erzeugst erst das PDF und fügst dann das Bild z.B. mit http://www.lagotzki.de/pdftk/index.html#background hinzu. Anschießend mit GS als PDF speichern. Zum Ausdrucken des original Streams kannst Du dann auch GS verwenden (Google ist auch hier dein Freund)... Redmon in Verbindung mit einem PS Druckertreiber ist notwendig um die PS-Daten korrekt zu erhalten (von jegweligem Programm aus). Dein Programm, um die Bearbeitung und die Weiche sauber zu machen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz