AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Drucken mit gleichzeitigem generieren eines PDFs
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken mit gleichzeitigem generieren eines PDFs

Ein Thema von oakley · begonnen am 25. Feb 2020 · letzter Beitrag vom 8. Mär 2022
Antwort Antwort
Seite 3 von 5     123 45      
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#21

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 26. Mai 2020, 10:41
Hmm..

Verstehe ich das richtig, dass Redmon einen Drucker an einem eigenen Port bereit stellt und ich dann bestimmen kann welcher Ausdruck wohin geht?
Ich stelle im Redmon ein, das er ein PDF über Microsoft Print to PDF erzeugen und anschließend über meinen Canon IR3035 drucken soll.
Was sende ich an Redmon einen Druckauftrag oder eine PostScript Datei?

LG

Mirko
Nope....

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.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
UliTs

Registriert seit: 20. Mai 2020
Ort: 52074 Aachen
50 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 26. Mai 2020, 17:26
Gibt es eine Möglichkeit, einen Dateinamen als Voreinstellung anzugeben, der im Dialog nach "begindoc" automatisch vorgeschlagen wird?
Bräuchte man dafür nicht einfach nur einen eigenen Dialog davorzuschalten ?
Ja danke! Du hast Recht! Die Lösung war zu einfach .
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#23

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 16. Feb 2022, 21:55
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:
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;
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
677 Beiträge
 
Delphi 10.3 Rio
 
#24

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 07:18
Hallo, was würde passieren wenn Du zwei mal druckst? Einmal in PDF und einmal an den Drucker?
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#25

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 09:48
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
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#26

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 13:24
Hmm..

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.
Genau deshalb hatte ich Redmon vorgeschlagen (was auch noch unter Win10 läuft!).
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!
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#27

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 15:25
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:
var
  Input: TStream;
begin
  Input := THandleStream.Create(GetStdHandle(STD_INPUT_HANDLE));
  ...
Eventuell so aber was mache ich danach damit?

LG

Mirko
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#28

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 15:41
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:
Won't be implemented:

Remote printing to a printer that uses RedMon.
Support for Windows 10
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#29

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 15:43
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

Geändert von oakley (17. Feb 2022 um 16:51 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
969 Beiträge
 
Delphi 6 Professional
 
#30

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 21:20
Hmm..

Wenn die Daten per Redmon mit StdOut geschickt werden, dann geht das:

Delphi-Quellcode:
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;
Dann an der richtigen Stelle in einer Kopie des Streams dein Hintergrundbild einfügen (dazu brauchst Du PS Kenntnisse oder GOOGLE).
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...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)

Geändert von HolgerX (17. Feb 2022 um 21:28 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 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