summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-05-13 21:34:47 +0000
committerKarl Berry <karl@freefriends.org>2015-05-13 21:34:47 +0000
commit3c75840c1a14960dc7e45c10220b9763bbe01167 (patch)
treef8bc6060bc66eee048a39bdd9ff1d3a93ba5e2ce /Master/texmf-dist/tex/latex/pdfx/pdfx.sty
parentec29272038a24b651f07358507068b84abfb3c1f (diff)
pdfx (13may15)
git-svn-id: svn://tug.org/texlive/trunk@37386 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfx/pdfx.sty')
-rw-r--r--Master/texmf-dist/tex/latex/pdfx/pdfx.sty887
1 files changed, 734 insertions, 153 deletions
diff --git a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
index 35f1e6cf12e..cb3d7d74c0d 100644
--- a/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
+++ b/Master/texmf-dist/tex/latex/pdfx/pdfx.sty
@@ -6,8 +6,10 @@
%%
%% pdfx.dtx (with options: `package')
%%
-%% Copyright (c) 2008, CV Radhakrishnan <cvr@river-valley.org>,
-%% Han The Thanh <thanh@river-valley.org>
+%% Copyright (c) 2015, CV Radhakrishnan <cvr@river-valley.org>,
+%% Han The Thanh <thanh@river-valley.org>,
+%% Ross Moore <ross.moore@mq.edu.au>,
+%% Peter Selinger <selinger@mathstat.dal.ca>
%%
%% This file may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.2 of this
@@ -19,184 +21,763 @@
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
+ \@ifpackageloaded{pdfxmult}{%
+ \PackageError{pdfx}%
+ {^^JThis package may not be used in conjunction with the \space pdfxmult \space package}%
+ {Type \space x <return> \space to exit; or just \space <return> \space to continue without this package.}%
+ \expandafter\let\csname opt@pdfx.sty\endcsname\@empty\endinput
+ }{}%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pdfx}
- [2008/12/10 v1.2 PDF/X and PDF/A support (CVR/HTH)]
+ [2015/02/17 v1.5.3 PDF/X and PDF/A support (CVR/HTH/RRM/PS)]
-\newif\ifpdfxonea \pdfxoneafalse
-\newif\ifpdfaoneb \pdfaonebfalse
+\newif\ifpdfx@noBOM \pdfx@noBOMfalse % use a BOM in the XMP packet
+\newif\ifpdfx@x \pdfx@xfalse % PDF/X mode
+\newif\ifpdfx@e \pdfx@efalse % PDF/E mode; not implemented yet
+\newif\ifpdfx@vt \pdfx@vtfalse % PDF/VT mode, extension of PDF/X
+\newif\ifno@iccprofile % used with PDF/X-4p and PDF/X-5pg
-\DeclareOption{a-1b}{\global\pdfaonebtrue}
-\DeclareOption{x-1a}{\global\pdfxoneatrue}
+%% Not all combinations of the following parameters are meaningful.
+\def\xmp@Part{1} % PDF/A part: 1, 2, or 3
+\def\xmp@Conformance{B} % Conformance level: A, B, or U
+\def\xmp@ReleaseDate{2005} % 2001 for PDF/X-1, 2005 for PDF/A-1,
+ % 2010 for PDF/A-2, 2012 for PDF/A-3.
+
+%% default is to create PDF/A-1b
+%% options can change this for PDF/X or higher levels of PDF/A
+\DeclareOption{a-1a}{\global\pdfx@xfalse\def\xmp@Part{1}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2005}}
+\DeclareOption{a-1b}{\global\pdfx@xfalse\def\xmp@Part{1}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2005}}
+\DeclareOption{a-2a}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2010}}
+\DeclareOption{a-2b}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2010}}
+\DeclareOption{a-2u}{\global\pdfx@xfalse\def\xmp@Part{2}\def\xmp@Conformance{U}\def\xmp@ReleaseDate{2010}}
+\DeclareOption{a-3a}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{A}\def\xmp@ReleaseDate{2012}}
+\DeclareOption{a-3b}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{B}\def\xmp@ReleaseDate{2012}}
+\DeclareOption{a-3u}{\global\pdfx@xfalse\def\xmp@Part{3}\def\xmp@Conformance{U}\def\xmp@ReleaseDate{2012}}
+\DeclareOption{x-1}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2001}\global\pdfminorversion=3 }
+\DeclareOption{x-1a}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=3 }
+\DeclareOption{x-1a1}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2001}\global\pdfminorversion=3 }
+\DeclareOption{x-1a3}{\global\pdfx@xtrue\def\xmp@Part{1}\def\xmp@Conformance{a}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=3 }
+\DeclareOption{x-2}{\global\pdfx@xtrue\def\xmp@Part{2}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=4 }
+\DeclareOption{x-3}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=3 }
+\DeclareOption{x-302}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2002}\global\pdfminorversion=3 }
+\DeclareOption{x-303}{\global\pdfx@xtrue\def\xmp@Part{3}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2003}\global\pdfminorversion=4 }
+%%% Later versions, yet to be fully implemented
+\DeclareOption{x-4}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-4p}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-408}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-410}{\global\pdfx@xtrue\def\xmp@Part{4}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{x-4p08}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-4p10}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{4}\def\xmp@Conformance{p}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{x-5}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5g}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5n}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5pg}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-508}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5g08}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5n08}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-5pg08}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\DeclareOption{x-510}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{x-5g10}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{g}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{x-5n10}{\global\pdfx@xtrue\def\xmp@Part{5}\def\xmp@Conformance{n}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{x-5pg10}{\global\pdfx@xtrue\global\no@iccprofiletrue
+ \def\xmp@Part{5}\def\xmp@Conformance{pg}\def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{e-1}{\global\pdfx@xfalse\global\pdfx@etrue
+ \def\xmp@Part{1}\def\xmp@Conformance{}\def\xmp@ReleaseDate{2008}\global\pdfminorversion=6 }
+\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{}%
+ \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+\DeclareOption{vt-2s}{\global\pdfx@xtrue\global\pdfx@vttrue
+ \def\xmp@Part{5}\def\xmp@vtPart{2}\def\xmp@Conformance{pg}\def\xmp@vtConformance{s}%
+ \def\xmp@ReleaseDate{2010}\global\pdfminorversion=6 }
+
+%% extra options to alter the PDF minor version, in case needed in special circumstances
+\DeclareOption{pdf13}{\global\pdfminorversion=3 }
+\DeclareOption{pdf14}{\global\pdfminorversion=4 }
+\DeclareOption{pdf15}{\global\pdfminorversion=5 }
+\DeclareOption{pdf16}{\global\pdfminorversion=6 }
+\DeclareOption{pdf17}{\global\pdfminorversion=7 }
+
+%% inhibits writing the XMP byte-order marker
+\DeclareOption{noBOM}{\pdfx@noBOMtrue}
+
+\pdfminorversion=4 % assumed for PDF/A ; options may change this for PDF/X
+\expandafter\ifx\csname pdfresetpageorigin\endcsname\relax\else
+ \pdfresetpageorigin=0
+\fi
\ProcessOptions
-\ifpdfxonea
- \pdfminorversion=3
+{\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}%
+\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
+ \pdfobjcompresslevel=0 \relax
+ \expandafter\ifx\csname pdfinterwordspaceoff\endcsname\relax\else
+ \pdfinterwordspaceoff
+ \let\pdfinterwordspaceon\pdfinterwordspaceoff
+ \let\pdfinterwordspace\relax
+ \fi
+ \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
+ \pdfgeninterwordspace=0 \relax
+ \fi
\pdfpageattr{/MediaBox[0 0 595 793]
/BleedBox[0 0 595 793]
/TrimBox[25 20 570 773]}
-\else
- \pdfminorversion=4
\fi
-\def\hash{\expandafter\@gobble\string\#}
-\def\amp{\expandafter\@gobble\string\&}
-\def\xmpAmp{\amp\hash x0026;}
-\def\sep{</rdf:li><rdf:li>}
-\def\TextCopyright{\amp\hash x00A9;}
-\def\Title#1{\gdef\xmpTitle{#1}}
- \let\xmpTitle\@empty
-\def\Author#1{\gdef\xmpAuthor{#1}}
- \let\xmpAuthor\@empty
-\def\Keywords#1{\gdef\xmpKeywords{#1}}
- \let\xmpKeywords\@empty
- \let\xmpSubject\xmpKeywords
-\def\Creator#1{\gdef\xmpCreator{#1}}
- \def\xmpCreator{\@pdfcreator}
-\def\Producer#1{\gdef\xmpProducer{#1}}
- \def\xmpProducer{pdfTeX}
-\def\Volume#1{\gdef\xmpVolume{#1}}
- \let\xmpVolume\@empty
-\def\Issue#1{\gdef\xmpIssue{#1}}
- \let\xmpIssue\@empty
-\def\CoverDisplayDate#1{\gdef\xmpCoverDisplayDate{#1}}
- \let\xmpCoverDisplayDate\@empty
-\def\CoverDate#1{\gdef\xmpCoverDate{#1}}
- \let\xmpCoverDate\@empty
-\def\Copyright#1{\gdef\xmpCopyright{#1}}
- \let\xmpCopyright\@empty
-\def\Doi#1{\gdef\xmpDoi{#1}}
- \let\xmpDoi\@empty
-\def\Lastpage#1{\gdef\xmpLastpage{#1}}
- \let\xmpLastpage\@empty
-\def\Firstpage#1{\gdef\xmpFirstpage{#1}}
- \let\xmpFirstpage\@empty
-\def\Journaltitle#1{\gdef\xmpJournaltitle{#1}}
- \let\xmpJournaltitle\@empty
-\def\Journalnumber#1{\gdef\xmpJournalnumber{#1}}
- \let\xmpJournalnumber\@empty
-\def\Org#1{\gdef\xmpOrg{#1}}
- \let\xmpOrg\@empty
-\def\CreatorTool#1{\gdef\xmpCreatorTool{#1}}
- \def\xmpCreatorTool{\xmpProducer}
-\def\AuthoritativeDomain#1{\gdef\xmpAuthoritativeDomain{#1}}
- \let\xmpAuthoritativeDomain\@empty
-\def\findUUID#1{\edef\tmpstring{\pdfmdfivesum{#1}}
- \expandafter\eightofnine\tmpstring\end}
-\def\eightofnine#1#2#3#4#5#6#7#8#9\end{%
- \xdef\eightchars{#1#2#3#4#5#6#7#8}
- \fouroffive#9\end}
-\def\fouroffive#1#2#3#4#5\end{\xdef\ffourchars{#1#2#3#4}
- \sfouroffive#5\end}
-\def\sfouroffive#1#2#3#4#5\end{\xdef\sfourchars{#1#2#3#4}
- \tfouroffive#5\end}
-\def\tfouroffive#1#2#3#4#5\end{\xdef\tfourchars{#1#2#3#4}
- \xdef\laststring{#5}}
-
-\def\uuid{\eightchars-%
- \ffourchars-%
- \sfourchars-%
- \tfourchars-%
- \laststring}
-
-\findUUID{\jobname.pdf}
-\edef\xmpdocid{\uuid}
-\findUUID{\pdfcreationdate}
-\edef\xmpinstid{\uuid}
-\InputIfFileExists{\jobname.xmpdata}{}{}
-\RequirePackage{xmpincl}
-\def\convertDate{\getYear}
-{\catcode`\D=12
- \gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
+\ifnum\pdfminorversion >3 \relax
+ \pdfmapline{+dummy-space <dummy-space.pfb}
+ \expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
+ \pdfgeninterwordspace=1 \relax
+ \fi
+\fi
+\ifpdfx@x
+ \@ifpackageloaded{hyperref}{%
+ \hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
+ }{%
+ \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]{hyperref}
+ }%
+\else
+ \ifpdfx@e
+ \@ifpackageloaded{hyperref}{%
+ \hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
+ }{%
+ \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]{hyperref}
+ }%
+ \else
+ \@ifpackageloaded{hyperref}{%
+ \hypersetup{pdftex,pdfa}%
+ }{%
+ \RequirePackage[pdftex,pdfa]{hyperref}
+ }%
+\fi\fi
+\hypersetup{pdfencoding=unicode}
+
+\RequirePackage{inputenc}
+
+%%----------------------------------------------------------------------
+%% Macros for reading XMP data with special catcodes. Usage:
+%%
+%% \xmp@parse{continuation}{data}
+%%
+%% The effect is to read the data with special catcodes: '<', '>', and
+%% '&' are "active", and '^', '_', '#', '$', '~' are "other". The data
+%% is then bound to the locally scoped name \@this, and the
+%% continuation is called.
+\def\xmp@parse#1{%
+ \begingroup
+ \catcode`\<=13\catcode`\>=13\catcode`\&=13\catcode`\^=12
+ \catcode`\_=12\catcode`\#=12\catcode`\$=12\catcode`\~=12
+ \xmp@doparse{#1}%
+}
+\def\xmp@doparse#1#2{%
+ \def\@this{#2}#1%
+ \endgroup%
+}
+
+%%----------------------------------------------------------------------
+%% Local commands. They are only brought into scope during the reading
+%% of xmpdata.
+\def\pdfx@localcommands{%
+ \def\Title{\xmp@parse{\global\let\xmp@Title\@this}}%
+ \def\Author{\xmp@parse{\global\let\xmp@Author\@this}}%
+ \def\Keywords{\xmp@parse{\global\let\xmp@Keywords\@this}}%
+ \def\Subject{\xmp@parse{\global\let\xmp@Subject\@this}}%
+ \def\CreatorTool{\xmp@parse{\global\let\xmp@CreatorTool\@this}}%
+ \def\Producer{\xmp@parse{\global\let\xmp@Producer\@this}}%
+ \def\Volume{\xmp@parse{\global\let\xmp@Volume\@this}}%
+ \def\Issue{\xmp@parse{\global\let\xmp@Issue\@this}}%
+ \def\CoverDisplayDate{\xmp@parse{\global\let\xmp@CoverDisplayDate\@this}}%
+ \def\CoverDate{\xmp@parse{\global\let\xmp@CoverDate\@this}}%
+ \def\Copyright{\xmp@parse{\global\let\xmp@Copyright\@this%
+ \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}%
+ \def\CopyrightURL{\xmp@parse{\global\let\xmp@CopyrightURL\@this%
+ \ifx\xmp@Copyrighted\@empty\gdef\xmp@Copyrighted{True}\fi}}%
+ \def\Copyrighted{\xmp@parse{\global\let\xmp@Copyrighted\@this}}%
+ \def\Doi{\xmp@parse{\global\let\xmp@Doi\@this}}%
+ \def\Lastpage{\xmp@parse{\global\let\xmp@Lastpage\@this}}%
+ \def\Firstpage{\xmp@parse{\global\let\xmp@Firstpage\@this}}%
+ \def\PublicationType{\xmp@parse{\global\let\xmp@PublicationType\@this}}%
+ \def\Journaltitle{\xmp@parse{\global\let\xmp@Journaltitle\@this%
+ \ifx\xmp@PublicationType\@empty\gdef\xmp@PublicationType{journal}\fi}}%
+ \def\Journalnumber{\xmp@parse{\global\let\xmp@Journalnumber\@this}}%
+ \def\Publisher{\xmp@parse{\global\let\xmp@Publisher\@this}}%
+ \def\AuthoritativeDomain{\xmp@parse{\global\let\xmp@AuthoritativeDomain\@this}}%
+ % some aliases for backward compatibility:
+ \let\Creator\CreatorTool%
+ \let\Org\Publisher%
+ \let\WebStatement\CopyrightURL%
+ % user-level commands for color profiles:
+ \let\setRGBcolorprofile\pdfx@setRGBcolorprofile%
+ \let\setCMYKcolorprofile\pdfx@setCMYKcolorprofile%
+ \let\setGRAYcolorprofile\pdfx@setGRAYcolorprofile%
+}
+
+%%----------------------------------------------------------------------
+%% Defaults
+
+\def\xmp@Producer{pdfTeX}
+\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
+\global\let\xmp@Copyrighted\@empty
+\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
+\global\let\xmp@AuthoritativeDomain\@empty
+
+%%----------------------------------------------------------------------
+%% The following characters and markup can be used within the XMP data
+%% defined by \Author, \Title, and so on.
+%%
+%% * All printable non-whitespace ASCII characters except
+%% '%', '{', '}', '\' can be used as themselves.
+%%
+%% * All printable non-whitespace UTF-8 encoded Unicode characters
+%% from the basic multilingual plane can be used as themselves.
+%%
+%% * As usual, consecutive whitespace characters are contracted to a
+%% single space. Whitespace after a macro such as \copyright is
+%% ignored. Blank lines are not permitted.
+%%
+%% * The following markup can be used:
+%% '\ ' - a literal space (for example after a macro)
+%% \% - a literal '%'
+%% \{ - a literal '{'
+%% \} - a literal '}'
+%% \backslash - a literal '\'
+%% \copyright - the (c) copyright symbol
+%%
+%% \sep - only permitted within \Author, \Keywords, \Publisher.
+%%
+%% * For backward compatibility, \& and \TextCopyright are also
+%% provided. Their use is deprecated.
+
+%%----------------------------------------------------------------------
+%% The macro \pdfx@actives binds the active characters
+%% '&', '<', and '>' to \pdfx@amp, \pdfx@lt, and \pdfx@gt,
+%% respectively, without actually making them active.
+\begingroup
+ \catcode`\<=13
+ \catcode`\>=13
+ \catcode`\&=13
+ \gdef\pdfx@actives{
+ \def&{\pdfx@amp}
+ \def<{\pdfx@lt}
+ \def>{\pdfx@gt}
+ }
+\endgroup
+
+%%----------------------------------------------------------------------
+%% Markup bindings to be used during XMP generation.
+
+{\obeyspaces\gdef\pdfx@sep{</rdf:li>^^J <rdf:li>}}
+
+\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%
+}
+
+%%----------------------------------------------------------------------
+%% 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\>}%
+ \let\TextCopyright\copyright % for backward compatibility
+ \def\sep{, }%
+ % Note: '\ ', \&, \copyright are already predefined by hyperref.
+}
+
+%%----------------------------------------------------------------------
+\def\pdfx@findUUID#1{\edef\pdfx@tmpstring{\pdfmdfivesum{#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}
+ \pdfx@fouroffive#9\end}
+\def\pdfx@fouroffive#1#2#3#4#5\end{\xdef\pdfx@ffourchars{#1#2#3#4}
+ \pdfx@sfouroffive#5\end}
+\def\pdfx@sfouroffive#1#2#3#4#5\end{\xdef\pdfx@sfourchars{#1#2#3#4}
+ \pdfx@tfouroffive#5\end}
+\def\pdfx@tfouroffive#1#2#3#4#5\end{\xdef\pdfx@tfourchars{#1#2#3#4}
+ \xdef\pdfx@laststring{#5}}
+
+\def\pdfx@uuid{\pdfx@eightchars-%
+ \pdfx@ffourchars-%
+ \pdfx@sfourchars-%
+ \pdfx@tfourchars-%
+ \pdfx@laststring}
+
+\pdfx@findUUID{\jobname.pdf}
+\edef\xmp@docid{\pdfx@uuid}
+\pdfx@findUUID{\pdfcreationdate}
+\edef\xmp@instid{\pdfx@uuid}
+
+%%----------------------------------------------------------------------
+%% ----- 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{<filename>}{<identifier>}{<info string>}{<registry URL>}
+%% \setCMYKcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+%% \setGRAYcolorprofile{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+%%
+%% 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\%}%
}
-\def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
-\def\getDay#1#2{\edef\xDay{#1#2}\getHour}
-\def\getHour#1#2{\edef\xHour{#1#2}\getMin}
-\def\getMin#1#2{\edef\xMin{#1#2}\getSec}
-\def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
-\def\getTZh +#1#2{\edef\xTZh{#1#2}\getTZm}
-\def\getTZm '#1#2'{%
- \edef\xTZm{#1#2}%
- \edef\convDate{\xYear-\xMonth-\xDay
- T\xHour:\xMin:\xSec+\xTZh:\xTZm}}
-\expandafter\convertDate\pdfcreationdate
-\ifpdfxonea
- \def\@pctchar{\expandafter\@gobble\string\%}
- \def\@bchar{\expandafter\@gobble\string\\}
- \immediate\pdfobj stream attr{/N 4} file{FOGRA39L.icc}
- \edef\OBJ@CVR{\the\pdflastobj}
- \pdfcatalog{/OutputIntents [ <<
+\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}%
+ \pdfstringdef\pdfx@gray@registry{#4}% valid URL
+ \endgroup}% closes-off \pdfx@setGRAYcolorprofile
+%%----------------------------------------------------------------------
+%% 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}
+%%----------------------------------------------------------------------
+%% License for the file sRGB_IEC61966-2-1_black_scaled.icc :
+%%
+%% Copyright International Color Consortium, 2009 -- http://www.color.org/
+%%
+%% It is hereby acknowledged that the file "sRGB_IEC61966-2-1_black_scaled.icc"
+%% is provided "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTY.
+%%
+%% Licensing
+%%
+%% This profile is made available by the International Color Consortium,
+%% and may be copied, distributed, embedded, made, used, and sold without
+%% restriction. Altered versions of this profile shall have the original
+%% identification and copyright information removed and shall not be
+%% misrepresented as the original profile.
+%%
+%% 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.
+%%
+%%----------------------------------------------------------------------
+%% License for the file coated_FOGRA39L_argl.icc :
+%%
+%% The zlib/libpng License
+%%
+%% Copyright (c) 2008 Kai-Uwe Behrmann
+%%
+%% This software is provided 'as-is', without any express or implied
+%% warranty. In no event will the authors be held liable for any damages
+%% arising from the use of this software.
+%%
+%% Permission is granted to anyone to use this software for any purpose,
+%% including commercial applications, and to alter it and redistribute
+%% it freely, subject to the following restrictions:
+%%
+%% 1. The origin of this software must not be misrepresented; you
+%% must not claim that you wrote the original software. If you use
+%% this software in a product, an acknowledgment in the product
+%% documentation would be appreciated but is not required.
+%%
+%% 2. Altered source versions must be plainly marked as such, and
+%% must not be misrepresented as being the original software.
+%%
+%% 3. This notice may not be removed or altered from any source
+%% distribution.
+%%----------------------------------------------------------------------
+
+\begingroup
+ \inputencoding{8bit}%
+ \makeatletter
+ \pdfx@localcommands
+ \InputIfFileExists{\jobname.xmpdata}%
+ {\typeout{**pdfx: Metadata file \jobname.xmpdata read successfully.}}%
+ {\typeout{**pdfx: No file \jobname.xmpdata . Metadata will be incomplete!}}
+\endgroup
+%% ----------------------------------------------------------------------
+\begingroup
+\ifpdfx@x % PDF/X needs a CMYK color profile for printing
+ \def\0{\string\0}
+ \catcode`\_ 12
+ \ifno@iccprofile % PDF/X-4p and PDF/X-5pg
+ \immediate\pdfobj {<</FS /URL /F (http://www.color.org/registry/profiles/Coated_Fogra39L_VIGC_300.icc)>>}
+ \edef\OBJ@URLs{\the\pdflastobj}%
+ \xdef\pdfx@cmyk@intent{Coated_Fogra39L_VIGC_300}%
+ \xdef\pdfx@cmyk@identifier{Coated_Fogra39L_VIGC_300.icc}%
+ \immediate\pdfobj {<<%
+ /CheckSum <5449c505618a9b6c38634b4708ae9e37>^^J% d5f0714cd9d6092b6ac93b625f5d8a0c>%
+ /ICCVersion (\004\002\000\000)% 4.2.0.0
+ /ProfileCS (CMYK)^^J%
+ /ProfileName (\pdfx@cmyk@identifier)^^J%
+ /URLs [\OBJ@URLs\space 0 R ]
+ >>} %
+ \edef\OBJ@ICC{\the\pdflastobj}%
+ \pdfcatalog{%
+ /OutputIntents [ <<
+ /Type/OutputIntent
+ /S/GTS_PDFX
+ /OutputCondition (\pdfx@cmyk@intent)%
+ /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
+ /RegistryName(\pdfx@cmyk@registry)
+ % 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}{%
+ % embedded CMYK color profile
+ \immediate\pdfobj stream attr{/N 4} file{\pdfx@cmyk@profile}%
+ \edef\OBJ@CMYK{\the\pdflastobj}%
+ \pdfcatalog{%
+ /OutputIntents [ <<
/Type/OutputIntent
/S/GTS_PDFX
- /OutputCondition (FOGRA39)
- /OutputConditionIdentifier (FOGRA39 \@bchar(ISO Coated v2
- 300\@pctchar\space \@bchar(ECI\@bchar)\@bchar))
- /DestOutputProfile \OBJ@CVR\space 0 R
- /RegistryName(http://www.color.org)
- >> ]}
+ /OutputCondition (\pdfx@cmyk@intent)%
+ /OutputConditionIdentifier (\pdfx@cmyk@identifier)%
+ /RegistryName(\pdfx@cmyk@registry)
+ /DestOutputProfile \OBJ@CMYK\space 0 R
+ >> ]}%
+ }{%
+ \errmessage{No color profile found to use for CMYK printing colors.}%
+ }%
+ \fi % end of \ifno@iccprofile
\else
- \immediate\pdfobj stream attr{/N 4} file{sRGBIEC1966-2.1.icm}
- \edef\OBJ@RVT{\the\pdflastobj}
+%% 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}%
+ }{%
+ \errmessage{No color profile found to use for RGB screen colors.}%
+ }%
\pdfcatalog{%
+ /ViewerPreferences <</DisplayDocTitle true >>
/OutputIntents [ <<
/Type /OutputIntent
- /S/GTS_PDFA1
- /DestOutputProfile \OBJ@RVT\space 0 R
- /OutputConditionIdentifier (sRGB IEC61966-2.1)
- /Info(sRGB IEC61966-2.1)
- >> ]}
-\fi
+ \ifpdfx@e
+ /S/ISO_PDFE1
+ \else
+ /S/GTS_PDFA1
+ \fi
+ /OutputConditionIdentifier (\pdfx@rgb@identifier)%
+ /DestOutputProfile \OBJ@RGB\space 0 R
+ /Info(\pdfx@rgb@info)
+ /RegistryName(\pdfx@rgb@registry)
+ >>
+ ]}%
+\fi % end of \ifpdfx@x
+\endgroup
+
+%% ----------------------------------------------------------------------
+%% Make a version of \xmp@Keywords and \xmp@Author where \sep has been
+%% replaced by a comma. The first is for the pdf:Keywords property,
+%% which accepts a comma-separated string of keywords, and seems to be
+%% mandatory for PDF/A-1 compliance. The second is for the dc:creator
+%% property. Although it is defined to be a sequence of authors, Adobe
+%% Acrobat will in fact ignore and delete all except the first author.
+%% Therefore, it's safer to always separate authors by commas.
+
\begingroup
-\let\&=\xmpAmp
-\ifpdfxonea
- \includexmp{pdfx-1a}
-\else
- \includexmp{pdfa-1b}
-\fi
+ \pdfx@xmpmarkup
+ \def\sep{, }%
+ \inputencoding{8bit}\makeatletter
+ \xdef\xmp@@Keywords{\xmp@Keywords}
+ \xdef\xmp@@Author{\xmp@Author}
+\endgroup
+
+%% ----------------------------------------------------------------------
+\def\xmp@convertDate{\pdfx@getYear}
+{\catcode`\D=12 \catcode`\:=12
+ \gdef\pdfx@getYear D:#1#2#3#4{\edef\pdfx@xYear{#1#2#3#4}\pdfx@getMonth}
+}
+\def\pdfx@getMonth#1#2{\edef\pdfx@xMonth{#1#2}\pdfx@getDay}
+\def\pdfx@getDay#1#2{\edef\pdfx@xDay{#1#2}\pdfx@getHour}
+\def\pdfx@getHour#1#2{\edef\pdfx@xHour{#1#2}\pdfx@getMin}
+\def\pdfx@getMin#1#2{\edef\pdfx@xMin{#1#2}\pdfx@getSec}
+\def\pdfx@getSec#1#2{\edef\pdfx@xSec{#1#2}\pdfx@getTZh}
+\def\pdfx@getTZh{\futurelet\pdfx@next\pdfx@getTzh@branches}
+
+{\catcode`\@=11 \catcode`\Z=12 \catcode`\+=12 \catcode`\-=12
+\gdef\pdfx@getTzh@branches{%
+ \ifx\pdfx@next Z\let\pdfx@getTzbranch\pdfx@getTznozone
+ \else\ifx\pdfx@next +\let\pdfx@getTzbranch\pdfx@getTzplus
+ \else\ifx\pdfx@next -\let\pdfx@getTzbranch\pdfx@getTzminus
+ \else\let\pdfx@getTzbranch\pdfx@getTzerror
+ \fi\fi\fi \pdfx@getTzbranch }
+
+\catcode`\0=12
+\gdef\pdfx@getTznozone Z#1\pdfx@getTzend{%
+ \edef\pdfx@xTzh{+00}\edef\pdfx@xTzm{00}}
+\gdef\pdfx@getTzplus +#1'#2'#3\pdfx@getTzend{%
+ \edef\pdfx@xTzh{+#1}\edef\pdfx@xTzm{#2}%
+ \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
+\gdef\pdfx@getTzminus -#1'#2'#3\pdfx@getTzend{%
+ \edef\pdfx@xTzh{-#1}\edef\pdfx@xTzm{#2}%
+ \ifx\relax#2\relax\def\pdfx@xTzm{00}\fi}
+\expandafter\xmp@convertDate\pdfcreationdate''\pdfx@getTzend
+\xdef\pdfx@convDate{\pdfx@xYear\pdfx@xMonth\pdfx@xDay\pdfx@xHour\pdfx@xMin\pdfx@xSec\pdfx@xTzh'\pdfx@xTzm'}%
+\xdef\xmp@convDate{\pdfx@xYear-\pdfx@xMonth-\pdfx@xDay T\pdfx@xHour:\pdfx@xMin:\pdfx@xSec\pdfx@xTzh:\pdfx@xTzm}%
+}% end of \catcode
+
+%% ----------------------------------------------------------------------
+%% \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
+%% is \@empty, set \toka to \@empty.
+
+\def\pdfx@topdfstring#1#2{%
+ \ifx#2\@empty
+ \global\let#1\@empty
+ \else
+ \begingroup
+ \inputencoding{utf8}%
+ \hypersetup{pdfencoding=unicode}%
+ \pdfstringdef#1{#2}%
+ \endgroup
+ \fi
+}
+
+%% Convert the relevant XMP properties to PDF strings, expanding markup
+%% (such as \sep, \&, \copyright, etc) in an appropriate way.
+\begingroup
+ \pdfx@pdfmarkup
+ \pdfx@topdfstring\pdfx@Title\xmp@Title
+ \pdfx@topdfstring\pdfx@Author\xmp@Author
+ \pdfx@topdfstring\pdfx@Subject\xmp@Subject
+ \pdfx@topdfstring\pdfx@Keywords\xmp@Keywords
+ \pdfx@topdfstring\pdfx@CreatorTool\xmp@CreatorTool
+ \pdfx@topdfstring\pdfx@Producer\xmp@Producer
\endgroup
\input glyphtounicode.tex
\input glyphtounicode-cmr.tex
\pdfgentounicode=1
-\ifpdfxonea
- \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false]{hyperref}
- \pdfinfo{
- /Title(\xmpTitle)%
- /Author(\xmpAuthor)%
- /Creator(\xmpProducer)%
- /CreationDate(\convDate)%
- /ModDate(\convDate)%
- /Producer(\xmpProducer)%
- /Trapped /False
- /GTS_PDFXVersion (PDF/X-1:2001)%
- /GTS_PDFXConformance (PDF/X-1a:2001)%
- }
+
+\ifpdfx@x
+ {\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)%
+ \ifnum\xmp@Part=1
+ /GTS_PDFXVersion(PDF/X-1\ifnum\xmp@ReleaseDate>2001\xmp@Conformance\fi:\xmp@ReleaseDate)%
+ \else
+ /GTS_PDFXVersion(PDF/X-\xmp@Part\xmp@Conformance\ifnum\xmp@Part< 4 :\xmp@ReleaseDate\fi)%
+ \fi
+ \ifnum\xmp@Part < 3
+ /GTS_PDFXConformance(PDF/X-\xmp@Part\xmp@Conformance:\xmp@ReleaseDate)%
+ \fi
+ \ifpdfx@vt % support for PDF/VT extensions of PDF/X-4 and PDF/X-5
+%% /GTS_PDFVTVersion(PDF/VT-\xmp@vtPart\xmp@vtConformance)%
+ \fi
+ \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
+ /ModDate(D:\pdfx@convDate)%
+ /Producer(\pdfx@Producer)%
+ \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
+ \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
+ /Trapped/False%
+ }% end of PDF/X info
+ }%
\else
- \RequirePackage[pdftex,pdfa]{hyperref}
- \def\PDF@FinishDoc{%
- \Hy@UseMaketitleInfos
- \pdfinfo{%
- /Creator(\xmpProducer)%
+ \ifpdfx@e
+ {\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)%
+ /GTS_PDFEVersion(PDF/E-1\xmp@Conformance:\xmp@ReleaseDate)%
+ \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
+ /ModDate(D:\pdfx@convDate)%
+ /Producer(\pdfx@Producer)%
+ \ifx\pdfx@Subject\@empty\else /Subject(\pdfx@Subject)\fi
+ \ifx\pdfx@Title\@empty\else /Title(\pdfx@Title)\fi
+ /Trapped/False%
+ }% end of PDF/E info
+ }%
+ \else
+ \def\pdfx@confA{a}%
+ \def\pdfx@confB{b}%
+ \def\pdfx@confU{u}%
+ \edef\xmp@conformance{\csname pdfx@conf\xmp@Conformance\endcsname}%
+ \AtBeginDocument{%
+ \def\PDF@FinishDoc{%
+ \Hy@UseMaketitleInfos
+ \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
+ \ifx\pdfx@Keywords\@empty\else /Keywords(\pdfx@Keywords)\fi
+ /Creator(\pdfx@CreatorTool)%
\ifx\@pdfcreationdate\@empty
- \else
+ /CreationDate(D:\pdfx@convDate)%
+ \else
/CreationDate(\@pdfcreationdate)%
- \fi
- \ifx\@pdfmoddate\@empty
- \else
+ \fi
+ \ifx\@pdfmoddate\@empty
+ /ModDate(D:\pdfx@convDate)%
+ \else
/ModDate(\@pdfmoddate)%
- \fi
- /Producer(\xmpProducer)%
- /Trapped /False
- /GTS_PDFA1Version (PDF/A-1b:2005)%
- }%
- \Hy@DisableOption{pdfauthor}%
- \Hy@DisableOption{pdftitle}%
- \Hy@DisableOption{pdfsubject}%
- \Hy@DisableOption{pdfcreator}%
- \Hy@DisableOption{pdfcreationdate}%
- \Hy@DisableOption{pdfmoddate}%
- \Hy@DisableOption{pdfproducer}%
- \Hy@DisableOption{pdfkeywords}}
-\fi
+ \fi
+ /Producer(\pdfx@Producer)%
+ /Trapped/False
+ /GTS_PDFA1Version (PDF/A-\xmp@Part\xmp@conformance:\xmp@ReleaseDate)%
+ }% end of PDF/A info
+ }% end of \PDF@FinishDoc
+ }% end of \AtBeginDocument
+\fi\fi
+
+%%----------------------------------------------------------------------
+\RequirePackage{xmpincl}
+\begingroup
+ \ifpdfx@x
+ \ifpdfx@vt
+ \def\xmp@template{pdfvt}%
+ \else
+ \def\xmp@template{pdfx}% formerly pdfx-1a
+ \fi
+ \else
+ \ifpdfx@e
+ \def\xmp@template{pdfe}%
+ \else
+ \def\xmp@template{pdfa}%
+ \fi\fi
+ % patch commands from xmpincl.sty ...
+ \def\pdfx@xmpinclStart{% supply byte-order marker
+ <?xpacket begin='^^ef^^bb^^bf'? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+ }%
+ \def\pdfx@xmpinclStartAlt{% no byte-order marker
+ <?xpacket begin=''? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+ }%
+ \def\pdfx@xmpinclEnd{% allow XMP packet to be writable
+ <?xpacket end='w'?> %
+ }%
+ \let\mcs@xmpinclStart\pdfx@xmpinclStart
+ \let\mcs@xmpinclStartAlt\pdfx@xmpinclStartAlt
+ \ifpdfx@noBOM % don't use the byte-order marker
+ \let\mcs@xmpinclStart\pdfx@xmpinclStartAlt
+ \fi
+ \let\mcs@xmpinclEnd\pdfx@xmpinclEnd
+%% ... preventing their redefinition
+ \def\newcommand#1#2{}%
+ %
+ \pdfx@xmpmarkup
+ \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
+ \typeout{Using XMP template file: \xmp@template.xmp}%
+ \includexmp{\xmp@template}
+\endgroup
+
+%% disable hyperref options, to prevent changes that will cause an incompatibility
+ \Hy@DisableOption{pdfauthor}%
+ \Hy@DisableOption{pdftitle}%
+ \Hy@DisableOption{pdfsubject}%
+ \Hy@DisableOption{pdfcreator}%
+ \Hy@DisableOption{pdfcreationdate}%
+ \Hy@DisableOption{pdfmoddate}%
+ \Hy@DisableOption{pdfproducer}%
+ \Hy@DisableOption{pdfkeywords}%
\endinput
%%
%% End of file `pdfx.sty'.