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
Rollo62

Registriert seit: 15. Mär 2007
4.242 Beiträge
 
Delphi 12 Athens
 
#1

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.242 Beiträge
 
Delphi 12 Athens
 
#2

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
 
#3

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
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 19. Feb 2022, 19:53
Ich bin jetzt so weit, dass ich den StdOut vom Redmon in eine .ps Datei schreiben lasse und dann per Ghostscript umwandeln lasse.
Das ganze mache ich mit diesem Befehl:
Code:
"C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe" -sDEVICE=pdfwrite -r300 -dBATCH -dNOPAUSE -sFONTPATH=%windir%\fonts -dEmbedAllFonts -dSubsetFonts -sPAPERSIZE=a4 -sOutputFile="c:\temp\test.pdf" c:\temp\bg.ps c:\temp\word.ps
bg.ps ist ein kleines Postscript File mit einem Test für einen Schriftzug im Hintergund.

Code:
<<
/BeginPage
{
  2 eq { pop false }
  {
    gsave
    /Arial findfont 40 scalefont setfont
    newpath
    .90 setgray
    100 700 moveto 30 rotate
    (test test test) false charpath
    1 setlinewidth stroke
    grestore
    true
  } ifelse
} bind
>> setpagedevice
Wenn ich aus Word ein PDF Dokument mit Calibri als Schrift erzeuge rendert Ghostscript die Schrift als Grafik. Bei Arial als richtigen Text.

-sFONTPATH=%windir%\fonts -dEmbedAllFonts -dSubsetFonts hiermit stelle ich doch eigentlich ein, dass die Schriften aus dem Windows Font Verzeichnis gezogen und eingebettet werden sollen oder?

LG

Mirko
  Mit Zitat antworten Zitat
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 20. Feb 2022, 11:30
Ich wollte Euch nur den aktuellen Stand mitteilen, falls jemand sowas auch nochmal machen möchte.

Ich habe die Ghostscript DLL eingebunden und lasse in meinem Programm jetzt aus der *.PS Datei ein PDF erzeugen.
Die Initialisierung und das Laden der DLL mache ich über die angehangene Unit.

So starte ich die Konvertierung zum PDF.
Delphi-Quellcode:
oGS := TGhostScript.Create;
oGS.ExecuteWithArgs(GetArgs);
GetArgs:

Delphi-Quellcode:
function TForm1.GetArgs: APAnsiChar;
var
  oArgs: APAnsiChar;
begin
  setlength(oArgs, 0);
  AddArg(oArgs, 'gs');
  AddArg(oArgs, '-r300');
// AddArg(oArgs, '-dSAFER');
  AddArg(oArgs, '-dBATCH');
  AddArg(oArgs, '-dNOPAUSE');
  AddArg(oArgs, '-sDEVICE=pdfwrite');
  AddArg(oArgs, '-dPDFSETTINGS=/ebook');
  AddArg(oArgs, '-sFONTPATH=%windir%/fonts');
  AddArg(oArgs, '-dEmbedAllFonts=true');
  AddArg(oArgs, '-dSubsetFonts=true');
  AddArg(oArgs, '-dNumRenderingThreads=8');
  AddArg(oArgs, '-sOutputFile=c:\temp\' + filename);
  AddArg(oArgs, '-f');
  AddArg(oArgs, 'c:\temp\xy.ps');
  result := oArgs;
end;
Funktioniert soweit gut, jetzt muss ich nur noch schauen, wie ich die PS Datei zum Drucker bekomme.
Das sind Canon Image Runner, die sollten Postscript können.

LG

Mirko
Angehängte Dateien
Dateityp: zip uGhostScript.zip (1,2 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.242 Beiträge
 
Delphi 12 Athens
 
#6

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 21. Feb 2022, 13:37
Ich bin jetzt so weit, dass ich den StdOut vom Redmon in eine .ps Datei schreiben lasse und dann per Ghostscript umwandeln lasse.
Also schafft Redmon das in einem Rutsch, oder musst Du da noch manuell Hand anlegen ?

Wie gesagt, bei mir kommt leider immer nur .ps raus, ist aber bei MFileMon vielleicht ein etwas anderes Redmon.
Ich habe es mit dem orginalen Redmon aber nicht getestet.

Ein Gedanke war dass man damit lebt dass einfach nur .ps ausgegeben wird,
und dann im Hintergrund ein Programm oder Service laufen hat, welches auf den Ausgabepfad lauscht.

Sobald eine neue .ps Datei angekommen ist könnte das Programm
- die Konvertierung von .ps zu PDF automatisch anstossen ( per Batch-Datei )
- die orginale .ps löschen
- und womöglich das Ergebnis an einen echten Drucker schicken, wenn gewünscht
- die generierte .PDF vielleicht noch irgendwohin verteilen

Oder war es dass, was Du unten beschreibst ?

Geändert von Rollo62 (21. Feb 2022 um 13:39 Uhr)
  Mit Zitat antworten Zitat
HolgerX

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

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

1.)
Redmon kann die Druckdaten direkt als Stdout/-in an das aufgerufenen Programm weiter geben.

2.)
Wenn mit der API (.DLL) von Ghostscript gearbeitet wird, kann dieser Stream direkt dorthin weiter gereicht werden, ohne zwischenspeichern als .ps.
Bei Verwendung der GSxx.exe muss dieser Stream meinet Wissens zwischengespeichert werden (hier die .ps) da die Exe eine Datei als Input benötigt..

3.)
Das Erzeugte PDF kann dann zum Einen direkt wieder mit GS an den eigentlichen Drucker geschickt werden und zum Anderen mit PDFTK um dein Hintergrundbild ergänzt werden.



mfilemon dürfte eine umbenannte Kopie von Redmon sein, denn nicht nur die Dialoge, sondern auch die Anleitung kommt mir von Redmon oder FreePDF bekannt vor.
Ob dies gepflegt wird, mag ich bezweifeln, da die Anleitung auch nur bis Win8 geht...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Rollo62

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 22. Feb 2022, 19:19
Ja, MFileMon scheint ein Ableger von Redmon zu sein, er ist aber aktuell gepflegt.
Während Redmon ziemlich alt ist.

Ich hatte deshalb das MFileMon gesucht, weil igendwo stand das Win10 nicht mehr richtig funktioniert.
Eben weil das Übertragen zum Stdout irgendwie geändert sei.

Offensichtlich kommen ja die Daten im MFileMon auch an, als PS, nur scheint dann das GS nicht angestossen zu werden.
Ich habe immer noch die Hoffnung dass dies ein einfaches Parameter-Problem ist.

Falls das alte Redmon aber immer noch aktuell und amtlich ist, dann ist MFileMon natürlich überflüssig.
Ich hatte mit dem Thema lange nichts zu tun, deshalb kenne ich die Historie von Redmon nicht so gut,
aber könnte demnächst auch eine gute PDF-Drucker Ausgabe brauchen.

Wäre schön wenn man da ein einfaches Kochrezept finden würde

Über den gazen Prozess bin ich mir auch nicht sicher, meine Vermutung:
- Ein Drucker sendet was zum GS-PS Printer
- Dieser erzeugt daraus einen PS Stream
- Und ist verbunden mit MFileMon (oder Redmon ) Port
- Also kommt der PS Stream via dem MFileMon Port zum eigentlich GS, welches Konvertieren soll (gemäß pdfwrite Parameter)
- GS Erzeugt dan mit dem MFileMon (Redmon ) Script die PDF Datei
- GS Speichert die GS Datei an dem festgelegtem Ort, und kann fortlaufenden Filnamen berücksichtigen

So verstehe ich das Ganze, bis auf die letzen beiden Punkte funktioniert es ja anscheinend.

Ob Redmon grundsätzlich was anderes macht als MFileMon sehe ich eigentlich nicht.

Geändert von Rollo62 (22. Feb 2022 um 19:24 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 15:38 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