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
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 08: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
984 Beiträge
 
Delphi 6 Professional
 
#2

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 12: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
 
#3

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 14: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.185 Beiträge
 
Delphi 12 Athens
 
#4

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 14: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
 
#5

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 14: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 15:51 Uhr)
  Mit Zitat antworten Zitat
HolgerX

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 17. Feb 2022, 20: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 20:28 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.185 Beiträge
 
Delphi 12 Athens
 
#7

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 18. Feb 2022, 08:46
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
Ich muss mich da vielleicht korrigieren:
Es scheint sich hier jemand dem Redmon angenommen zu haben, und es in das MFileMon Projekt integriert zu haben.
https://github.com/lomo74/mfilemon
Binaries gibt es auch.
Das scheint jedenfalls aktuell und gepflegt zu sein, und könnte der Nachfolger des Redmon sein.
Habe jetzt nicht gecheckt ob es 1:1 dem Orginal Redmon entspricht, ich denke aber schon,
vielleicht weiß jemand mehr darüber.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.185 Beiträge
 
Delphi 12 Athens
 
#8

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 18. Feb 2022, 12:29
Ich habe das MFileMon mal getestet, hier die Dokumentation zur Installation.
MFileMon.pdf

So sieht die aktuelle Einstellung aus
MFileMon.jpg

Es scheint so zu funktionieren, allerdings bekomme ich kein PDF daraus, sondern immer nur ein .PS.
Wenn ich das .PS dann am Ende manuell via GS zu PDF konvertiere scheint alles OK zu sein.

Die Anleitung ist wohl OK, es fehlt womöglich nur eine kleine Änderung im Command feld.

Das Command soll meiner Meinung nach so funktionieren, dass via der Drucker via Pipe etwas an MFileMon schickt.
Allerdings soll der Haken bei Win10 nicht gesetzt sein, weil es da irgendwie anders funktioniert.

User command:
"C:\Program Files\gs\gs9.27\bin\gswin64c.exe" -dBATCH -dSAFER -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dAutoRotatePages=/PageByPage -r600 -sOutputFile="%f" -

!! Important: Keep traling hyphen -
This should be replaced by the input stream from the printer.

Vielleicht hat jemand Erfahrung mit der Konfiguration von MFileMon / Redmon / GS, und sieht den Fehler ?
Oder liegt es doch an einem Fehler in MFileMon ?

Geändert von Rollo62 (18. Feb 2022 um 12:36 Uhr)
  Mit Zitat antworten Zitat
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 19. Feb 2022, 11:23
Hallo Rollo,

habe in der Firma Redmon und zu hause MFileMon isntalliert.
In der Firma funnktioniert das Generieren eines PDFs mit dem Kommando das Du verwendest unter Filemon.
Hier zu Hause bekomme ich Redmon zwar installiert, bekomme aber beim Hinzufügen des Ports einen "unknown error".

MFileMon ließ mich den Port installieren, bekomme aber auch nur ein PS File heraus, genau wie Du.

Wenn ich -sOutputFile einen festen Dateinamen gebe funktiniert das bei Redmon. Bei MFileMon nimmt er den Dateinamen, der oberhalb eingegeben wurde.
Es sieht so aus, als würde er den Ghostscript Befehl gar nicht ausführen. Logdateien werden auch nicht geschrieben, egal was man im Dropdown eingibt.


LG

Mirko

Geändert von oakley (19. Feb 2022 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:54 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-2025 by Thomas Breitkreuz