From 463c2ec14523be0366ac7388095b0e1dacbc8d3f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 5 Feb 2016 23:40:13 +0000 Subject: pdfx (5feb16) git-svn-id: svn://tug.org/texlive/trunk@39594 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/pdfx/pdfx.sty | 666 ++++++++++++++++++++---------- 1 file changed, 450 insertions(+), 216 deletions(-) (limited to 'Master/texmf-dist/tex/latex/pdfx/pdfx.sty') diff --git a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty index cb3d7d74c0d..49c321f80ad 100644 --- a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty +++ b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty @@ -6,7 +6,7 @@ %% %% pdfx.dtx (with options: `package') %% -%% Copyright (c) 2015, CV Radhakrishnan , +%% Copyright (c) 2016, CV Radhakrishnan , %% Han The Thanh , %% Ross Moore , %% Peter Selinger @@ -21,15 +21,15 @@ %% and version 1.2 or later is part of all distributions of LaTeX %% version 1999/12/01 or later. %% - \@ifpackageloaded{pdfxmult}{% - \PackageError{pdfx}% +\@ifpackageloaded{pdfxmult}{% + \PackageError{pdfx}% {^^JThis package may not be used in conjunction with the \space pdfxmult \space package}% {Type \space x \space to exit; or just \space \space to continue without this package.}% - \expandafter\let\csname opt@pdfx.sty\endcsname\@empty\endinput - }{}% + \expandafter\let\csname opt@pdfx.sty\endcsname\@empty\endinput +}{}% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{pdfx} - [2015/02/17 v1.5.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)] + [2016/02/04 v1.5.6 PDF/X and PDF/A support (CVR/HTH/RRM/PS)] \newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet \newif\ifpdfx@x \pdfx@xfalse % PDF/X mode @@ -91,10 +91,10 @@ \DeclareOption{vt-1}{\global\pdfx@xtrue\global\pdfx@vttrue \def\xmp@Part{4}\def\xmp@vtPart{1}\def\xmp@Conformance{}\def\xmp@vtConformance{}% \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 } -\DeclareOption{vt-2}{\global\pdfx@xtrue\global\pdfx@vttrue - \def\xmp@Part{4}\def\xmp@vtPart{2}\def\xmp@Conformance{}\def\xmp@vtConformance{}% +\DeclareOption{vt-2}{\global\pdfx@xtrue\global\pdfx@vttrue\global\no@iccprofiletrue + \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{}% \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 } -\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue +\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue\global\no@iccprofiletrue \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{s}% \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 } @@ -107,23 +107,35 @@ %% inhibits writing the XMP byte-order marker \DeclareOption{noBOM}{\pdfx@noBOMtrue} +\DeclareOption{useBOM}{\pdfx@noBOMfalse} \pdfminorversion=4 % assumed for PDF/A ; options may change this for PDF/X \expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else \pdfresetpageorigin=0 \fi + +\ExecuteOptions{noBOM,a-1b} \ProcessOptions +\RequirePackage{ifluatex} +\ifluatex + \RequirePackage{pdftexcmds}% + \let\pdfx@mdfivesum\pdf@mdfivesum +\else + \let\pdfx@mdfivesum\pdfmdfivesum +\fi + \def\pdfx@encodingfile{l8uenc.def} + {\endlinechar=-1 \everyeof{\noexpand}% \xdef\pdfx@bannerstring{\expandafter\scantokens\expandafter{\pdftexbanner}} }% -\def\pdfx@testbannerstr{This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/dev) kpathsea version 6.2.0dev}% +\def\pdfx@testbannerstr{% + This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014/dev) kpathsea version 6.2.0dev}% \ifx\pdfx@bannerstring\pdfx@testbannerstr \typeout{This version of pdfTeX cannot write out upper-range character bytes, 128-255.}% \typeout{Any UTF-8 Unicode characters in the Metadata will not be written correctly.}% \typeout{Please update to a more stable version of pdfTeX.^^J}% - \pdfx@noBOMtrue \fi \ifpdfx@x @@ -141,11 +153,18 @@ /TrimBox[25 20 570 773]} \fi \ifnum\pdfminorversion >3 \relax - \pdfmapline{+dummy-space ^^J }} -\def\pdfx@xmpmarkup{% - \pdfx@actives% - \edef\@amp{\expandafter\@gobble\string\&}% - \edef\@hash{\expandafter\@gobble\string\#}% - \edef\ {\expandafter\@gobble\string\ }% - \edef\%{\expandafter\@gobble\string\%}% - \edef\{{\expandafter\@gobble\string\{}% - \edef\}{\expandafter\@gobble\string\}}% - \edef\backslash{\expandafter\@gobble\string\\}% - \def\@unicode##1{\@amp\@hash x##1;}% - \def\pdfx@amp{\@unicode{0026}}% - \def\pdfx@lt{\@unicode{003c}}% - \def\pdfx@gt{\@unicode{003e}}% - \def\copyright{\@unicode{00A9}}% +\def\pdfx@xmpmarkup{ + \pdfx@actives + \edef\@amp{\expandafter\@gobble\string\&} + \edef\@hash{\expandafter\@gobble\string\#} + \edef\ {\expandafter\@gobble\string\ } + \edef\%{\expandafter\@gobble\string\%} + \edef\{{\expandafter\@gobble\string\{} + \edef\}{\expandafter\@gobble\string\}} + \edef\backslash{\expandafter\@gobble\string\\} + \def\@unicode##1{\@amp\@hash x##1;} + \def\pdfx@amp{\@unicode{0026}} + \def\pdfx@lt{\@unicode{003c}} + \def\pdfx@gt{\@unicode{003e}} + \def\copyright{\@unicode{00A9}} \let\&\pdfx@amp % for backward compatibility \let\TextCopyright\copyright % for backward compatibility - \let\sep\pdfx@sep% + \let\sep\pdfx@sep + \the\pdfxsafeforxmp@toks } +%% In case macros are used in XMP Metadata, need a way to map these +%% to simple text, rather than specific font characters, or whatever: +\newtoks\pdfxsafeforxmp@toks +\def\pdfxEnableCommands#1{% user command + \expandafter\global\expandafter\pdfxsafeforxmp@toks + \expandafter{\the\pdfxsafeforxmp@toks#1}} + %%---------------------------------------------------------------------- %% Markup bindings to be used during PDF string generation. -\def\pdfx@pdfmarkup{% - \pdfx@actives% - \edef\%{\expandafter\@gobble\string\%}% - \edef\{{\expandafter\@gobble\string\{}% - \edef\}{\expandafter\@gobble\string\}}% - \edef\pdfx@backslash{\expandafter\@gobble\string\\}% - \def\backslash{\pdfx@backslash000\pdfx@backslash134}% - \edef\pdfx@amp{\expandafter\@gobble\string\&}% - \edef\pdfx@lt{\expandafter\@gobble\string\<}% - \edef\pdfx@gt{\expandafter\@gobble\string\>}% +\def\pdfx@pdfmarkup{ + \pdfx@actives + \edef\%{\expandafter\@gobble\string\%} + \edef\{{\expandafter\@gobble\string\{} + \edef\}{\expandafter\@gobble\string\}} + \edef\pdfx@backslash{\expandafter\@gobble\string\\} + \def\backslash{\pdfx@backslash000\pdfx@backslash134} + \edef\pdfx@amp{\expandafter\@gobble\string\&} + \edef\pdfx@lt{\expandafter\@gobble\string\<} + \edef\pdfx@gt{\expandafter\@gobble\string\>} \let\TextCopyright\copyright % for backward compatibility - \def\sep{, }% - % Note: '\ ', \&, \copyright are already predefined by hyperref. + \def\sep{, } +%% Note: '\ ', \&, \copyright are already predefined by hyperref. + \the\pdfxsafeforxmp@toks } %%---------------------------------------------------------------------- -\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfmdfivesum{#1}} +%% Defaults + +\ifluatex + \def\xmp@Producer{LuaTeX} +\else + \def\xmp@Producer{pdfTeX} +\fi +\edef\xmp@CreatorTool{\@pdfcreator} + +\global\let\xmp@Title\@empty +\global\let\xmp@Author\@empty +\global\let\xmp@Keywords\@empty +\global\let\xmp@Subject\@empty +\global\let\xmp@Volume\@empty +\global\let\xmp@Issue\@empty +\global\let\xmp@CoverDisplayDate\@empty +\global\let\xmp@CoverDate\@empty +\global\let\xmp@Copyright\@empty +\global\let\xmp@CopyrightURL\@empty +\gdef\xmp@WebStatement{\xmp@CopyrightURL} +\global\let\xmp@Doi\@empty +\global\let\xmp@Lastpage\@empty +\global\let\xmp@Firstpage\@empty +\global\let\xmp@PublicationType\@empty +\global\let\xmp@Journaltitle\@empty +\global\let\xmp@Journalnumber\@empty +\global\let\xmp@Publisher\@empty +\gdef\xmp@Org{\xmp@Publisher} +\global\let\xmp@AuthoritativeDomain\@empty + +%%---------------------------------------------------------------------- +\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfx@mdfivesum{#1}} \expandafter\pdfx@eightofnine\pdfx@tmpstring\end} \def\pdfx@eightofnine#1#2#3#4#5#6#7#8#9\end{% \xdef\pdfx@eightchars{#1#2#3#4#5#6#7#8} @@ -366,74 +399,110 @@ %% ----- Color Profiles ------- %% Define how to specify the profile, so the default %% can be over-ridden in the .xmpdata file. - -%% The user-level macros are only brought into scope during the reading -%% of xmpdata. %% -%% Usage: -%% \setRGBcolorprofile{}{}{}{} -%% \setCMYKcolorprofile{}{}{}{} -%% \setGRAYcolorprofile{}{}{}{} -%% -%% Within the arguments of each macro, the characters '<', '>', '&', -%% '^', '_', '#', '$', and '~' can be used as themselves, but -%% '%' must be escaped as '\%'. -%% -%% Note: -%% * RGB profile is used with PDF/A and PDF/E files. -%% * CMYK profile is used with PDF/X and PDF/VT files. -%% * GRAY profile is currently unused. -\def\pdfx@profilecatcodes{% - \catcode`\<=12\catcode`\>=12\catcode`\&=12\catcode`\^=12 - \catcode`\_=12\catcode`\#=12\catcode`\$=12\catcode`\~=12 - \edef\%{\expandafter\@gobble\string\%}% +%% --- user-command --- RGB profile needed with PDF/A-?? files +%% \setRGBcolorprofile{}{}{}{} +\def\setRGBcolorprofile{% + \begingroup + \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax + \edef\({\string\(}\edef\){\string\)}% + \pdfx@setrgbprofile} +%% +%% --- user-command --- CMYK profile needed with PDF/X-?? files +%% \setCMYKcolorprofile{}{}{}{} +\def\setCMYKcolorprofile{% + \begingroup + \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax + \edef\({\string\(}\edef\){\string\)}% + \pdfx@setcmykprofile} +%% +%% --- user-command --- DeviceGray profile needed with PDF/E-1 files +%% \setGRAYcolorprofile{}{}{}{} +\def\setGRAYcolorprofile{% + \begingroup + \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax + \edef\({\string\(}\edef\){\string\)}% + \pdfx@setgrayprofile} +%% +%% --- user-command --- External profile needed with PDF/X-4p and PDF/X-5pg files +%% \setEXTERNALprofile{}{}{}{}% +%% {}{}{}{}{} +\def\setEXTERNALprofile{% + \begingroup + \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax + \edef\({\string\(}\edef\){\string\)}% + \pdfx@externalprofile} +%% +%% +\def\pdfx@setRGBcolorprofiledir#1{% + \gdef\pdfx@RGBcolorprofiledir{#1}% } -\def\pdfx@setRGBcolorprofile{% - \begingroup - \pdfx@profilecatcodes - \pdfx@dosetRGBcolorprofile} -\def\pdfx@dosetRGBcolorprofile#1#2#3#4{% - \xdef\pdfx@rgb@profile{#1}% valid file name - \xdef\pdfx@rgb@identifier{#2}% - \xdef\pdfx@rgb@info{#3}% - \pdfstringdef\pdfx@rgb@registry{#4}% valid URL - \endgroup}% closes-off \pdfx@setRGBcolorprofile -%% -\def\pdfx@setCMYKcolorprofile{% - \begingroup - \pdfx@profilecatcodes - \pdfx@dosetCMYKcolorprofile} -\def\pdfx@dosetCMYKcolorprofile#1#2#3#4{% - \xdef\pdfx@cmyk@profile{#1}% valid file name - \pdfstringdef\pdfx@cmyk@intent{#2}% color intent - \pdfstringdef\pdfx@cmyk@identifier{#3}% text string identifier - \pdfstringdef\pdfx@cmyk@registry{#4}% valid URL - \endgroup}% closes-off \pdfx@setCMYKcolorprofile -%% -\def\pdfx@setGRAYcolorprofile{% - \begingroup - \pdfx@profilecatcodes - \pdfx@dosetGRAYcolorprofile} -\def\pdfx@dosetGRAYcolorprofile#1#2#3#4{% - \xdef\pdfx@gray@profile{#1}% valid file name - \xdef\pdfx@gray@intent{#2}% - \xdef\pdfx@gray@identifier{#3}% +\def\pdfx@setCMYKcolorprofiledir#1{% + \gdef\pdfx@CMYKcolorprofiledir{#1}% +} +\pdfx@setRGBcolorprofiledir{} +\pdfx@setCMYKcolorprofiledir{} + +%% This does indeed work! Use it in .xmpdata files +\providecommand{\AdobeMacOSdir}{/Library/Application Support/Adobe/Color/Profiles/Recommended/} +\edef\pdfx@tmp{C:\string\Windows\string\System32\string\Spool\string\Drivers\string\Color\string/} +\expandafter\providecommand\expandafter{\expandafter\WindowsColordir\expandafter}\expandafter{\pdfx@tmp} +%%\pdfx@setcolorprofiledir{\AdobeMacOSdir} + +%% overide that value using the following commands: +\let\pdfxSetCMYKcolorProfileDir\pdfx@setCMYKcolorprofiledir +\let\pdfxSetRGBcolorProfileDir\pdfx@setRGBcolorprofiledir +\let\pdfxSetColorProfileDir\pdfxSetCMYKcolorProfileDir % for back-compatibility +%% +\def\pdfx@setrgbprofile#1#2#3#4{% + \xdef\pdfx@rgb@profile{\pdfx@RGBcolorprofiledir#1}% valid file name + \gdef\pdfx@rgb@identifier{#2}% + \gdef\pdfx@rgb@info{#3}% + \pdfstringdef\pdfx@rgb@registry{#4}% valid URL + \endgroup}% closes-off \setRGBcolorprofile +%% +\def\pdfx@setcmykprofile#1#2#3#4{% + \xdef\pdfx@cmyk@profile{\pdfx@CMYKcolorprofiledir#1}% valid file name +%% \expandafter\gdef\expandafter\pdfx@cmyk@profile\expandafter{\pdfx@colorprofiledir#1}% valid file name + \gdef\pdfx@cmyk@intent{#2}% +%% \pdfstringdef\pdfx@cmyk@intent{#2}% color intent + \gdef\pdfx@cmyk@identifier{#3}% +%% \pdfstringdef\pdfx@cmyk@identifier{#3}% text string identifier + \gdef\pdfx@cmyk@registry{#4}% +%% \pdfstringdef\pdfx@cmyk@registry{#4}% valid URL + \endgroup}% closes-off \setCMYKcolorprofile +%% +\def\pdfx@setgrayprofile#1#2#3#4{% + \gdef\pdfx@gray@profile{#1}% valid file name + \gdef\pdfx@gray@intent{#2}% + \gdef\pdfx@gray@identifier{#3}% \pdfstringdef\pdfx@gray@registry{#4}% valid URL - \endgroup}% closes-off \pdfx@setGRAYcolorprofile -%%---------------------------------------------------------------------- + \endgroup}% closes-off \setGRAYcolorprofile +%% +\def\pdfx@externalprofile#1#2#3#4#5#6#7#8#9{% + \gdef\pdfx@extprofile{#1}% PDF string for /ProfileName + \gdef\pdfx@cmyk@intent{#2}% PDF string for /OutputCondition + \gdef\pdfx@cmyk@identifier{#3}% PDF string for /OutputConditionIdentifier + \gdef\pdfx@cmyk@registry{#4}% {http://www.color.org}% + \gdef\pdfx@profileCS{#5}% 4 bytes for /ProfileCS + \gdef\pdfx@iccversion{#6}% Hex string for /ICCVersion < ... > + \gdef\pdfx@colorURL{#7}% URL + \gdef\pdfx@cmyk@info{#8}% for /Info + \gdef\pdfx@profile@checksum{#9}% Hex string for /CheckSum < ... > + \endgroup}% closes-off \setEXTERNALprofile +%% %% default color profiles -\pdfx@setRGBcolorprofile{sRGB_IEC61966-2-1_black_scaled.icc} - {sRGB_IEC61966-2-1_black_scaled} - {sRGB IEC61966 v2.1 with black scaling} - {http://www.color.org} -\pdfx@setCMYKcolorprofile{coated_FOGRA39L_argl.icc} - {Coated FOGRA39} - {FOGRA39 (ISO Coated v2 300\% (ECI))} - {http://www.argyllcms.com/} -\pdfx@setGRAYcolorprofile{Gray_linear.icc} - {} - {Custom} - {http://www.freedesktop.org/wiki/OpenIcc} +{\catcode`\_ 12 \catcode`\& 12 \catcode`\~ 12 + \gdef\pdfx@xprofile@cmykdefault{coated_FOGRA39L_argl.icc} + \gdef\pdfx@aprofile@rgbdefault{sRGB_IEC61966-2-1_black_scaled.icc} + \gdef\pdfx@eprofile@graydefault{Gray_linear.icc} + \gdef\pdfx@pprofile@externaldefault{FOGRA39} +}% end of \catcode +\xdef\pdfx@rgb@profile{\pdfx@aprofile@rgbdefault} +\xdef\pdfx@cmyk@profile{\pdfx@xprofile@cmykdefault} +\xdef\pdfx@gray@profile{\pdfx@eprofile@graydefault} +\xdef\pdfx@external@profile{\pdfx@pprofile@externaldefault} + %%---------------------------------------------------------------------- %% License for the file sRGB_IEC61966-2-1_black_scaled.icc : %% @@ -452,15 +521,41 @@ %% %% Terms of use %% -%% To anyone who acknowledges that the file "sRGB_IEC61966-2-1_black_scaled.icc" -%% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY, permission -%% to use, copy and distribute these file for any purpose is hereby -%% granted without fee, provided that the file is not changed including -%% the ICC copyright notice tag, and that the name of ICC shall not be -%% used in advertising or publicity pertaining to distribution of the -%% software without specific, written prior permission. ICC makes no -%% representations about the suitability of this software for any -%% purpose. +%% To anyone who acknowledges that the file "sRGB_IEC61966-2-1_black_scaled.icc" is provided "AS IS" WITH NO EXPRESS +%% OR IMPLIED WARRANTY, permission to use, copy and distribute these file for any purpose is hereby granted without fee, +%% provided that the file is not changed including the ICC copyright notice tag, and that the name of ICC shall not be used +%% in advertising or publicity pertaining to distribution of the software without specific, written prior permission. +%% ICC makes no representations about the suitability of this software for any purpose. +%% +%%---------------------------------------------------------------------- +{\catcode`\| 14 \catcode`\% 12 \catcode`\_ 12 + \edef\@bchar{\expandafter\@gobble\string\\}| + \edef\({\string\(}\edef\){\string\)}| + \begingroup | \endgroup occurs within the macro expansion +\expandafter\pdfx@setrgbprofile\expandafter{sRGB_IEC61966-2-1_black_scaled.icc}| + {sRGB_IEC61966-2-1_black_scaled}| + {sRGB IEC61966 v2.1 with black scaling}| + {http://www.color.org}| + \begingroup | \endgroup occurs within the macro expansion +\pdfx@setcmykprofile{coated_FOGRA39L_argl.icc}|{FOGRA39L.icc}| coated_FOGRA39L_argl.icc + {Coated FOGRA39}| + {FOGRA39 \string\(ISO Coated v2 300%\space \string\(ECI\string\)\string\)}| + {http://www.argyllcms.com/}|{http://www.color.org}| + \begingroup | \endgroup occurs within the macro expansion +\pdfx@setgrayprofile{Gray_linear.icc}| + {}| + {Custom}| + {http://www.freedesktop.org/wiki/OpenIcc}| +\ifno@iccprofile + \begingroup | \endgroup occurs within the macro expansion + \pdfx@externalprofile{Coated FOGRA39 \(ISO 12647-2:2004\)}| + {Offset commercial and specialty printing according to ISO 12647-2:2004 | + / Amd 1, paper type 1 or 2 \(gloss or matte coated offset, 115 g/m2\), | + screen frequency 60/cm.}| + {FOGRA39}{http://www.color.org}{CMYK}{02100000}{http://www.adobe.com}| + {Coated FOGRA39 \(ISO 12647-2:2004\)}{74FF62F330BF0DBE4495B5720542D511}| +\fi +}% end of \catcode %% %%---------------------------------------------------------------------- %% License for the file coated_FOGRA39L_argl.icc : @@ -489,46 +584,97 @@ %% distribution. %%---------------------------------------------------------------------- +\newif\ifexternalICCprofiles + \begingroup - \inputencoding{8bit}% +%% override unneeded color-profile specifier + \ifpdfx@x + \ifno@iccprofile % PDF/X-4p and PDF/X-5pg PDF/VT-2 + \begingroup + \def\pdfx@extprofiles@store{AdobeExternalProfiles.tex}% + \InputIfFileExists{\pdfx@extprofiles@store}% + {\global\externalICCprofilestrue \catcode `\# 12\relax}% + {\typeout{** pdfx: No file \pdfx@extprofiles@store\space found for PDF/X-4p or PDF/X-5pg}}% + \endgroup + \else + \begingroup + \def\pdfx@profiles@store{AdobeColorProfiles.tex}% + \InputIfFileExists{\pdfx@profiles@store}% + {\global\externalICCprofilesfalse \catcode `\# 12\relax}% + {\typeout{** pdfx: No file \pdfx@profiles@store\space found for PDF/X variants}}% + \endgroup + \def\setRGBcolorprofile#1#2#3#4{}% + \fi + \else +%% load it, in case the macros are used in .xmpdata + \InputIfFileExists{AdobeColorProfiles.tex}{}{}% + \ifpdfx@e + \else + \def\setCMYKcolorprofile#1#2#3#4{}% + \def\setGRAYcolorprofile#1#2#3#4{}% + \fi\fi +%% + \ifluatex\else + \inputencoding{8bit}% + \fi \makeatletter \pdfx@localcommands +%% \InputIfFileExists{\jobname.xmpdata}% - {\typeout{**pdfx: Metadata file \jobname.xmpdata read successfully.}}% - {\typeout{**pdfx: No file \jobname.xmpdata . Metadata will be incomplete!}} + {\typeout{** pdfx: Metadata file \jobname.xmpdata read successfully.}}% + {\typeout{** pdfx: No file \jobname.xmpdata . Metadata will be incomplete!}} \endgroup + %% ---------------------------------------------------------------------- +\newif\ifpdfx@cmyk \begingroup \ifpdfx@x % PDF/X needs a CMYK color profile for printing - \def\0{\string\0} + \global\pdfx@cmyktrue + \edef\@pctchar{\expandafter\@gobble\string\%} + \edef\@bchar{\expandafter\@gobble\string\\} + \edef\0{\string\0} + \edef\({\string\(} + \edef\){\string\)} \catcode`\_ 12 \ifno@iccprofile % PDF/X-4p and PDF/X-5pg - \immediate\pdfobj {<>} + \immediate\pdfobj {<>} \edef\OBJ@URLs{\the\pdflastobj}% - \xdef\pdfx@cmyk@intent{Coated_Fogra39L_VIGC_300}% - \xdef\pdfx@cmyk@identifier{Coated_Fogra39L_VIGC_300.icc}% +%% \xdef\pdfx@cmyk@intent{Offset commercial and specialty printing according to ISO 12647-2:2004 / Amd 1, % +%% paper type 1 or 2 \(gloss or matte coated offset, 115 g/m2\), screen frequency 60/cm.0}% +%% \xdef\pdfx@cmyk@info{Coated FOGRA39 \(ISO 12647-2:2004\)}% +%% \xdef\pdfx@cmyk@name{Coated FOGRA39 \(ISO 12647-2:2004\)}% +%% \xdef\pdfx@cmyk@identifier{FOGRA39}% \immediate\pdfobj {<<% - /CheckSum <5449c505618a9b6c38634b4708ae9e37>^^J% d5f0714cd9d6092b6ac93b625f5d8a0c>% - /ICCVersion (\004\002\000\000)% 4.2.0.0 - /ProfileCS (CMYK)^^J% - /ProfileName (\pdfx@cmyk@identifier)^^J% + /CheckSum <\pdfx@profile@checksum>^^J% + /ICCVersion <\pdfx@iccversion>% + /ProfileCS (\pdfx@profileCS)^^J% + /ProfileName (\pdfx@extprofile)^^J% /URLs [\OBJ@URLs\space 0 R ] >>} % \edef\OBJ@ICC{\the\pdflastobj}% +%% \IfFileExists{\pdfx@rgb@profile}{% +%% \immediate\pdfobj stream attr{/N 3^^J /Alternate /DeviceRGB} file{\pdfx@rgb@profile}% +%% \edef\OBJ@RGB{\the\pdflastobj}% +%% }{% +%% \errmessage{No color profile found to use for RGB screen colors.}% +%% }% \pdfcatalog{% /OutputIntents [ << /Type/OutputIntent /S/GTS_PDFX /OutputCondition (\pdfx@cmyk@intent)% /OutputConditionIdentifier (\pdfx@cmyk@identifier)% + /Info(\pdfx@cmyk@intent)% /RegistryName(\pdfx@cmyk@registry) - % extra dictionary required for PDF/X-4p and PDF/X-5pg +%% extra dictionary required for PDF/X-4p and PDF/X-5pg /DestOutputProfileRef \OBJ@ICC\space 0 R >> ]}% +%% \else % PDF/X-1 , PDF/X-1a , PDF/X-3 , PDF/X-4 , PDF/X-5g - \IfFileExists{\pdfx@cmyk@profile}{% +%% + \IfFileExists{"\pdfx@cmyk@profile"}{% % embedded CMYK color profile - \immediate\pdfobj stream attr{/N 4} file{\pdfx@cmyk@profile}% + \immediate\pdfobj stream attr{/N 4} file{"\pdfx@cmyk@profile"}% \edef\OBJ@CMYK{\the\pdflastobj}% \pdfcatalog{% /OutputIntents [ << @@ -536,22 +682,47 @@ /S/GTS_PDFX /OutputCondition (\pdfx@cmyk@intent)% /OutputConditionIdentifier (\pdfx@cmyk@identifier)% + /Info(\pdfx@cmyk@intent)% /RegistryName(\pdfx@cmyk@registry) /DestOutputProfile \OBJ@CMYK\space 0 R >> ]}% }{% - \errmessage{No color profile found to use for CMYK printing colors.}% + \errmessage{No color profile \pdfx@cmyk@profile\ found to use for CMYK printing colors.}% }% \fi % end of \ifno@iccprofile \else -%% PDF/A needs an RGB color profile for on-screen rendering - \IfFileExists{\pdfx@rgb@profile}{% - \immediate\pdfobj stream attr{/N 3^^J/Alternate/DeviceRGB} file{\pdfx@rgb@profile}% - \edef\OBJ@RGB{\the\pdflastobj}% +%% PDF/A and PDF/E can specify a CMYK profile + \expandafter\ifx\expandafter\relax\pdfx@rgb@profile\relax + \global\pdfx@cmyktrue + \IfFileExists{"\pdfx@cmyk@profile"}{% + % embedded CMYK color profile + \immediate\pdfobj stream attr{/N 4} file{"\pdfx@cmyk@profile"}% + \edef\OBJ@CMYK{\the\pdflastobj}% + \pdfcatalog{% + /ViewerPreferences <> + /OutputIntents [ << + /Type /OutputIntent + \ifpdfx@e + /S/ISO_PDFE1 + \else + /S/GTS_PDFA1 + \fi + /OutputCondition (\pdfx@cmyk@intent)% use this or /Info ? + /OutputConditionIdentifier (\pdfx@cmyk@identifier)% + /DestOutputProfile \OBJ@CMYK\space 0 R + /Info(\pdfx@cmyk@intent)% + /RegistryName(\pdfx@cmyk@registry) + >> ]}% }{% - \errmessage{No color profile found to use for RGB screen colors.}% + \errmessage{No color profile \pdfx@cmyk@profile\ found to use for CMYK screen colors.}% }% - \pdfcatalog{% + \else +%% PDF/A and PDF/E usually need an RGB color profile for on-screen rendering + \global\pdfx@cmykfalse + \IfFileExists{"\pdfx@rgb@profile"}{% + \immediate\pdfobj stream attr{/N 3^^J/Alternate/DeviceRGB} file{"\pdfx@rgb@profile"}% + \edef\OBJ@RGB{\the\pdflastobj}% + \pdfcatalog{% /ViewerPreferences <> /OutputIntents [ << /Type /OutputIntent @@ -560,12 +731,16 @@ \else /S/GTS_PDFA1 \fi - /OutputConditionIdentifier (\pdfx@rgb@identifier)% + /OutputConditionIdentifier (\pdfx@rgb@identifier)% /DestOutputProfile \OBJ@RGB\space 0 R /Info(\pdfx@rgb@info) /RegistryName(\pdfx@rgb@registry) >> ]}% + }{% + \errmessage{No color profile found to use for RGB screen colors.}% + }% + \fi % end of \ifx \fi % end of \ifpdfx@x \endgroup @@ -581,9 +756,16 @@ \begingroup \pdfx@xmpmarkup \def\sep{, }% - \inputencoding{8bit}\makeatletter + \ifluatex\else + \inputencoding{8bit}% + \fi + \makeatletter + \IfFileExists{\pdfx@encodingfile}{% + \def\cf@encoding{U}\fontencoding{U}% + }{}% \xdef\xmp@@Keywords{\xmp@Keywords} \xdef\xmp@@Author{\xmp@Author} + \xdef\xmp@@Copyright{\xmp@Copyright} \endgroup %% ---------------------------------------------------------------------- @@ -623,16 +805,18 @@ %% ---------------------------------------------------------------------- %% \pdfx@topdfstring\toka\tokb: Convert the string in \tokb to a format %% appropriate for PDF /Info strings, i.e., PDFDoc encoding or UTF-16 -%% encoding, and store the result in \toka. As a special case, if \tokb +%% encoding, and store the result in \toka As a special case, if \tokb %% is \@empty, set \toka to \@empty. \def\pdfx@topdfstring#1#2{% \ifx#2\@empty - \global\let#1\@empty + \global\let#1\empty \else \begingroup - \inputencoding{utf8}% - \hypersetup{pdfencoding=unicode}% + \ifluatex\else + \inputencoding{utf8}% + \fi + \hypersetup{pdfencoding=auto}% \pdfstringdef#1{#2}% \endgroup \fi @@ -655,7 +839,8 @@ \pdfgentounicode=1 \ifpdfx@x - {\pdfinfo{% order of these dictionary keys should not matter + {\def\sep{,}% + \pdfinfo{% order of these dictionary keys should not matter \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi /CreationDate(D:\pdfx@convDate)% /Creator(\pdfx@CreatorTool)% @@ -677,10 +862,11 @@ \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi /Trapped/False% }% end of PDF/X info - }% + }% end of scope for \sep \else \ifpdfx@e - {\pdfinfo{% order of these dictionary keys should not matter + {\def\sep{,}% + \pdfinfo{% order of these dictionary keys should not matter \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi /CreationDate(D:\pdfx@convDate)% /Creator(\pdfx@CreatorTool)% @@ -692,16 +878,17 @@ \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi /Trapped/False% }% end of PDF/E info - }% + }% end of scope for \sep \else \def\pdfx@confA{a}% \def\pdfx@confB{b}% \def\pdfx@confU{u}% - \edef\xmp@conformance{\csname pdfx@conf\xmp@Conformance\endcsname}% + \expandafter\def\expandafter\xmp@conf\expandafter{\csname pdfx@conf\xmp@Conformance\endcsname}% \AtBeginDocument{% \def\PDF@FinishDoc{% \Hy@UseMaketitleInfos - \pdfinfo{% + {\def\sep{, }% + \pdfinfo{% \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi \ifx\pdfx@Author\@empty\else /Author(\pdfx@Author)\fi \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi @@ -719,8 +906,9 @@ \fi /Producer(\pdfx@Producer)% /Trapped/False - /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conformance:\xmp@ReleaseDate)% + /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conf:\xmp@ReleaseDate)% }% end of PDF/A info + }% end of scope for \sep }% end of \PDF@FinishDoc }% end of \AtBeginDocument \fi\fi @@ -740,12 +928,12 @@ \else \def\xmp@template{pdfa}% \fi\fi - % patch commands from xmpincl.sty ... +%% patch commands from xmpincl.sty … \def\pdfx@xmpinclStart{% supply byte-order marker - % + % }% \def\pdfx@xmpinclStartAlt{% no byte-order marker - % + % }% \def\pdfx@xmpinclEnd{% allow XMP packet to be writable % @@ -756,19 +944,63 @@ \let\mcs@xmpinclStart\pdfx@xmpinclStartAlt \fi \let\mcs@xmpinclEnd\pdfx@xmpinclEnd -%% ... preventing their redefinition +%% … preventing their redefinition \def\newcommand#1#2{}% - % +%% +%% \def\pdfx@endeval{% +%% \noexpand \TE@setvaltrue \noexpand \else +%% \noexpand \TE@setvalfalse \noexpand \fi +%% \noexpand \TE@negatefalse \noexpand \fi}% +%% \let\TE@endeval\pdfx@endeval + \ifluatex\else + \inputencoding{8bit}% + \fi + \makeatletter +%% \let\&=\xmpAmp \pdfx@xmpmarkup - \catcode `\_ 12 + \def\cf@encoding{U}\fontencoding{U}% + \providecommand{\ifnot@empty}[2]{\ifx#1\@empty\relax\else#2\fi}% +%% \catcode `\_ 12 \obeyspaces% beware of 128 space characters in the next line -- for padding end of XMP packet - \def\padding@line{ }% - \def\ifnot@empty#1#2{\ifx#1\@empty\else#2\fi} - \inputencoding{8bit}\makeatletter + \gdef\paddingline{ }% \typeout{Using XMP template file: \xmp@template.xmp}% \includexmp{\xmp@template} \endgroup +%% +%% controls the color model and conversions with xcolor package +%% +\ifpdfx@cmyk + \PassOptionsToPackage{xcolor}{cmyk,hyperref} + \def\pdfx@handlexcolor{\selectcolormodel{cmyk}\convertcolorsUtrue\convertcolorsDtrue} +%%\hypersetup{allbordercolors=black,allcolors=black}% else link borders use RGB + \ifpdfx@x\else + \AtBeginDocument{% + \def\@linkcolor{0 1 1 0}% + \def\@anchorcolor{0 0 0 1}% + \def\@citecolor{1 0 1 0}% + \def\@filecolor{.5 0 0 .5}% + \def\@urlcolor{0 1 0 0}% + \def\@menucolor{0 1 1 0}% + \def\@runcolor{.5 0 0 .5}% + \def\@linkbordercolor{0 1 1 0}% + \def\@citebordercolor{1 0 1 0}% + \def\@filebordercolor{.5 0 0 .5}% + \def\@urlbordercolor{1 0 0 0}% + \def\@menubordercolor{0 1 1 0}% + \def\@runbordercolor{.7 0 0 .3}% + \def\Fld@bcolor{0 0 0 0}% + \def\Fld@bordercolor{0 1 1 0}% + } + \fi +\else + \PassOptionsToPackage{xcolor}{rgb,hyperref} + \def\pdfx@handlexcolor{\selectcolormodel{rgb}\convertcolorsUtrue\convertcolorsDtrue} +\fi +\@ifpackageloaded{xcolor}{\pdfx@handlexcolor}{% + \AtBeginDocument{\@ifpackageloaded{xcolor}{\pdfx@handlexcolor}{}} +} + %% disable hyperref options, to prevent changes that will cause an incompatibility \Hy@DisableOption{pdfauthor}% \Hy@DisableOption{pdftitle}% @@ -778,6 +1010,8 @@ \Hy@DisableOption{pdfmoddate}% \Hy@DisableOption{pdfproducer}% \Hy@DisableOption{pdfkeywords}% +%% once set correctly, don't let this change + \Hy@DisableOption{pdfa}\let\Hy@pdfafalse\relax\let\Hy@pdfatrue\relax \endinput %% %% End of file `pdfx.sty'. -- cgit v1.2.3