diff options
Diffstat (limited to 'Master/tlpkg/tlgs/lib/PDFA_def.ps')
-rw-r--r-- | Master/tlpkg/tlgs/lib/PDFA_def.ps | 71 |
1 files changed, 55 insertions, 16 deletions
diff --git a/Master/tlpkg/tlgs/lib/PDFA_def.ps b/Master/tlpkg/tlgs/lib/PDFA_def.ps index f0ff0d1b6f9..f77c90ef19b 100644 --- a/Master/tlpkg/tlgs/lib/PDFA_def.ps +++ b/Master/tlpkg/tlgs/lib/PDFA_def.ps @@ -1,30 +1,69 @@ %! % This is a sample prefix file for creating a PDF/A document. -% Feel free to modify entries marked with "Customize". -% This assumes an ICC profile to reside in the file (ISO Coated sb.icc), -% unless the user modifies the corresponding line below. +% Users should modify entries marked with "Customize". +% This assumes an ICC profile resides in the file (srgb.icc), +% in the current directory unless the user modifies the corresponding line below. % Define entries in the document Info dictionary : -/ICCProfile (srgb.icc) % Customise -def - [ /Title (Title) % Customise /DOCINFO pdfmark % Define an ICC profile : +/ICCProfile (srgb.icc) % Customise +def [/_objdef {icc_PDFA} /type /stream /OBJ pdfmark + +%% This code attempts to set the /N (number of components) key for the ICC colour space. +%% To do this it checks the ColorConversionStrategy or the device ProcessColorModel if +%% ColorConversionStrategy is not set. +%% This is not 100% reliable. A better solution is for the user to edit this and replace +%% the code between the ---8<--- lines with a simple declaration like: +%% /N 3 +%% where the value of N is the number of components from the profile defined in /ICCProfile above. +%% [{icc_PDFA} << - /N currentpagedevice /ProcessColorModel known { - currentpagedevice /ProcessColorModel get dup /DeviceGray eq - {pop 1} { - /DeviceRGB eq - {3}{4} ifelse +%% ----------8<--------------8<-------------8<--------------8<---------- + systemdict /ColorConversionStrategy known { + systemdict /ColorConversionStrategy get cvn dup /Gray eq { + pop /N 1 false + }{ + dup /RGB eq { + pop /N 3 false + }{ + /CMYK eq { + /N 4 false + }{ + (ColorConversionStrategy not a device space, falling back to ProcessColorModel, output may not be valid PDF/A.)= + true + } ifelse + } ifelse } ifelse } { - (ERROR, unable to determine ProcessColorModel) == flush + (ColorConversionStrategy not set, falling back to ProcessColorModel, output may not be valid PDF/A.)= + true } ifelse + + { + currentpagedevice /ProcessColorModel get + dup /DeviceGray eq { + pop /N 1 + }{ + dup /DeviceRGB eq { + pop /N 3 + }{ + dup /DeviceCMYK eq { + pop /N 4 + } { + (ProcessColorModel not a device space.)= + /ProcessColorModel cvx /rangecheck signalerror + } ifelse + } ifelse + } ifelse + } if +%% ----------8<--------------8<-------------8<--------------8<---------- + >> /PUT pdfmark [{icc_PDFA} ICCProfile (r) file /PUT pdfmark @@ -32,9 +71,9 @@ def [/_objdef {OutputIntent_PDFA} /type /dict /OBJ pdfmark [{OutputIntent_PDFA} << - /Type /OutputIntent % Must be so (the standard requires). - /S /GTS_PDFA1 % Must be so (the standard requires). - /DestOutputProfile {icc_PDFA} % Must be so (see above). - /OutputConditionIdentifier (sRGB) % Customize + /Type /OutputIntent % Must be so (the standard requires). + /S /GTS_PDFA1 % Must be so (the standard requires). + /DestOutputProfile {icc_PDFA} % Must be so (see above). + /OutputConditionIdentifier (sRGB) % Customize >> /PUT pdfmark [{Catalog} <</OutputIntents [ {OutputIntent_PDFA} ]>> /PUT pdfmark |