gruenesossemitspeck
Goto Top

Maximale Papierdimensionen für PDF Druck (Ghostscript)

Guten Tag allerseits,
ich schlage mich seit ein paar Tagen mit einem Problem herum... ein Kunde möchte ein PDF über einen Ghostscript basierten Drucker ausdrucken.
Dimensionen: 23 Meterx84 cm

Die Software hat auch einen PDF Exporter der auf den PDF Tools basiert, das generiert ein PDF mit genau den Wunschmaßen.
Nur will der Kunde einen Druckprozeß verwenden, und Windows skaliert die Ausgabedei leider immer auf A0 quer.

Der Druckprozeß beinhaltet die Erzeugung einer PDF Datei und eine Ghostscript-Konvertierung.

Für die PS Generierung wird ein generischer Microsoft Postscript Drucker verwenet (pscript.drv) , der kommt mit einer .ppd Datei in dem nur die Papierformate bis A0 drinstanden sowie "Letter".
Also hab ich in die PPD Datei ein Format 2300x84 eingetragen, die Milimeter in Windows-Einheiten umgerechnet ( 1 mm = 2,83 Rastereinheiten, vermutlich früher mal TWIPS genannt) und hab dann 65090x2377 eingetragen, hab auch die max printable Area angepaßt.

Ergebnis: der Postscript Treiber druckt eine .ps Datei, die 2300x84 cm groß ist, das Ghostscript aber scheint das "Übermaß" nicht zu kennen und irgendwie ist dem Ganzen keine Debugmeldung und kein Log abzugewinnen. In den "Print server properties" ist eine Log-Funktion in den Port-Properties drin, aber dem ist auch nur zu entnehmen, daß das Papierformat korrekt als PS erzeugt wurde, und dann verliert scih die Spur.

Weiß jemand wie man in Ghostscript ein Log aktiviert? (9.3.3) Oder gibts irgendwo Limits?
Mit 70x200 cm hab ich auf genau diesem Weg einen korrekte PDF Datei hingeriegt, warum gehts mit 2300x84 cm nicht?

Content-ID: 1853701072

Url: https://administrator.de/contentid/1853701072

Ausgedruckt am: 21.11.2024 um 15:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 07.02.2022 um 12:26:08 Uhr
Goto Top
Moin,

"man ghostscript" hat nicht geholfen?

Fehler werden auf stderr ausgegeben, Du solltest also mal Ghostscript manuell aufrufen und die Fehlerausgabe in eine Datei umleiten. ich vermute mal, daß beim automatischen Aufruf des Ghostscript-Backends eine Papiergröße vorgegeben wird udn deshalb die Beschränkung kommt.

lks

PS: Ich würde für solche Zwecke einen RasPi, NUC oder eine VM jeweils mit linux und CUPS hinstellen. Da hast Du mehr Variationsmöglichkeiten als mit Windows.
TomTomBon
TomTomBon 08.02.2022 um 10:23:00 Uhr
Goto Top
Guten Morgen,
wie LKS schon sagte, einmal händisch alles eingeben in die CMD könnte die Lösung sein.
Bzw, besser aus meiner Sicht, dies lösen mit Linux, wie LKS ebenfalls schon sagte face-wink .
CUPS bietet einen PDF Modus.

Windows ist leider sehr beschränkt in den Größenmodi.
Selbst A0 wird von MS nicht immer in allen Versionen unterstützt.

Nicht vergessen:
Linux kann fast alles, nur muss man Spezialist sein um dies zu implementieren.
Windows muss mit / vin vielen nicht so gut Könnern bewältigbar sein face-smile
TomTomBon
TomTomBon 08.02.2022 um 10:35:00 Uhr
Goto Top
Kleine Nachfrage

Nur will der Kunde einen Druckprozeß verwenden, und Windows skaliert die Ausgabedei leider immer auf A0 quer.
Der Druckprozeß beinhaltet die Erzeugung einer PDF Datei und eine Ghostscript-Konvertierung.

Soll heißen der Kunde will eine PS UND eine PDF Datei?
Oder will er das "nur" ausdrucken mittels PS.

Die PDF sollte die Original genommen werden des Herstellers.
Ein Skript kann das alles nicht so umsetzen.

Wenn der Kunde sich vorstellt das das Ergebnis besser ist wenn er das erst in eine PS Datei umbastelt..
Bei der Größe wird er denke Ich mal Plotter verwenden.

Und wenn Ich mir das was Ich mit dem Kollegen der unsere Plotter betreut (hat) ins Gedächnis rufe,
Ist das Verhalten der Plotter SEHR spezifisch.
Die alten haben XP Emb PCs integriert gehabt die das umgesetzt haben.

-->
Nur mit den Hersteller Tools / Treibern / Vorschriften arbeiten.
Bzw beim Hersteller anfragen.

Aber Ich weiß.
Der Kunde meint es besser zu wissen und degradiert das Wissen des Spezialisten den er sich dafür geholt hat.
Kenne Ich.
Das Schlimmste ist:
Viele dieser Menschen sind ansonsten richtig nett.
Bei anderen würde man sonst schneller andere Haltungen annehmen face-wink
GrueneSosseMitSpeck
Lösung GrueneSosseMitSpeck 08.02.2022 aktualisiert um 22:21:14 Uhr
Goto Top
also die LÖSUNG:
1.) im Druckername.ppd viermal das "Sonderformat" eintragen
2.) die Windows API hat ein GetPaperSizes() Aufruf, der macht zunächst einen Namensvergleich und wenn der nichts findet, einen Dimensionsvergleich. Wenn Treffer, dann wird die Größe genommen
Das hab ich gemacht.
3.) bis hierhin ist es richtig, die .ps Datei enthält also die korrekte Größe. Aber jetzt wird die gs.exe angestoßen und mit ein paar hardcoded Parametern gefüttert, auf die ich keinen Einfluß hab.
4.) noch ein wenig gegoogelt...
https://www.ghostscript.com/doc/current/Use.htm#Known_paper_sizes
und siehe da
a) checken ob GS die gs_init.ps überhaupt lädt.
b) wenn ja, dann wird das maximlae Papierformat noch mal aus gs_statd.ps gelesen...

Die Lösung: man baut das Sonderformat hier auch ein, und fortan kennt Ghostscript auch diese Papiergröße, und kriegt das Gewünschte raus.

Das Problem: ich supporte hier ein Third Party Produkt... aber nur weil der zuständige Entwickler durch drei Wunderinder ersetzt wurde, und die sind dumm wie Stroh und unflexibel wie Gußeisen und wissen noch nicht mal wie man das Wort Postscirpt richtig buchstabiert... und dem Kunden fällt das natürlich überhaupt nicht ein, daß sein Format hauptsächlich mal deshalb nicht unterstützt wird, weil alle Drucker in Windows immer auf die physikalsichen Dimensionen der Ausgabegeräte zugeschnitten sind und das Größte was ich mal in meiner Apple-Systemhauszeit in ein Grafikbüro schleppen mußte war ein Tintenplotter mit 1,20m Breite... also A0 Quer. 70cm x 2 Meter wurde in älteren Windows-Versionen vom HP Desingjet Treiber abgedeckt, der hatte irgendwie eine Option die beliebige LÄNGEN erlaubte solange man es mit der Breite nicht übertrieben hat. Den hat MS aber in Server 2008R2 und in Windows 7 rausgeworfen. Wer aber 23 Meter BREIT drucken will dem muß bewußt sein daß da echte Handarbeit anfällt... PPD Dateien hacken gehörte früher (meine Apple Systemhauszeit war 1993-1995) zum Tagesgeschäft sonst hätte ich dem Kunden auch nur sagen können, stell mal deinen PDF Prozeß um, schließlich kann unsere Software ja einen nativen Export nach PDF ohne Drucken...
Lochkartenstanzer
Lochkartenstanzer 08.02.2022 aktualisiert um 23:33:48 Uhr
Goto Top
Zitat von @GrueneSosseMitSpeck:

PPD Dateien hacken gehörte früher (meine Apple Systemhauszeit war 1993-1995) zum Tagesgeschäft ...

Willkommen im Club. 92 bis 94 war ich in einem Apple Systemhaus mit vielen Stunden aus der Druckvostufe Da mußte man damals auch des öfteren Poscript- und ppd-Dateien anpassen oder durch Filter jagen. Das Wissen, das man sich das erworben hat, hilft heute noch.

lks
GrueneSosseMitSpeck
GrueneSosseMitSpeck 15.02.2022 aktualisiert um 22:12:59 Uhr
Goto Top
And the winner is the HP Design#jet 360. Man muß dessen Treiber aus einem alten Server 2003 R2 rausoperieren oder Vista (in 2008 hat er schon gefehlt), oder irgendwo besorgen und ihn händisch unter Umgehung der Treibersignaturprüfung in moderen Betriebsytemen händisch (have disk) reinhacken oder einen moderneren HP Rollenplotter verwenden. Oder der "Basistreiber" für den HP Designjet XL 3600, der tut das auch.

Und noch mal zur Richtigstellung... Microsoft favorisiert die Uniprint Engine oder wie das Ding nun heißt... Drucken über Postscript wird nicht weiternetwickelt.

Deshalb wird auf Windows für die Erzeugung von Postscript über Druckprozesse maximal 14400x14400 Rastereinheiten zu 1/72 Zoll unterstützt, das sind 5x5 Meter über Postscript v4 Treiber, Postscript v3 kann maximal 2x3 Meter. Das gilt für alle Treiber, die eine Referenzimplementierung von Microsoft als Basis haben.

Die Limits hat irgendein Vollpfosten da reingeschrieben, dann hatte Microsoft früher so eine Policy daß sie Programmierer vor Vollendung des 5. Arbeitsjahres grundsätzlich gefeuert hatten... Programme wie Quark Xpress konnten schon immer beliebig große Postscript Dateien generieren, die hat man früher einfach als Raw an den Drucker oder Rollenplotter geschickt, oder an einen Belichter für Offset.

Am Ende ist es aber immer der Treiber, der das Limit in sich trägt oder nicht.