Mit Hilfe eines GhostScript-Entwicklers in diesem Fehlerbericht konnte ich das /N
Problem lösen . Gewonnene Erkenntnisse:
- Das GhostScript-Dokument, auf das in meiner Frage verwiesen wird, ist veraltet. Das aktuelle Dokument hier sagt, dass ProcessColorModel = DeviceRGB in Ordnung ist.
- ICC-Profile beschreiben einen Farbraum. Einige gültige Farbräume sind GRAU, RGB und CMYK. Sie können den Farbraum eines ICC-Profils mit dem kostenlosen ICC-Profilinspektor überprüfen .
- In dem Abschnitt der PDF-Datei, der Validierungsfehler verursacht, wird
/N
die Anzahl der Farbstoffe angegeben. - Die Datei PDFA_def.ps gibt den
/N
Wert aus. Das in Ghostscript/N 1
9.07 enthaltene Beispiel gibt nur aus (für ProcessColorModel = DeviceGray) oder/N 4
(für jedes andere ProcessColorModel). - In meinem ursprünglichen Test wurde ProcessColorModel = DeviceCMYK angegeben, das verursacht wurde
/N 4
, aber ein ICC-Profil verwendet wurde, das einen RGB-Farbraum beschreibt. Die Prüfer haben diese Diskrepanz richtig erkannt: Ich habe 4 Farben versprochen, aber nur 3 beschrieben.
Die meisten ICC-Profile, die ich für Displays und Bürodrucker gefunden habe, beschreiben einen RGB-Farbraum. (CMYK scheint spezifischer für High-End-Druckmaschinen und bestimmte Papiersorten zu sein.) Für meine Zwecke ist RGB vorzuziehen. Die folgende Batchdatei konvertiert eine PDF-Datei mit einem RGB-Farbraum in PDF / A-1b:
gswin32c ^ -dPDFA ^ -dNOOUTERSAVE ^ -sProcessColorModel=DeviceRGB ^ -dUseCIEColor ^ -sDEVICE=pdfwrite ^ -o %2 ^ -dPDFACompatibilityPolicy=1 ^ "C:\Program Files (x86)\gs\gs9.07\mylib\PDFA_def.ps" ^ %1
Geben Sie in PDFA_def.ps ein ICC-Profil an, das einen RGB-Farbraum beschreibt, und ändern Sie den Abschnitt zum Definieren eines ICC-Profils wie folgt:
% Define an ICC profile : [/_objdef /type /stream /OBJ pdfmark [ <</N systemdict /ProcessColorModel get /DeviceGray eq ifelse} ifelse >> /PUT pdfmark [ ICCProfile (r) file /PUT pdfmark
Die lange Zeile enthält eine verschachtelte ifelse
Anweisung, die ProcessColorModel = DeviceRGB erkennt und die entsprechende Anweisung ausgibt /N 3
. Die resultierende Datei sollte auf pdf-tools.com gültig sein .
Update: Ich habe ein etwas fähige Batch - Programm erstellt und veröffentlichte es in einer Blog - Post: Batch Convert PDF to PDF / A .