summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-02-05 23:40:13 +0000
committerKarl Berry <karl@freefriends.org>2016-02-05 23:40:13 +0000
commit463c2ec14523be0366ac7388095b0e1dacbc8d3f (patch)
tree8c61b63ccc40dcf7308ecafe2c061914be629067 /Master/texmf-dist/source/latex/pdfx/pdfx.dtx
parent51400e096ca50dd3c9303cf8aea839947ea4c0dc (diff)
pdfx (5feb16)
git-svn-id: svn://tug.org/texlive/trunk@39594 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/pdfx/pdfx.dtx')
-rw-r--r--Master/texmf-dist/source/latex/pdfx/pdfx.dtx1226
1 files changed, 915 insertions, 311 deletions
diff --git a/Master/texmf-dist/source/latex/pdfx/pdfx.dtx b/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
index debb49866a1..186e2f8abb7 100644
--- a/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
+++ b/Master/texmf-dist/source/latex/pdfx/pdfx.dtx
@@ -2,7 +2,7 @@
%
% File: pdfx.dtx
%
-% Copyright (c) 2015, CV Radhakrishnan <cvr@river-valley.org>,
+% Copyright (c) 2016, 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>
@@ -19,12 +19,16 @@
%
% \fi
%
-% \CheckSum{1844}
+% \CheckSum{2209}
% \iffalse
%
%<*driver>
\documentclass[a4paper]{ltxdoc}
+\providecommand{\pdfxopt}{a-2u}
\usepackage{rvdtx}
+\usepackage[\pdfxopt]{pdfx}
+\usepackage[T1]{fontenc}
+\hypersetup{citecolor=blue}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -89,13 +93,19 @@
% \changes{v1.3}{2008/12/01}{Fix copyright in xmp files.}
% \changes{v1.5.4}{2015/02/28}{Fixed timezone bug; Unicode support; more
% PDF variants; added color profiles.}
+% \changes{v1.5.5}{2015/03/23}{Support for PDF/X-4p and PDF/X-5pg
+% with external color profiles.}
+% \changes{v1.5.6}{2016/02/05}{Suppressed `dummy-space' font warning;
+% removed spurious '?' in XMP packets; improved handling of Color Profiles;
+% ensure Hy@pdfatrue when building PDF/A, for link flags;
+% properly enables xcolor conversion of color models.}
%
-% \title{Generation of PDF/X and PDF/A compliant PDF's
-% with PDF\TeX{} --- \texttt{pdfx.sty}}
-% \date{2015/02/28}
-% \version{1.5.4}
+% \title{Generation of PDF/X- and PDF/A-compliant PDFs
+% with pdf\TeX{} --- \texttt{pdfx.sty}}
+% \date{2016/02/05}
+% \version{1.5.6}
% \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX}
-% \author{C.\,V.\,Radhakrishnan, \thanh, Ross~Moore {\upshape\small
+% \author{C.\,V.\,Radhakrishnan, \Thanh, Ross~Moore {\upshape\small
% and} Peter Selinger}
% \contact{\texttt{[cvr,thanh]@river-valley.org},
% \texttt{ross.moore@mq.edu.au}, \texttt{selinger@mathstat.dal.ca}}
@@ -104,36 +114,88 @@
%
% \StopEventually{}
%
-% \section{Introduction}
+% \section[Introduction]{Introduction}
+%
+% This package\footnote{A slightly earlier version of this documentation
+% was published as \cite{pdfx}.}
+% currently supports generation of PDF/X- and
+% PDF/A-compliant documents using \pdftex, in some of their variants.
+% Support for additional standards, such as PDF/E, PDF/VT
+% is also available; see the complete list in Section~\ref{ssec-options} below.
+% By `supports', we mean that the package provides correct and sufficient
+% means to declare that a document conforms with a stated PDF variant
+% (PDF/X, PDF/A, PDF/E, PDF/VT, etc.) along with the version
+% and/or level of conformance.
+% This package also allows appropriate metadata and color profile
+% to be specified, according to the requirements of the PDF variant.
+%
+% Metadata elements, most of which must ultimately be written as XML
+% using the UTF-8 encoding, is provided via a file named |\jobname.xmpdata|,
+% for the running \LaTeX\ job. Without such a file, providing some required
+% information as well as a large range of optional data, a fully validating
+% PDF file cannot be achieved. The PDF can be created, having the correct
+% visual appearance on all pages, but it will not pass validation checks.
+% Section~\ref{ssec-metadata} describes how this file should be constructed.
+%
+% \medskip
+% What this package \emph{does not} do is to check for all the details
+% of document structure and type of content that may be required
+% (or restricted) within a PDF variant. For example, PDF/VT \cite{PDFVT} requires
+% well-structure parts, using Form XObject sections tagged as `/DPart'.
+% Similarly PDF/A-1a (and 2a and 3a) \cite{PDFA,PDFA2,PDFA3} require
+% a fully `Tagged PDF', including a detailed structure tagging which
+% envelops the complete contents of the document.
+% This is beyond the current version of \pdftex, as commonly shipped.
+% So while this package provides enough to meet the declaration,
+% metadata and font-handling aspects for these PDF/A variants,
+% it is not sufficient to produce fully conforming PDFs.
+% However, with extra \pdftex-based software that \emph{is} capable
+% of producing `Tagged PDF', this package can be used as part of
+% the overall workflow to produce fully conforming documents.
+% It is also reported to have been successfully used with Lua\TeX.
+%
+%
+% \subsection{PDF standards}\label{ssec-standards}
%
% PDF/X and PDF/A are umbrella terms used to denote several ISO
-% standards that define different subsets of the PDF standard. The
-% objective of PDF/X is to facilitate graphics exchange between
+% standards \cite{PDFX,PDFX3,PDFX1a,PDFX4,PDFX5,PDFA,PDFA2,PDFA3}
+% that define different subsets of the PDF standard \cite{PDF17,ISO32000}.
+% The objective of PDF/X is to facilitate graphics exchange between
% document creator and printer and therefore, has all requirements
% related to printing. For instance, in PDF/X, all fonts need to be
% embedded and all images need to be CMYK or spot colors. PDF/X-2 and
% PDF/X-3 accept calibrated RGB and CIELAB colors along with all other
% specifications of PDF/X.
+% Since 2005 other variants of PDF/X have emerged, as extra effects
+% (such as layering and transparency) have been supported within the PDF
+% standard itself. The full range of versions and conformance supported
+% in this package is discussed below in Section~\ref{ssec-options}.
%
% PDF/A defines a profile for archiving PDF documents, which ensures
-% the documents can be reproduced the exact same way in years to
-% come. A key element to achieving this is that PDF/A documents shall
-% be 100\% self contained. All the information needed to display the
-% document in the same manner every time is embedded in the file. A
-% PDF/A document is not permitted to be reliant on information from
+% the documents can be reproduced in the exact same way in years to
+% come. A key element to achieving this is that PDF/A documents
+% are 100\% self-contained. All the information needed to display the
+% document in the same manner every time is embedded in the file.
+% A PDF/A document is not permitted to be reliant on information from
% external sources. Other restrictions include avoidance of
-% audio/video content, JavaScript and encryption. Mandatory inclusion
-% of fonts, color profile and standards based metadata are absolutely
-% essential for PDF/A.
+% audio/video content, JavaScript and encryption.
+% Mandatory inclusion of fonts, color profile and standards-based metadata
+% are absolutely essential for PDF/A.
+% Later versions allow for use of image compression and file attachments.
%
-% This package currently supports generation of PDF/X and PDF/A
-% compliant documents using \pdftex. Support for additional standards
-% is also included; see the complete list in
-% Section~\ref{ssec-options} below.
+% PDF/E is an ISO standard \cite{PDFE} intended for documents used in engineering workflows.
+% PDF/VT \cite{PDFVT} allows for high-volume customised form printing, such as utility bills.
+% PDF/UA (`Universal Accessibility') is emerging as a standard \cite{PDF-UA,PDFUA1} supporting
+% Assistive Technologies, incorporating web-accessibility guidelines (WCAG)
+% for electronic documents.
+% In future, PDF/H may emerge for health records and medical-related
+% documents. Other applications can be envisaged.
+% Declarations and Metadata are supported for the first two of these.
+% The others are the subject of further work; revised versions of this
+% package can be expected in later years.
%
-% \section{Usage}
%
-% \subsection{Options}\label{ssec-options}
+% \section[Usage]{Usage}
%
% The package can be loaded with the command:
% \begin{decl}
@@ -141,22 +203,24 @@
% \end{decl}
% where the options are as follows.
%
+% \subsection{Options}\label{ssec-options}
+%
% \subsubsection{PDF/A options}
%
-% PDF/A is an ISO standard intended for long-term archiving of
+% PDF/A is an ISO standard~\cite{PDFA,PDFA2,PDFA3} intended for long-term archiving of
% electronic documents. It therefore emphasizes self-containedness and
-% reproducibility, as well as machine readable metadata. The PDF/A
-% standard has three conformance levels ``a'', ``b'', and ``u''. Level
-% ``a'' is the strictest, but is not yet fully implemented by the
-% |pdfx| package. Conformance level ``u'' has the same requirements as
-% level ``b'', but with the additional requirement that all text in
+% reproducibility, as well as machine-readable metadata. The PDF/A
+% standard has three conformance levels `a', `b', and `u'. Level
+% `a' is the strictest, but is not yet fully implemented by the
+% |pdfx| package. Conformance level `u' has the same requirements as
+% level `b', but with the additional requirement that all text in
% the document must have a Unicode mapping. However, the |pdfx|
-% package produces such Unicode mappings even in level ``b'' files.
+% package produces such Unicode mappings even in level `b' files.
% The standard also has three different versions 1, 2, and 3, which
-% were standardized in 2005, 2011, and 2012, respectively. Earlier
+% were standardized in 2005, 2011 and 2012, respectively. Earlier
% versions contain a subset of the features of later versions, so for
% maximum portability, it is preferable to use a lower-numbered
-% version. There is no conformance level ``u'' in version 1 of the
+% version. There is no conformance level `u' in version 1 of the
% standard. For many typical uses of PDF/A, it is sufficient to use
% PDF/A-1b.
%
@@ -170,6 +234,11 @@
% \item |a-3b|: generate PDF/A-3b.
% \item |a-3u|: generate PDF/A-3u.
% \end{itemize}
+% By `Experimental, not fully implemented' here we mean primarily that
+% the document structure, as required for `Tagged PDF', is not handled
+% by this package. Using other \pdftex-based software that \emph{is}
+% capable of producing such complete tagging, conforming documents
+% can indeed be produced.
%
% \subsubsection{PDF/E options}
%
@@ -196,6 +265,14 @@
% \item |vt-2|: generate PDF/VT-2. Experimental, not fully implemented.
% \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented.
% \end{itemize}
+% By `Experimental, not fully implemented' here we mean primarily that
+% the structuring of a document into `/DPart' sections, as Form XObjects,
+% is not handled by this package.
+% This \emph{is} possible with current \pdftex\ software,
+% but not yet in a way that lends itself easily to full automation, due to
+% requirements of knowing the internal object number of certain internal
+% PDF constructs. All the other aspects: PDFInfo declaration, Metadata
+% and Color Profile, of the PDF/VT variants are correctly handled.
%
% \subsubsection{PDF/X options}
%
@@ -203,15 +280,16 @@
% emphasizes printing-related requirements, such as embedded fonts and
% color profiles. The PDF/X standard has a large number of variants
% and conformance levels. The basic variants are known as X-1, X-1a,
-% X-3, X-4, and X-5. (Note that there is no X-2 standard, because it
-% was either never published or withdrawn). The PDF/X-1a standard
-% exists in revisions of 2001 and 2003, the PDF/X-3 standard exists in
-% revisions of 2002 and 2003, and the PDF/X-4 and PDF/X-5 standards
-% exist in revisions of 2008 and 2010. Moreover, some of these
-% standards have a ``p'' version, which permits the use of an
-% externally supplied color profile (instead of an embedded one),
-% and/or a ``g'' version, which permits the use of external graphical
-% content. Moreover, PDF/X-5 has an ``n'' version, which extends
+% X-3, X-4, and X-5. (Note that a revised version of the X-2 standard
+% was published in 2003, but withdrawn as an ISO standard in 2011,
+% basically due to lack of interest in using it).
+% The PDF/X-1a standard exists in revisions of 2001 and 2003,
+% the PDF/X-3 standard exists in revisions of 2002 and 2003,
+% and the PDF/X-4 and PDF/X-5 standards exist in revisions of 2008 and 2010.
+% Moreover, some of these standards have a `p' version, which permits the
+% use of an externally supplied color profile (instead of an embedded one),
+% and/or a `g' version, which permits the use of external graphical
+% content. Moreover, PDF/X-5 has an `n' version, which extends
% PDF/X-4p by permitting additional color spaces other than Grayscale,
% RGB, and CMYK. For many typical uses of PDF/X, it is sufficient to
% use PDF/X-1a.
@@ -226,15 +304,13 @@
% also available to specify PDF/X-4:2008 or PDF/X-4:2010 explicitly.
% \item |x-4p|: generate PDF/X-4p. Options |x-4p08| and |x-4p10| are
% also available to specify PDF/X-4p:2008 or PDF/X-4p:2010 explicitly.
-% Experimental, not fully implemented.
% \item |x-5g|: generate PDF/X-5g. Options |x-5g08| and |x-5g10| are
% also available to specify PDF/X-5g:2008 or PDF/X-5g:2010 explicitly.
% \item |x-5n|: generate PDF/X-5n. Options |x-5n08| and |x-5n10| are
-% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010
-% explicitly. Experimental, not fully implemented.
+% also available to specify PDF/X-5n:2008 or PDF/X-5n:2010 explicitly.
+% Experimental, not fully implemented.
% \item |x-5pg|: generate PDF/X-5pg. Options |x-5pg08| and |x-5pg10| are
% also available to specify PDF/X-5pg:2008 or PDF/X-5pg:2010 explicitly.
-% Experimental, not fully implemented.
% \end{itemize}
%
% \subsubsection{Other options}
@@ -242,9 +318,14 @@
% These options are experimental and should not normally be used.
%
% \begin{itemize}
-% \item |noBOM|: do not generate the optional byte order marker in the
-% embedded XMP metadata. Try this option in case there is an
-% unexplained error involving the |xmpincl| package.
+% \item |useBOM|: generate an explicit UTF-8 byte-order marker in the
+% embedded XMP metadata, and make the XMP packet writable. Neither
+% of these features are required by the PDF/A standard, but there
+% exist some PDF/A validators (reportedly |validatepdfa.com|) that
+% seem to require them. Note: the implementation of this feature is
+% experimental and may break with future updates to the |xmpincl|
+% package.
+% \item |noBOM|: do not generate the optional byte-order marker. (default)
% \item |pdf13|: use PDF 1.3, overriding the version specified by the
% applicable standard. This may produce a non-standard-conforming PDF file.
% \item |pdf14|: use PDF 1.4, overriding the version specified by the
@@ -257,9 +338,9 @@
% applicable standard. This may produce a non-standard-conforming PDF file.
% \end{itemize}
%
-% \subsection{Data file for metadata}
+% \subsection{Data file for metadata}\label{ssec-metadata}
%
-% As mentioned above, standards compliant PDF documents need metadata
+% As mentioned above, standards-compliant PDF documents require metadata
% to be included. The |pdfx| package expects the metadata to be
% supplied in a special data file called |\jobname.xmpdata|. Here,
% |\jobname| is usually the basename of the document's main |.tex|
@@ -275,9 +356,20 @@
% \Keywords{cookies\sep muffins\sep cakes}
% \Publisher{Baking International}
% \end{verbatim}
-% You may note that multiple authors and keywords have been separated
+% You should note that multiple authors and keywords have been separated
% by |\sep|. The |\sep| macro is only permitted in within the
% |\Author|, |\Keywords|, and |\Publisher| fields.
+%
+% After processing, the local directory contains a file named such as
+% |pdfa.xmpi| or |pdfx.xmpi| according to the PDF variant required.
+% This file is the complete XMP Metadata packet. It can be checked for
+% validity, using an online validator, such as at
+% \href{http://www.pdflib.com/knowledge-base/xmp-metadata/free-xmp-validator/}{www.pdflib.com}.
+%
+% \textbf{Warning}: The |\jobname.xmpdata| file may be included in the
+% main document source, within a |{filecontents}| environment,
+% but \emph{only} when it contains \emph{no} non-ascii UTF-8 byte sequences.
+% See Section~\ref{ssec-symbols} below for more information.
%
% \subsection{List of supported metadata fields}
%
@@ -302,20 +394,20 @@
% \item |\Copyright|: a copyright statement.
% \item |\CopyrightURL|: location of a web page describing the owner
% and/or rights statement for this document.
-% \item |\Copyrighted|: ``True'' if the document is copyrighted, and
-% ``False'' if it isn't. This is automatically set to ``True'' if either
-% |\Copyright| or |\CopyrightURL| is specified, but can be
-% overridden. For example, if the copyright statement is ``Public
-% Domain'', this should be set to ``False''.
+% \item |\Copyrighted|: `True' if the document is copyrighted,
+% and `False' if it isn't. This is automatically set to `True'
+% if either |\Copyright| or |\CopyrightURL| is specified, but can
+% be overridden. For example, if the copyright statement is
+% `Public Domain', this should be set to `False'.
% \end{itemize}
%
% \subsubsection{Publication information:}
%
% \begin{itemize}
% \item |\PublicationType|: The type of publication. If defined, must
-% be one of book, catalog, feed, journal, magazine, manual,
-% newsletter, pamphlet. This is automatically set to ``journal'' if
-% |\Journaltitle| is specified, but can be overridden.
+% be one of `book', `catalog', `feed', `journal', `magazine', `manual',
+% `newsletter', `pamphlet'. This is automatically set to `journal'
+% if |\Journaltitle| is specified, but can be overridden.
% \item |\Journaltitle|: The title of the journal in which the
% document was published.
% \item |\Journalnumber|: The ISSN for the publication in which the
@@ -327,18 +419,29 @@
% \item |\Lastpage|: Last page number of the published version of the
% document.
% \item |\Doi| : Digital Object Identifier (DOI) for the document,
-% without the leading ``doi:''.
+% without the leading `doi:'.
% \item |\CoverDisplayDate|: Date on the cover of the journal issue,
% as a human-readable text string.
% \item |\CoverDate|: Date on the cover of the journal issue, in a
-% format suitable for storing in a database field with a ``date'' data
-% type.
+% format suitable for storing in a database field with a `date'
+% data type; e.g. YYYY-MM, or YYYY-MM-DD.
% \end{itemize}
%
-% \subsection{Symbols permitted in metadata}
+% \subsubsection{Backward Compatibility}
+% The following macros are also recognised, for backward compatibility
+% with earlier versions of the package.
+% \begin{itemize}
+% \item |\Creator|: synonymous with |\CreatorTool| which is usually handled
+% automatically anyway, but can be over-ridden.
+% \item |\Org|: synonymous with |\Publisher|.
+% \item |\WebStatement|: synonymous with |\CopyrightURL|.
+% \end{itemize}
+%
+% \subsection{Symbols permitted in metadata}\label{ssec-symbols}
%
% Within the metadata, all printable ASCII characters except
-% |\|, |{|, |}|, and |%| represent themselves. Also, all printable
+% |\|, |{|, |}| and |%|
+% represent themselves. Also, all printable
% Unicode characters from the basic multilingual plane (i.e., up to
% code point U+FFFF) can be used directly with the UTF-8 encoding.
% (Please note: encodings other than UTF-8 are not currently supported
@@ -352,28 +455,97 @@
% \item |\%|: a literal |%|
% \item |\{|: a literal |{|
% \item |\}|: a literal |}|
-% \item |\backslash|: a literal backslash ``|\|''
-% \item |\copyright|: the \copyright\ copyright symbol
+% \item |\backslash|: a literal backslash |\|
+% \item |\copyright|: the copyright symbol \textcopyright
% \end{itemize}
% The macro |\sep| is only permitted within |\Author|, |\Keywords|,
-% and |\Publisher|. It is used to separate multiple authors,
-% keywords, etc.
+% and |\Publisher|. It's intention is to separate multiple authors,
+% keywords, etc. However for validation purposes, multiple authors
+% and keywords must not really be separated. The package takes care
+% of this, even when |\sep| is used.
+%
+% \medskip
+% Other \TeX\ macros actually can be used, provided the author is very
+% careful and not ask for too-complicated \TeX\ or \LaTeX\ expansions
+% into internal commands or non-character primitives; basically just accents,
+% macros for Latin-based special characters, and simple textual replacements,
+% perhaps with a simple parameter. A special macro |\pdfxEnableCommands{...}|
+% is provided to help resolve difficulties that may arise.
+%
+% Here is an example of the use of |\pdfxEnableCommands|, which occurs
+% with the name of one of our authors {(H\`an Th\'{\^e} Thanh)}
+% due to the doubly-accented letter \'{\^e}.
+% It is usual to define a macro such as: |\def\thanh{H\`an Th\'{\^e} Thanh}|.
+%
+% In previous versions of the |pdfx| package, use of such a macro
+% within the |.xmpdata| file, in the |Copyright| information say,
+% could result in the accent macros expanding into internal primitives, such as
+% \begin{verbatim}
+% H\unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa ...
+% \end{verbatim}
+% \removelastskip\noindent
+% going on for many lines. This clearly has no place within the XMP Metadata.
+% To get around this, one could try using simplified macro definitions
+% \begin{verbatim}
+% \pdfxEnableCommands{
+% \def\`#1{#1^^cc^80}\def\'#1{#1^^cc^81}\def\^#1{#1^^cc^82}}
+% \end{verbatim}
+% \removelastskip\noindent
+% where the |^^cc^80|, |^^cc^81|, |^^cc^82| cause \TeX\ to generate the correct
+% UTF-8 bytes for `combining accent' characters.
+%
+% This works fine for metadata fields that appear just in the XMP packet.
+% However, it is not sufficient for the PDF |/Author| key, which must exactly match
+% with the |dc:creator| Metadata element. What is needed instead is
+% \begin{verbatim}
+% \pdfxEnableCommands{
+% \def\thanh{H^^c3^^a0n Th\eee Thanh}\def\eee{^^c3^^aa^^cc^^81 }}
+% \end{verbatim}
+% \removelastskip\noindent
+% or the above with `\`a' typed directly as UTF-8 instead of |^^c3^^a0|
+% and `\^e' in UTF-8 for |^^c3^^aa|.
+% The reason for this is due to the |\pdfstringdef| command, which constructs
+% the accented latin letters as single combined characters \`a and \^e,
+% without resorting to combining accents, wherever possible.
+% If the Metadata does not have the same, irrespective of Unicode normalisation,
+% then validation fails.
+%
+% With this latest version (1.5.6) of the |pdfx| package, such difficulties
+% have been overcome, at least for characters used in Western European,
+% Latin-based languages. The input encoding used when reading the |.xmpdata|
+% file now includes interpretations of \TeX's usual accent commands to
+% produce the required UTF-8 byte sequences.
+% Work is ongoing to extend this input encoding to include macro definitions
+% for more special characters (e.g., extended Latin, Cyrillic, Greek, etc.).
+% A significant portion of the Unicode Basic Plane characters can be covered
+% this way. Modules could even be provided for CJK character sets and
+% mathematical symbols, etc. However, this can become memory intensive,
+% so significant testing will be required before this becomes a standard
+% part of the |pdfx| package.
+%
+% \textbf{Warning}: This encoding of macros, using ascii characters only,
+% allows for the convenience of including the |\jobname.xmpdata| file
+% in the main \LaTeX\ source preamble, within a |{filecontents}| environment.
+% This \emph{only} works when it contains \emph{no} non-ascii UTF-8 byte
+% sequences. The |{filecontents}| environment is best placed immediately
+% \emph{before} the |\usepackage[...]{pdfx}| command.
+%
%
% \subsection{Color profiles}
%
% Most standards compliant PDF documents require a \emph{color
-% profile} to be embedded in the file. In a nutshell, such a profile
+% profile} to be embedded within the file. In a nutshell, such a profile
% determines precisely how the colors used in the document will be
% rendered when printed to a physical medium. This can be used to
% ensure that the document will look exactly the same, even when it is
-% printed on different printers, paper types, etc. The inclusion of a
-% color profile is necessary to make the document completely
-% self-contained.
+% printed on different printers, with different paper types, etc.
+% The inclusion of a color profile is necessary to make the document
+% completely self-contained.
%
% Since most \LaTeX\ users are not graphics professionals and are not
% particularly picky about colors, the |pdfx| package includes default
-% profiles that will be included when nothing else is
-% specified. Therefore, the average user doesn't have to do anything
+% profiles that will be included when nothing else is specified.
+% Therefore, the average user doesn't have to do anything
% special about color.
%
% For users who have a specific color profile they wish to use, it is
@@ -408,7 +580,72 @@
% Some color profile files may be obtained from the International
% Color Consortium. Please take a look at
% \url{http://www.color.org/iccprofile.xalter}.
+%
+% Alternatively, color profiles are shipped with many Adobe software
+% applications; these are then available for use also with non-Adobe
+% software. Now the |pdfx| package includes coding to streamline
+% inclusion of these profiles in PDF documents, or to specify
+% them as `external' profiles, with PDF/X-4p and PDF/X-5pg variants.
+% Two files |AdobeColorProfiles.tex| and |AdobeExternalProfiles.tex|
+% are distributed with the |pdfx| package. The latter is for use
+% with PDF/X-4p and PDF/X-5pg, which do not require color profiles to
+% be embedded, while the former can be used with other PDF/X variants.
+% Both define commands to use Color Profiles as follows.
+% \begin{center}
+% \begin{tabular}{ll}
+% \texttt{\string\FOGRAXXXIX} & Coated FOGRA39 (ISO 12647-2:2004)\\
+% \texttt{\string\SWOPCGATSI} & U.S. Web Coated (SWOP) v2\\
+% \texttt{\string\JapanColorMMICoated} & Japan Color 2001 Coated\\
+% \texttt{\string\JapanColorMMIUncoated} & Japan Color 2001 Uncoated\\
+% \texttt{\string\JapanColorMMIINewspaper} & Japan Color 2002 Newspaper\\
+% \texttt{\string\JapanWebCoatedAd} & Japan Web Coated (Ad)\\
+% \texttt{\string\CoatedGRACoL} & Coated GRACoL 2006 (ISO 12647-2:2004)\\
+% \texttt{\string\SNAPCGATSII} & CGATS TR 002\\
+% \texttt{\string\SWOPCGATSIII} & CGATS TR 003\\
+% \texttt{\string\SWOPCGATSV} & CGATS TR 005\\
+% \texttt{\string\ISOWebCoated} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
+% \texttt{\string\ISOCoatedECI} & ISO Coated v2 (ECI)\\
+% \texttt{\string\CoatedFOGRA} & Coated FOGRA27 (ISO 12647-2:2004)\\
+% \texttt{\string\WebCoatedFOGRA} & Web Coated FOGRA28 (ISO 12647-2:2004)\\
+% \texttt{\string\UncoatedFOGRA} & Uncoated FOGRA29 (ISO 12647-2:2004)\\
+% \texttt{\string\IFRAXXVI} & ISOnewspaper26v4 ISO/DIS 12647-3:2004\\
+% \texttt{\string\IFRAXXX} & ISOnewspaper30v4 ISO/DIS 12647-3:2004\\
+% \end{tabular}
+% \end{center}
+% As of the time of writing, only the first six of these result in PDFs
+% which can validate with external profiles (i.e., for PDF/X-4p and PDF/X-5pg)
+% using current versions of Adobe Acrobat Pro software. It is unclear
+% whether the others (incl.\,\verb|\IFRAXXVI| and \verb|\IFRAXXX|) fail due
+% to incorrect data or problems in the validation software.
+% All but those last two can be used for valid embedded profiles,
+% providing the corresponding files can be found. The following macro
+% is used to set the (absolute or relative) path, on the local operating system,
+% to the location of color profile files.
+% \begin{decl}
+% \defmacro{pdfxSetRGBcolorProfileDir}\marg{path to RGB color profiles}\\
+% \defmacro{pdfxSetCMYKcolorProfileDir}\marg{path to CMYK profiles}
+% \end{decl}
+% On a Macintosh, one can use \texttt{\string\AdobeMacOSdir} which expands to
+% the path \texttt{/Library/Application Support/\allowbreak
+% Adobe/\allowbreak Color\allowbreak /Profiles/\allowbreak Recommended/}.
+% Under Windows the corresponding macro is \texttt{\string\WindowsColordir}
+% which expands:
+% \texttt{C:\string\Windows\allowbreak\string\System32\allowbreak
+% \string\Spool\allowbreak\string\Drivers\allowbreak\string\Color\string/}.
+% Use these within the \verb|.xmpdata| file as, e.g.,
+% |\pdfxSetCMYKcolorProfileDir{\AdobeMacOSdir}|.
+% Authors should change the paths to suit their own circumstances, either
+% \emph{before} loading |pdfx.sty| or within the \verb|.xmpdata| file.
+%
+% PDF/A and PDF/E usually need an RGB profile, while PDF/X and PDF/VT
+% require a CMYK profile. It is possible to use a CMYK profile with PDF/A
+% or PDF/E by specifying |\setRGBcolorprofile{}{}{}{}| in the \verb|.xmpdata| file.
+% Beware however, that with PDF/A any coloured hyperlink annotations can
+% cause a validation problem, as these are interpreted as RGB colours
+% even when 4 components are given. This may be a bug in validators,
+% as PDF specifies that the number of components should match the color space.
%
+%
% \subsection{Notes on the internal representation of metadata}
%
% Within the PDF file, metadata is deposited in two places: some data
@@ -421,18 +658,18 @@
% systems is also provided under modified BSD licence.
%
% Some of the metadata, such as the author, title, and keywords, are
-% stored {\bf both} in the XMP packet and in the |/Info|
-% dictionary. For the resulting file to be standard compliant, the two
+% stored \emph{both} in the XMP packet and in the |/Info|
+% dictionary. For the resulting file to be standards-compliant, the two
% copies of the data must be identical. All of this is taken care of
% automatically by the |pdfx| package.
%
% In principle, users can resort to alternate ways to create an XMP
% file for inclusion in PDF. In this case, users should create a file
% |pdfa.xmp| or |pdfx.xmp| (etc., depending on the PDF flavor)
-% containing the pre-defined data. However, this is an error prone
+% containing the pre-defined data. However, this is an error-prone
% process and is not recommended for most users. If there is a
% particular field of metadata that you need and that is not currently
-% supported, please contact the authors.
+% supported, please contact the package authors.
%
% |pdfx| makes use of the |xmpincl| package to include |xmp| data into
% the PDF. The documentation of |xmpincl| package may help interested
@@ -451,26 +688,34 @@
%
%
%
-% \section{Installing}
+% \section[Installing]{Installing}
+% The |pdfx.dtx| package is available on CTAN as usual, via
+% \url{http://ctan.org/pkg/pdfx}. It is also included in
+% \TeX\ distributions such as Mac\TeX, \TeX\ Live and MiK\TeX.
+% Thus most users will not need to handle installation at all.
%
+% For those wishing to do a manual installation, here are some notes.
% The file |pdfx.dtx| is a composite document of program code and
-% documentation in \LaTeX{} format in the tradition of \emph{literate
-% programming}. To get the documentation that you are reading now,
-% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|. Or better, use
-% the included |Makefile|, which will also regenerate the index.
+% documentation in \LaTeX{} format, in the tradition of \emph{literate
+% programming}. After having installed the package,
+% to get the documentation that you are reading now,
+% run (\textsc{pdf})\LaTeX{} on the file |pdfx.dtx|.
+% The resulting PDF should be valid as PDF/A-2u.
+% % Or better, use
+% % the included |Makefile|, which will also regenerate the index.
%
-% To install the package, first extract the program code, i.e., the
+% To install the package, first extract the program code; i.e., the
% file |pdfx.sty|, by running \LaTeX{} or \TeX{} on the file
% |pdfx.ins|. Create a directory named |pdfx| under |$TEXMF/tex/latex|
% and copy the files |pdfx.sty|, |8bit.def|, |glyphtounicode-cmr.tex|,
-% as well as the |*.icc| and |*.xmp| files, to it. Then update \TeX's
+% as well as the |*.icc| and |*.xmp| files, into it. Then update \TeX's
% file database using the appropriate command for your distribution and
% operating system (such as |texhash| or |mktexlsr|, or similar).
%
% \subsection{Limitations and dependencies}
%
-% |pdfx.sty| works only with \pdftex. It further depends on the following
-% packages:
+% |pdfx.sty| works with \pdftex\ and also Lua\TeX.
+% It further depends on the following other packages:
% \begin{enumerate}
% \item |xmpincl| for insertion of metadata into PDF.
% \item |hyperref| for hyperlinking, bookmarks, etc.
@@ -479,7 +724,8 @@
%
% \subsection{Files included}
%
-% The following files are included in the archive:
+% The following files are included in the package.
+% Some can be created from |pdfx.dtx|, using the |Makefile|.
%
% \subsubsection{Package files}
%
@@ -490,19 +736,22 @@
% \item |pdfvt.xmp| --- specimen |xmp| template for PDF/VT.
% \item |pdfx.xmp| --- specimen |xmp| template for PDF/X.
% \item |8bit.def| --- custom input encoding.
+% \item |l8uenc.def| --- input encoding macro declarations.
% \item |glyphtounicode-cmr.tex| --- maps glyph names to corresponding
% Unicode for Computer Modern and other \TeX-specific fonts.
-% \item |coated_FOGRA39L_argl.icc| --- a freely distributable CMYK
-% color profile.
-% \item |sRGB_IEC61966-2-1_black_scaled.icc| --- a freely
-% distributable RGB color profile.
-% \item |ICC_LICENSE.txt| --- the license for the color profiles.
+% \item |coated_FOGRA39L_argl.icc| --- CMYK color profile
+% (freely distributable).
+% \item |sRGB_IEC61966-2-1_black_scaled.icc| --- RGB color profile
+% freely distributable.
+% \item |ICC_LICENSE.txt| --- license for the color profiles.
+% \item |AdobeColorProfiles.tex| --- macros for inclusion of Adobe-supplied color profiles.
+% \item |AdobeExternalProfiles.tex| --- macros for use of external color profiles.
% \end{itemize}
%
% \subsubsection{Documentation}
%
% \begin{itemize}
-% \item |README| --- Readme file.
+% \item |README| --- usual top-level information.
% \item |manifest.txt| --- file list.
% \item |sample.tex|, |sample.xmpdata| --- a sample file with sample
% metadata.
@@ -515,6 +764,7 @@
% \begin{itemize}
% \item |src/pdfx.dtx| --- composite package and documentation.
% \item |src/pdfx.ins| --- installer batch file.
+% \item |src/pdfx.xmpdata| --- metadata for the documentation.
% \item |src/rvdtx.sty| --- used by |pdfx.dtx|.
% \item |src/Makefile| --- a Makefile for building the documentation.
% \end{itemize}
@@ -532,21 +782,140 @@
% and/or
% \href{mailto:selinger@mathstat.dal.ca}{\ttfamily selinger@mathstat.dal.ca}.
%
-% \section{Implementation}
+% \section[Bibliography]{Bibliography}
+% \begin{thebibliography}{999}
+%
+% \bibitem{PDF17}Adobe Systems Inc.;
+% {PDF} Reference 1.7, November 2006.
+% Also available as \cite{ISO32000}.\\
+% \url{http://www.adobe.com/devnet/pdf/pdf_reference.html}.
+%
+% \bibitem{DC}
+% Dublin Core Metadata Element Set, Version 1.1, October 2010
+% \url{http://dublincore.org/documents/dces/}
+%
+% \bibitem{PDFA}ISO\,19005-1:2005;
+% Document Management --- Electronic document file format for long term preservation
+% --- Part 1: Use of PDF\,1.4\,(PDF/A-1);
+% Technical Committee ISO/TC\,171/SC\,2 (Sept. 2005).
+% Revisions via Corrigenda: ISO\,19005-1:2005/Cor\,1:2007 (March 2007);
+% ISO\,19005-1:2005/Cor\,2:2011 (Dec. 2011). \\
+% \url{http://www.iso.org/iso/catalogue_detail?csnumber=38920}.
+%
+% \bibitem{PDFA2}ISO\,19005-2:2011;
+% Document Management --- Electronic document file format for long term preservation
+% --- Part 2: Use of ISO\,32000-1\,(PDF/A-2);
+% Technical Committee ISO/TC\,171/SC\,2 (June 2011).
+% \url{http://www.iso.org/iso/catalogue_detail?csnumber=50655}.
+%
+% \bibitem{PDFA3}ISO\,19005-3:2012;
+% Document Management --- Electronic document file format for long term preservation
+% --- Part 3: Use of ISO\,32000-1 with support for embedded files (PDF/A-3);
+% Technical Committee ISO/TC\,171/SC\,2 (October 2012).\\
+% \url{http://www.iso.org/iso/catalogue_detail?csnumber=57229}.
+%
+% \bibitem{ISO32000}ISO\,32000-1:2008;
+% Document management\,---\,Portable document format\,(PDF\,1.7);
+% Technical Committee ISO/TC\,171/SC\,2 (July 2008).
+% Also available as \cite{PDF17}.\\
+% \url{http://www.iso.org/iso/catalogue_detail?csnumber=51502}.
+%
+% \bibitem{PDF20}ISO\,32000-2-20140220;
+% Document management --- Portable document format --- Part~2: PDF\,2.0;
+% Technical Committee ISO/TC\,171/SC\,2, in draft form (Feb. 2014).
+%
+% \bibitem{PDFE}ISO\,24517-1:2008;
+% Document Management --- Engineering document format using PDF --- Part 1:
+% Use of PDF 1.6 (PDF/E-1);
+% Technical Committee ISO/TC\,171/SC\,2 (May 2008).\\
+% \url{http://www.iso.org/iso/catalogue_detail?csnumber=42274}.
+%
+% \bibitem{PDFUA1}ISO\,14289-1:2012;
+% Document management applications --- Electronic document file format enhancement for accessibility
+% --- Part 1: Use of ISO\,32000-1\,(PDF/UA-1);
+% Technical Committee ISO/TC\,171/SC\,2 (July 2012).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=54564}.\\
+% Revised as ISO\,14289-1:2014 (December 2014):
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=64599}.
+%
+% \bibitem{PDF-UA}
+% PDF/UA Technical Implementation Guide: Understanding ISO\,14289-1 (PDF/UA-1). \penalty-200
+% AIIM Global Community of Information Professionals.
+% \href{http://www.aiim.org/Research-and-Publications/standards/committees/PDFUA/Technical-Implementation-Guide}%
+% {{\tt http://www.aiim.org/Re\penalty-200 search-and-Publications/standards/committees/PDFUA/Technical-Implementation\penalty-200 -Guide}}.
+%
+%
+% \bibitem{PDFVT}ISO\,16612-2:2010;
+% Graphic technology\,---\,Variable data exchange\,---\,Part 2:
+% Using PDF/X-4 \penalty-5000 and PDF/X-5 (PDF/VT-1 and PDF/VT-2).
+% Technical Committee ISO/TC\,130 (December 2005).
+% \href{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=38013}{{\tt http://www.iso.org/iso/home/store/catalogue\_tc/catalogue\_detail.htm?\penalty-200csnumber=38013}}.
+%
+%
+% \bibitem{PDFX}ISO\,15930-1:2001;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 1:
+% Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a).
+% Technical Committee ISO/TC\,130 (December 2001).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=29061}.
+%
+% \bibitem{PDFX3}ISO\,15930-3:2002;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 3:
+% Complete exchange suitable for colour-managed workflows (PDF/X-3).
+% Technical Committee ISO/TC\,130 (September 2002).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=34941}.
+%
+% \bibitem{PDFX1a}ISO\,15930-4:2003;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 4:
+% Complete exchange of CMYK and spot colour printing data using PDF 1.4 (PDF/X-1a).
+% Technical Committee ISO/TC\,130 (December 2003).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39938}.
+%
+% \bibitem{PDFX3a}ISO\,15930-6:2003;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 6:
+% Complete exchange of printing data suitable for colour-managed workflows using PDF 1.4 (PDF/X-3).
+% Technical Committee ISO/TC\,130 (December 2003).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=39940}.
+%
+% \bibitem{PDFX4}ISO\,15930-7:2010;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 7:
+% Complete exchange of printing data (PDF/X-4) and partial exchange of printing data with external profile reference (PDF/X-4p) using PDF 1.6.
+% Technical Committee ISO/TC\,130 (July 2010).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55843}.
+%
+% \bibitem{PDFX5}ISO\,15930-8:2010;
+% Graphic technology --- Prepress digital data exchange --- Use of PDF --- Part 8:
+% Partial exchange of printing data using PDF 1.6 (PDF/X-5).
+% Technical Committee ISO/TC\,130 (July 2010).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55844}.
+% Revision via Corrigendum: ISO\,15930-8:2010/Cor\,1:2011 (August 2011);
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=60210}.
+%
+% \bibitem{XMP}ISO\,16684-1:2012;
+% Graphic technology --- Extensible metadata platform (XMP) specification --- Part 1:
+% Data model, serialization and core properties.
+% Technical Committee ISO/TC\,130 (February 2012).
+% \url{http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=57421}.
+%
+% \bibitem{pdfx}C.\,V.\,Radhakrishnan, \Thanh, Ross Moore, Peter Selinger;
+% Generation of PDF/X- and PDF/A-compliant PDFs with pdf\TeX{} --- \texttt{pdfx.sty}.
+% TUGboat Vol.\,36, No.\,2; TUG 2015 Conference Proceedings. \TeX\ Users Group, 2015; pp.\,136--142.
+% \end{thebibliography}
+% \end{document}
+% \section[Implementation]{Implementation}
%
% \iffalse
%<*package>
% \fi
% \begin{macrocode}
- \@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 <return> \space to exit; or just \space <return> \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
@@ -608,10 +977,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 }
@@ -624,23 +993,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
@@ -658,11 +1039,18 @@
/TrimBox[25 20 570 773]}
\fi
\ifnum\pdfminorversion >3 \relax
- \pdfmapline{+dummy-space <dummy-space.pfb}
+ \expandafter\ifx\csname pdfsuppresswarningdupmap\endcsname\relax
+ \pdfmapline{+dummy-space <dummy-space.pfb}
+ \else
+ \advance\pdfsuppresswarningdupmap 1
+ \pdfmapline{+dummy-space <dummy-space.pfb}
+ \advance\pdfsuppresswarningdupmap -1
+ \fi
\expandafter\ifx\csname pdfgeninterwordspace\endcsname\relax\else
\pdfgeninterwordspace=1 \relax
\fi
\fi
+%% the "pdftex" option seems to work fine with LuaTeX
\ifpdfx@x
\@ifpackageloaded{hyperref}{%
\hypersetup{draft,pdftex,pdfpagemode=UseNone,bookmarks=false,pdfversion=1.\the\pdfminorversion]}
@@ -679,13 +1067,18 @@
\else
\@ifpackageloaded{hyperref}{%
\hypersetup{pdftex,pdfa}%
+ \Hy@pdfatrue
}{%
\RequirePackage[pdftex,pdfa]{hyperref}
+ \Hy@pdfatrue
}%
\fi\fi
-\hypersetup{pdfencoding=unicode}
+\hypersetup{pdfencoding=auto}% unicode
-\RequirePackage{inputenc}
+\ifluatex\else
+ \RequirePackage{inputenc}
+\fi
+\InputIfFileExists{\pdfx@encodingfile}{}{}
%%----------------------------------------------------------------------
%% Macros for reading XMP data with special catcodes. Usage:
@@ -703,75 +1096,44 @@
\xmp@doparse{#1}%
}
\def\xmp@doparse#1#2{%
- \def\@this{#2}#1%
- \endgroup%
+ \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\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}}%
+ \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}}%
+ \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%
+ \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}} % currently unused; for backward compatibility
+ \let\Creator\CreatorTool % for backward compatibility
+ \let\Org\Publisher % for backward compatibility
+ \let\WebStatement\CopyrightURL % for backward compatibility
}
%%----------------------------------------------------------------------
-%% 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.
%%
@@ -818,45 +1180,85 @@
{\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}}%
+\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}
@@ -883,74 +1285,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{<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 '\%'.
+%% --- user-command --- RGB profile needed with PDF/A-?? files
+%% \setRGBcolorprofile{<filename>}{<identifier>}{<info string>}{<registry URL>}
+\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{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+\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{<filename>}{<output intent>}{<identifier>}{<registry URL>}
+\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{<profilename>}{<output intent>}{<identifier>}{<registry URL>}%
+%% {<color-space>}{<ICC Version>}{<provider URL>}{<extra info>}{<Check Sum>}
+\def\setEXTERNALprofile{%
+ \begingroup
+ \catcode`\_ 11\relax\catcode`\& 11\relax\catcode`\~ 11\relax\catcode`\% 11\relax
+ \edef\({\string\(}\edef\){\string\)}%
+ \pdfx@externalprofile}
+%%
%%
-%% 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\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@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@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@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@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@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 :
%%
@@ -969,15 +1407,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 :
@@ -1006,46 +1470,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 {<</FS /URL /F (http://www.color.org/registry/profiles/Coated_Fogra39L_VIGC_300.icc)>>}
+ \immediate\pdfobj {<</FS/URL/F(\pdfx@colorURL)>>}
\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 [ <<
@@ -1053,22 +1568,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}%
+\else
+%% 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 <</DisplayDocTitle true >>
+ /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.}%
- }%
- \pdfcatalog{%
+ \errmessage{No color profile \pdfx@cmyk@profile\ found to use for CMYK screen colors.}%
+ }%
+ \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 <</DisplayDocTitle true >>
/OutputIntents [ <<
/Type /OutputIntent
@@ -1077,12 +1617,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
@@ -1098,9 +1642,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
%% ----------------------------------------------------------------------
@@ -1140,16 +1691,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
@@ -1172,7 +1725,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)%
@@ -1194,10 +1748,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)%
@@ -1209,16 +1764,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
@@ -1236,8 +1792,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
@@ -1257,12 +1814,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
- <?xpacket begin='^^ef^^bb^^bf'? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+ <?xpacket begin='^^ef^^bb^^be' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
}%
\def\pdfx@xmpinclStartAlt{% no byte-order marker
- <?xpacket begin=''? id='W5M0MpCehiHzreSzNTczkc9d' ?> %
+ <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d' ?> %
}%
\def\pdfx@xmpinclEnd{% allow XMP packet to be writable
<?xpacket end='w'?> %
@@ -1273,19 +1830,64 @@
\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}%
@@ -1295,12 +1897,14 @@
\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{macrocode}
% \iffalse
%</package>
% \fi
% \Finale
-% \PrintIndex
+% \newpage\PrintIndex
% \PrintChanges
% \endinput