AGB  ·  Datenschutz  ·  Impressum  







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

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 4 von 5   « Erste     234 5   
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#31

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 18. Feb 2022, 09: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
3.882 Beiträge
 
Delphi 12 Athens
 
#32

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 18. Feb 2022, 13: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 13:36 Uhr)
  Mit Zitat antworten Zitat
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 19. Feb 2022, 12: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 13:27 Uhr)
  Mit Zitat antworten Zitat
oakley

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 19. Feb 2022, 20: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
 
#35

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 20. Feb 2022, 12: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, 7x aufgerufen)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#36

AW: Drucken mit gleichzeitigem generieren eines PDFs

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

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 21. Feb 2022, 18: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
3.882 Beiträge
 
Delphi 12 Athens
 
#38

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 22. Feb 2022, 20: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 20:24 Uhr)
  Mit Zitat antworten Zitat
HolgerX

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

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 23. Feb 2022, 13:22
Hmm..

Deine Schritte stimmen nicht ganz!

- Ein Programm schickt den Druckauftrag (per Windows GDI) an einen installierten Drucker (Treiber, z.B. 'Mircosoft Print to PDF')

- Der Treiber Konvertiert die GDI-Daten in Rohdaten, welche der Drucker versteht.
(Handelt es sich hierbei um einen PostScript Drucker, dann sind die Daten danach PostScript)

- Die Roh-Daten werden dann an den Drucker Anschluss (Port, z.B. LPT/USB/IP oder auch Redmon) weitergeleitet und dieser Port-Treiber reicht diese dann an den Physikalischen Drucker weiter.

- Der Ausdruck erfolgt.

Hier kommt nun RedMon ins Spiel!

Wenn Redmon als Druckeranschluss angegeben wird, dann gibt Redmon diese nicht an den Drucker weiter, sondern ,je nach Konfiguration, an ein Script oder Programm.

Dieses Script kann dann mit diesen Roh-Daten machen, was es will, z.B. als .PS abspeichern, oder bei PostScript diese per GhostScript in ein PDF konvertieren, oder die Roh-Daten bearbeiten und an den 'echten' Druckeranschluss weiter leiten.

Wenn Du deine CMD-Zeile mit Ghostscript bei RedMon einträgst, dann werden die Daten direkt an GS geschickt, jedoch solltest Du hierfür eine separate Batch Datei als Ziel nehmen, wie es im Internet mehrfachst beschrieben wird.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.882 Beiträge
 
Delphi 12 Athens
 
#40

AW: Drucken mit gleichzeitigem generieren eines PDFs

  Alt 23. Feb 2022, 16:20
Deine Schritte stimmen nicht ganz!

- Ein Programm schickt den Druckauftrag (per Windows GDI) an einen installierten Drucker (Treiber, z.B. 'Mircosoft Print to PDF')
Ich hatte aber irgendwo gelesen dass dafür am Besten GhostScript PS Drucker installiert werden sollte,
das habe ich gemacht.
Damit kommen auch astreine .PS und nach Konvertierung PDF's raus.

Kann sein dass es mit "Microsoft Print to PDF" auch geht, aber dann muss man den ja mit Redmon umbiegen,
oder sich einen 2ten "Microsoft Print to PDF" installieren.

Ich denke der Trick ist, egal welcher Drucker, Redmon/MFileMon legen sich als Port an und fangen den Druck ab.
Das scheint soweit ja auch zu funktionieren.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:05 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