So erstellen Sie eine korrekte (Graustufen-) PDF / X-3-Datei mit Ghostscript

1090
Socob

Ich versuche, beliebige PDF-Dateien (ein mit pdfLaTeX erstelltes Magazin, das einige Fotos, aber auch Grafiken wie Webcomics enthält) mit Ghostscript in gültiges PDF / X-3 zu konvertieren, und ich möchte, dass das Ergebnis in Graustufen / Monochrom vorliegt. Ich weiß nicht viel über ICC-Farbprofile, und ich interessiere mich in jedem Fall nicht wirklich für das Farbmanagement. Wenn dies ohne ICC-Profile einfacher ist, macht es mir nichts aus. Ich bin bereit, den Drucker mit meiner Datei erledigen zu lassen - ich brauche keine absolute Farbtreue (vor allem, weil wir hier von Graustufen sprechen).

Ich habe versucht, es anhand der Ghostscript-Dokumentation im Abschnitt „Erstellen eines PDF / X-3-Dokuments“ zum Laufen zu bringen . Basierend darauf sieht mein Versuch so aus:

gs \ -dSAFER -sDEVICE=pdfwrite \ -dEmbedAllFonts \ -sProcessColorModel=DeviceGray \ -sColorConversionStrategy=Gray \ -dPDFX -dPDFACompatibilityPolicy=1 \ -o 'output.pdf' -f 'my_pdfx_def.ps' 'input.pdf' 

Wo my_pdfx_def.psenthält Folgendes, basierend auf der mit Ghostscript gelieferten Vorlage:

%!  systemdict /ProcessColorModel known { systemdict /ProcessColorModel get dup /DeviceGray ne exch /DeviceCMYK ne and } { true } ifelse { (ERROR: ProcessColorModel must be /DeviceGray or /DeviceCMYK.)= /ProcessColorModel cvx /rangecheck signalerror } if  [ /GTS_PDFXVersion (PDF/X-3:2002) % Must be so (the standard requires). /Trapped /False % Must be so (Ghostscript doesn't provide other). /DOCINFO pdfmark  % Define an ICC profile:  currentdict /ICCProfile known { [/_objdef /type /stream /OBJ pdfmark [ <</N systemdict /ProcessColorModel get /DeviceGray eq ifelse >> /PUT pdfmark [ ICCProfile (r) file /PUT pdfmark } if  % Define the output intent dictionary:  [/_objdef /type /dict /OBJ pdfmark [ << /Type /OutputIntent % Must be so (the standard requires). /S /GTS_PDFX % Must be so (the standard requires). /OutputCondition (Commercial and specialty printing) % Customize /Info (none) % Customize /OutputConditionIdentifier (CGATS TR001) % Customize /RegistryName (http://www.color.org) % Must be so (the standard requires). currentdict /ICCProfile known { /DestOutputProfile % Must be so (see above). } if >> /PUT pdfmark [ <</OutputIntents [ ]>> /PUT pdfmark 

Dadurch wird eine Datei ausgeführt, die in meinem PDF-Viewer oberflächlich als OK erscheint. Ich bin mir jedoch nicht sicher, ob dies tatsächlich ausreichend ist (ein gültiges / sinnvolles PDF / X-3-Dokument erstellen), wenn man die lange Liste der Dinge berücksichtigt, die ich laut Ghostscript-Dokumentation tun sollte. Insbesondere heißt es

Um ein PDF / X-3-Dokument aus einem Postscript oder einer PDF-Datei zu erstellen, sollten Sie:

[…]

  • Geben Sie eine PDF / X-Definitionsdatei an, bevor Sie das Eingabedokument ausführen. Es enthält zusätzliche Informationen, die in das Ausgabedokument aufgenommen werden sollen. Ein Beispiel für eine PDF / X-Definitionsdatei finden Sie in gs/lib/PDFX_def.ps.
  • Wenn eine registrierte Druckbedingung anwendbar ist, geben Sie ihren Bezeichner in der PDF / X-Definitionsdatei an. Andernfalls geben Sie ein ICC-Profil an und geben Sie es in der PDF / X-Definitionsdatei an (siehe unten).

Ich habe versucht, die von mir PDFX_def.pserwähnte Datei anzupassen (siehe oben), aber ich weiß nicht, was eine OutputConditionist oder was ich dafür tun soll. Leider ist dies in den Ghostscript-Dokumenten kaum dokumentiert. Ich habe versucht, eine .iccDatei in meiner angepassten Version festzulegen, aber Ghostscript konnte die Datei nicht finden - egal, ich habe immer " Error: /invalidfileaccess in --file--" bekommen. Und welches Farbprofil würde ich sowieso verwenden?

  • Stellen Sie eine DefaultRGBRessourcendatei in der Ressourcenkategorie ColorSpace bereit. Definieren Sie es entweder in der PDF / X-Definitionsdatei oder geben Sie eine Definition von an gs/Resource/ColorSpace/DefaultRGB. gs/Resource/ColorSpace/DefaultRGBwird normalerweise mit Ghostscript vertrieben, sein Inhalt kann nicht unbedingt Ihre Bedürfnisse erfüllen, siehe unten.

Es ist unnötig zu erwähnen, dass dies nicht genau spezifiziert wird. Aber brauche ich das überhaupt, wenn ich Graustufen möchte?

  • Geben Sie mithilfe -sOutputICCProfileeines ICC-Profils an, das den Farbraum (entweder CMYK oder Grau) der endgültigen Datei darstellt. Dies ist das gleiche ICC-Profil, das in der PDF / X-Definitionsdatei verwendet wird, wie das ICC-Profil. Selbst wenn Sie einen Standard verwenden OutputConditionund kein ICCProfile angeben müssen, müssen Sie OutputICCProfileein geeignetes ICC-Profil angeben, um eine korrekte Farbkonvertierung zu gewährleisten .

Nun, ich habe keine Angaben gemacht -sOutputICCProfileund das schien nicht zu schaden. Soll ich noch (Wiederum, wo soll ich das ICC-Profil herausziehen?)

1

0 Antworten auf die Frage