diff options
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/pdfx/README | 40 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pdfx/manifest.txt | 93 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pdfx/pdfx.dtx | 1559 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pdfx/pdfx.ins | 7 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pdfx/rvdtx.sty | 5 |
5 files changed, 1307 insertions, 397 deletions
diff --git a/Master/texmf-dist/source/latex/pdfx/README b/Master/texmf-dist/source/latex/pdfx/README new file mode 100644 index 00000000000..ae89c524149 --- /dev/null +++ b/Master/texmf-dist/source/latex/pdfx/README @@ -0,0 +1,40 @@ +Readme for pdfx package (pdfx.sty) + +pdfx.sty is a LaTeX package which helps to create PDF/X and +PFD/A compliant PDF documents with pdfTeX. + +Installation: + +Create a directory $TEXMF/tex/latex/pdfx and copy pdfx.sty, *.xmp, +*.icc, 8bit.def, and glyphtounicode-cmr.tex to this directory. Update +the file database of your TeX system. + +Documentation: + +Composite documentation and code is available in src/pdfx.dtx. Run +TeX/LaTeX on pdfx.ins to extract pdfx.sty from pdfx.dtx. If you +[pdf]LaTeX pdfx.dtx, you will get pdfx.pdf which is the human readable +documentation. + +A Makefile is provided in the src directory. Following steps will +create the documentation GNU/Linux or similar operating system: + + make pdf + make out + make index + make changes + make pdf + +'make out' is for manipulating the bookmarks file to create QUICK +LINKS in the pdf document. + +Licence: + +The package is released under LaTeX Project Public Licence. + +Authors: + +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> diff --git a/Master/texmf-dist/source/latex/pdfx/manifest.txt b/Master/texmf-dist/source/latex/pdfx/manifest.txt new file mode 100644 index 00000000000..e18735a1928 --- /dev/null +++ b/Master/texmf-dist/source/latex/pdfx/manifest.txt @@ -0,0 +1,93 @@ +% \iffalse meta-comment +% +% Copyright 2008 CV Radhakrishnan and Han The Thanh +% Copyright 2015 Ross Moore and Peter Selinger +% +% This file is part of the 'pdfx' package. +% ---------------------------------------- +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License, either version 1.2 of this license or +% (at your option) any later version. The latest version of this +% license is in http://www.latex-project.org/lppl.txt and version 1.2 +% or later is part of all distributions of LaTeX version 1999/12/01 or +% later. +% +% The color profile sRGB_IEC61966-2-1_black_scaled.icc is +% Copyright 2009 International Color Consortium. +% It is distributed under the terms given in the file `ICC_LICENSE.txt'. +% +% The list of all files belonging to the LaTeX package, 'pdfx.sty' is +% given in the file `manifest.txt'. +% +% \fi +% +% CONTENTS + +README + Readme file + +pdfx.sty + the main package + +glyphtounicode-cmr.tex + maps glyphnames in cmr font to Unicode + +pdfa.xmp + XMP template for PDF/A documents + +pdfe.xmp + XMP template for PDF/E documents + +pdfvt.xmp + XMP template for PDF/VT documents + +pdfx.xmp + XMP template for PDF/X documents + +8bit.def + custom input encoding + +coated_FOGRA39L_argl.icc + CMYK color profile + +sRGB_IEC61966-2-1_black_scaled.icc + RGB color profile + +ICC_LICENSE.txt + the license for the color profiles + +pdfx.pdf + documentation in PDF format + +sample.tex + example TeX document + +sample.xmpdata + example metadata file + +small2e-pdfx.tex + example TeX document + +small2e-pdfx.xmpdata + example metadata file + +small2e-pdfx.pdf + example pdf document + +manifest.txt + file list + +Directory: src + +Makefile + make file for compiling documentation + +pdfx.dtx + main package with driver + +pdfx.ins + main installer batch file + +rvdtx.sty + extra package needed to compile documentation diff --git a/Master/texmf-dist/source/latex/pdfx/pdfx.dtx b/Master/texmf-dist/source/latex/pdfx/pdfx.dtx index a888096aa3c..debb49866a1 100644 --- a/Master/texmf-dist/source/latex/pdfx/pdfx.dtx +++ b/Master/texmf-dist/source/latex/pdfx/pdfx.dtx @@ -2,8 +2,10 @@ % % File: pdfx.dtx % -% 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 @@ -17,7 +19,7 @@ % % \fi % -% \CheckSum{376} +% \CheckSum{1844} % \iffalse % %<*driver> @@ -27,7 +29,7 @@ \CodelineIndex \RecordChanges \begin{document} - \DocInput{pdfx.dtx} + \DocInput{\jobname.dtx} \PrintChanges \PrintIndex \end{document} @@ -67,19 +69,36 @@ % \DoNotIndex{\meaning,\newcounter,\next,\or,\par,\renewcommand} % \DoNotIndex{\renewcommand,\renewenvironment,\stepcounter} % \DoNotIndex{\Tg,\thepage,\unskip,\write,\advance,\{,\}} +% \DoNotIndex{\@ifpackageloaded,\@pdfcreationdate,\@pdfcreator} +% \DoNotIndex{\@pdfmoddate,\AtBeginDocument,\catcode,\DeclareOption} +% \DoNotIndex{\endinput,\endlinechar,\errmessage,\everyeof,\futurelet} +% \DoNotIndex{\Hy@DisableOption,\Hy@UseMaketitleInfos,\hypersetup} +% \DoNotIndex{\inputencoding,\InputIfFileExists,\NeedsTeXFormat} +% \DoNotIndex{\newif,\noexpand,\obeyspaces,\PackageError,\PDF@FinishDoc} +% \DoNotIndex{\pdfcatalog,\pdfcreationdate,\pdfgeninterwordspace} +% \DoNotIndex{\pdfinterwordspace,\pdfinterwordspaceoff,\pdfgentounicode} +% \DoNotIndex{\pdfinfo,\pdfinterwordspaceon,\pdflastobj,\pdfmapline} +% \DoNotIndex{\pdfmdfivesum,\pdfminorversion,\pdfobj,\pdfobjcompresslevel} +% \DoNotIndex{\pdfpageattr,\pdfresetpageorigin,\pdfstringdef} +% \DoNotIndex{\pdftexbanner,\ProcessOptions,\ProvidesPackage,\RequirePackage} +% \DoNotIndex{\scantokens,\typeout} % % \changes{v1.00}{2008/12/01}{Initial commit to the CVS.} % \changes{v1.01}{2008/12/10}{glyphtounicode-cmr.tex included with the % package.} % \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.} % -% \title{Generation of PDF/X-1a and PDF/A-1b compliant PDF's +% \title{Generation of PDF/X and PDF/A compliant PDF's % with PDF\TeX{} --- \texttt{pdfx.sty}} -% \date{2008/12/10} -% \version{1.3} -% \keywords{\pdf, \pdfx, \pdfa, pdf\TeX, \LaTeX} -% \author{C.\,V.\,Radhakrishnan {\upshape\small and} \thanh} -% \contact{\texttt{[cvr,thanh]@river-valley.org}} +% \date{2015/02/28} +% \version{1.5.4} +% \keywords{PDF, PDF/A, PDF/X, pdf\TeX, \LaTeX} +% \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}} % % \maketitle % @@ -87,440 +106,1200 @@ % % \section{Introduction} % -% \textsc{pdf/x} and \textsc{pdf/a} are umbrella terms used to denote -% several \textsc{iso} standards that define different subsets of the -% \pdf standard. The objective of \textsc{pdf/x} is to facilitate -% graphics exchange between document creator and printer and -% therefore, has all requirements related to printing. For instance, -% in \pdfx, all fonts need to be embedded and all images need to be -% \textsc{cmyk} or spot colors. \textsc{pdf/x-2} and \textsc{pdf/x-3} -% accept calibrated \textsc{rgb} and \textsc{cielab} colors along with -% all other specifications of \pdfx. -% -% \textsc{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 achieve this is that the \textsc{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 \textsc{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 \textsc{pdf/a}. -% -% This package currently supports generation of \pdfx and \pdfa -% compliant documents using \pdftex. More standards will be -% included in future. +% 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 +% 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. +% +% 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 +% 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. +% +% 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. % % \section{Usage} % -% The file, namely |pdfx.dtx| is a composite document of -% program code and documentation in \LaTeX{} format in the -% tradition of \emph{literate programming}. You -% can extract the program code alone by stripping off the -% documentation part by running \LaTeX{} or \TeX{} over the installer -% namely, |pdfx.ins| which is also provided with this file. To -% get the documentation which you are reading now, you need to run -% (\pdf)\LaTeX{} over the file, |pdfx.dtx|. -% -% \subsection{Data file for XMP metadata} -% -% As mentioned above, standards compliant \pdf documents need -% \textsc{xmp} metadata to be included. In order to create -% \textsc{xmp} in the prescribed \xml format, a simple data file -% holding the meta information of the document needs to be created -% either through a program or by hand. For our purposes, we name it as -% |\jobname.xmpdata|, a simple example of which will look like the -% following: +% \subsection{Options}\label{ssec-options} +% +% The package can be loaded with the command: +% \begin{decl} +% \defmacro{usepackage}|[<option>]{pdfx}| +% \end{decl} +% where the options are as follows. +% +% \subsubsection{PDF/A options} +% +% PDF/A is an ISO standard 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 +% the document must have a Unicode mapping. However, the |pdfx| +% 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 +% 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 +% standard. For many typical uses of PDF/A, it is sufficient to use +% PDF/A-1b. +% +% \begin{itemize} +% \item |a-1a|: generate PDF/A-1a. Experimental, not fully implemented. +% \item |a-1b|: generate PDF/A-1b. +% \item |a-2a|: generate PDF/A-2a. Experimental, not fully implemented. +% \item |a-2b|: generate PDF/A-2b. +% \item |a-2u|: generate PDF/A-2u. +% \item |a-3a|: generate PDF/A-3a. Experimental, not fully implemented. +% \item |a-3b|: generate PDF/A-3b. +% \item |a-3u|: generate PDF/A-3u. +% \end{itemize} +% +% \subsubsection{PDF/E options} +% +% PDF/E is an ISO standard intended for documents used in engineering +% workflows. There is only one version of the PDF/E standard so far, +% and it is called PDF/E-1. +% +% \begin{itemize} +% \item |e-1|: generate PDF/E-1. +% \end{itemize} +% +% \subsubsection{PDF/VT options} +% +% PDF/VT is an ISO standard intended as an exchange format for +% variable and transactional printing, and is an extension of the +% PDF/X-4 standard. The standard specifies three PDF/VT conformance +% levels. Level 1 is for single-file exchange, level 2 is for +% multi-file exchange, and level 2s is for streamed delivery. +% Currently, none of the PDF/VT conformance levels are fully +% implemented by the |pdfx| package. +% +% \begin{itemize} +% \item |vt-1|: generate PDF/VT-1. Experimental, not fully implemented. +% \item |vt-2|: generate PDF/VT-2. Experimental, not fully implemented. +% \item |vt-2s|: generate PDF/VT-2s. Experimental, not fully implemented. +% \end{itemize} +% +% \subsubsection{PDF/X options} +% +% PDF/X is an ISO standard intended for graphics interchange. It +% 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 +% 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. +% +% \begin{itemize} +% \item |x-1|: generate PDF/X-1. +% \item |x-1a|: generate PDF/X-1a. Options |x-1a1| and |x-1a3| are +% also available to specify PDF/X-1a:2001 or PDF/X-1a:2003 explicitly. +% \item |x-3|: generate PDF/X-3. Options |x-302| and |x-303| are +% also available to specify PDF/X-3:2002 or PDF/X-3:2003 explicitly. +% \item |x-4|: generate PDF/X-4. Options |x-408| and |x-410| are +% 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. +% \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} +% +% 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 |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 +% applicable standard. This may produce a non-standard-conforming PDF file. +% \item |pdf15|: use PDF 1.5, overriding the version specified by the +% applicable standard. This may produce a non-standard-conforming PDF file. +% \item |pdf16|: use PDF 1.6, overriding the version specified by the +% applicable standard. This may produce a non-standard-conforming PDF file. +% \item |pdf17|: use PDF 1.7, overriding the version specified by the +% applicable standard. This may produce a non-standard-conforming PDF file. +% \end{itemize} +% +% \subsection{Data file for metadata} +% +% As mentioned above, standards compliant PDF documents need 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| +% file. For example, if your document source is in the file +% |main.tex|, then the metadata must be in a file called +% |main.xmpdata|. None of the individual metadata fields are +% mandatory, but for most documents, it makes sense to define at least +% the title and the author. Here is an example of a short |.xmpdata| +% file: % \begin{verbatim} -% \Keywords{pdfTeX\sep PDF/X-1a\sep PDF/A-b} -% \Title{Sample LaTeX input file} -% \Author{LaTeX project team} -% \Org{TeX Users Group} +% \Title{Baking through the ages} +% \Author{A. Baker\sep C. Kneader} +% \Keywords{cookies\sep muffins\sep cakes} +% \Publisher{Baking International} % \end{verbatim} -% You may note that the keywords are separated by |\sep| which will -% expand to \xml elements |</rdf:li><rdf:li>| instead of comma -% character. This is the correct format required by the \xmp metadata -% which is in \xml format. Similarly, several other kinds of data can -% be captured using the following commands: -% \begin{enumerate} -% \item |\Subject| -% \item |\Creator| -% \item |\Producer| -% \item |\Volume| -% \item |\Issue| -% \item |\CoverDisplayDate| -% \item |\CoverDate| -% \item |\Copyright| -% \item |\Doi| -% \item |\Lastpage| -% \item |\Firstpage| -% \item |\Journaltitle| -% \item |\Journalnumber| -% \item |\CreatorTool| -% \item |\AuthoritativeDomain| -% \end{enumerate} -% The above commands are self-explanatory. Users can resort to -% alternate ways to create |xmp| file for inclusion in \pdf. However, -% minimal |\jobname.xmpdata| shall be created with |\Title| and -% |\Author| commands along with their corresponding values for |pdfx| -% package to work correctly. You may check -% \href{http://www.adobe.com/devnet/xmp/}{Adobe \textsc{xmp} -% Development Center} for more exhaustive information about -% Extensible Metadata Platform (\textsc{xmp}). An \textsc{xmp} -% Toolkit \textsc{sdk} which supports \textsc{gnu}/Linux, Macintosh -% and Windows operating systems is also provided under modified \textsc{bsd} -% licence. -% -% |pdfx| makes use of |xmpincl| package to include |xmp| data into the -% \pdf. A good look at the documentation of |xmpincl| package will -% greatly help the users to understand the process of |xmp| data -% inclusion. +% You may 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. +% +% \subsection{List of supported metadata fields} +% +% Here is a complete list of user-definable metadata fields currently +% supported, and their meanings. More may be added in the future. +% These commands can only be used in the |.xmpdata| file. +% +% \subsubsection{General information:} +% +% \begin{itemize} +% \item |\Author|: the document's human author. Separate multiple +% authors with |\sep|. +% \item |\Title|: the document's title. +% \item |\Keywords|: list of keywords, separated with |\sep|. +% \item |\Subject|: the abstract. +% \item |\Publisher|: the publisher. +% \end{itemize} +% +% \subsubsection{Copyright information:} +% +% \begin{itemize} +% \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''. +% \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. +% \item |\Journaltitle|: The title of the journal in which the +% document was published. +% \item |\Journalnumber|: The ISSN for the publication in which the +% document was published. +% \item |\Volume|: Journal volume. +% \item |\Issue|: Journal issue/number. +% \item |\Firstpage|: First page number of the published version of +% the document. +% \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:''. +% \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. +% \end{itemize} +% +% \subsection{Symbols permitted in metadata} +% +% Within the metadata, all printable ASCII characters except +% |\|, |{|, |}|, 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 +% in the metadata). Consecutive whitespace characters are combined +% into a single space. Whitespace after a macro such as |\copyright|, +% |\backslash|, or |\sep| is ignored. Blank lines are not permitted. +% Moreover, the following markup can be used: +% +% \begin{itemize} +% \item ``|\ |'': a literal space (for example after a macro) +% \item |\%|: a literal |%| +% \item |\{|: a literal |{| +% \item |\}|: a literal |}| +% \item |\backslash|: a literal backslash ``|\|'' +% \item |\copyright|: the \copyright\ copyright symbol +% \end{itemize} +% The macro |\sep| is only permitted within |\Author|, |\Keywords|, +% and |\Publisher|. It is used to separate multiple authors, +% keywords, etc. +% +% \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 +% 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. +% +% 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 +% special about color. +% +% For users who have a specific color profile they wish to use, it is +% possible to do so by including a |\setRGBcolorprofile| or +% |\setCMYKcolorprofile| command in the |.xmpdata| file. Note that +% PDF/A and PDF/E require an RGB color profile, and PDF/X and PDF/VT +% require a CMYK color profile. Use the following commands to specify +% an RGB or CMYK color profile, respectively: +% +% \begin{decl} +% \defmacro{setRGBcolorprofile}\marg{filename}\marg{identifier}\marg{info +% string}\marg{registry URL} +% \\[1ex] +% \defmacro{setCMYKcolorprofile}\marg{filename}\marg{output +% intent}\marg{identifier}\marg{registry URL} +% \end{decl} +% Within the arguments of these macros, the characters |<|, |>|, |&|, +% |^|, |_|, |#|, |$|, and |~| can be used as themselves, but +% |%| must be escaped as |\%|. The defaults are: +% \begin{verbatim} +% \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} +% +% \setCMYKcolorprofile{coated_FOGRA39L_argl.icc} +% {Coated FOGRA39} +% {FOGRA39 (ISO Coated v2 300\% (ECI))} +% {http://www.argyllcms.com/} +% \end{verbatim} +% +% Some color profile files may be obtained from the International +% Color Consortium. Please take a look at +% \url{http://www.color.org/iccprofile.xalter}. +% +% \subsection{Notes on the internal representation of metadata} +% +% Within the PDF file, metadata is deposited in two places: some data +% goes into the native PDF |/Info| dictionary, and some data goes into +% an XMP packet stored separately within the file. XMP is Adobe's +% Extensible Metadata Platform, and is an XML-based format. See +% \href{http://www.adobe.com/devnet/xmp/}{Adobe XMP Development +% Center} for more exhaustive information about XMP. An XMP Toolkit +% SDK which supports the GNU/Linux, Macintosh and Windows operating +% 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 +% 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 +% 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. +% +% |pdfx| makes use of the |xmpincl| package to include |xmp| data into +% the PDF. The documentation of |xmpincl| package may help interested +% users to understand the process of |xmp| data inclusion. +% +% \subsection{Tutorials and technical notes} +% +% A tutorial with step-by-step instructions for generating PDF/A files +% can be found at: +% \url{http://www.mathstat.dal.ca/~selinger/pdfa/}. +% +% Some technical notes about production problems the authors have +% encountered while generating PDF/A compliant documents are available +% here: +% \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}. +% +% +% +% \section{Installing} +% +% 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. +% +% 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 +% 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: % \begin{enumerate} -% \item |xmpincl| for insertion of metadata into \pdf. +% \item |xmpincl| for insertion of metadata into PDF. % \item |hyperref| for hyperlinking, bookmarks, etc. % \item |glyphtounicode.tex| maps glyph names to corresponding Unicode. -% \item |glyphtounicode-cmr.tex| does the same for |cmr| fonts. % \end{enumerate} -% Necessary color profile files may be obtained from the International -% Color Consortium. Please take a look at -% \url{http://www.color.org/iccprofile.xalter}. % % \subsection{Files included} % -% Following files are included in the archive: -% -% \begin{enumerate} -% \item |pdfx.dtx| --- composite package and documentation. -% \item |pdfx.ins| --- installer batch file. -% \item |pdfx-1a.xmp| --- specimen |xmp| template for \pdfx. -% \item |pdfa-1b.xmp| --- specimen |xmp| template for \pdfa. -% \item |small2e.xmpdata| --- specimen data file to provide values -% relating to the document to generate metadata. -% \item |glyphtounicode-cmr.tex| --- glyph names in cmr font to -% corresponding Unicode. -% \end{enumerate} -% A directory named |pdfx| may be created under |$TEXMF/tex/latex| and -% all |*.sty|, |*.xmp| and |glyphtounicode-cmr.tex| may be moved to -% the same. \TeX's file database should then be updated by a suitable -% command depending on your distribution and operating system. -% -% \subsection{Options} -% -% The package can be loaded with the command: -% \begin{decl} -% \defmacro{usepackage}|[<option>]{pdfx}| -% \end{decl} -% where the options are: -% \begin{description} -% \item[|x-1a|] generates \pdfx compliant \pdf. -% \item[|a-1b|] generates \pdfa compliant \pdf. -% \end{description} +% The following files are included in the archive: % -% \subsection{Useful production notes} +% \subsubsection{Package files} % -% We have included some useful notes about production problems which -% we have encountered while generating \pdfa compliant documents and -% the fixes recommended at: -% \url{http://support.river-valley.com/wiki/index.php?title=Generating_PDF/A_compliant_PDFs_from_pdftex}. +% \begin{itemize} +% \item |pdfx.sty| --- main package file generated from |pdfx.dtx|. +% \item |pdfa.xmp| --- specimen |xmp| template for PDF/A. +% \item |pdfe.xmp| --- specimen |xmp| template for PDF/E. +% \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 |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. +% \end{itemize} +% +% \subsubsection{Documentation} +% +% \begin{itemize} +% \item |README| --- Readme file. +% \item |manifest.txt| --- file list. +% \item |sample.tex|, |sample.xmpdata| --- a sample file with sample +% metadata. +% \item |small2e-pdfx.tex|, |small2e-pdfx.xmpdata| --- another sample +% file with sample metadata. +% \end{itemize} +% +% \subsubsection{Sources} +% +% \begin{itemize} +% \item |src/pdfx.dtx| --- composite package and documentation. +% \item |src/pdfx.ins| --- installer batch file. +% \item |src/rvdtx.sty| --- used by |pdfx.dtx|. +% \item |src/Makefile| --- a Makefile for building the documentation. +% \end{itemize} % % \subsection{Miscellaneous information} % -% The package is released under the \LaTeX{} Project Public Licence. Bug -% reports, suggestions, feature requests, etc., may be sent to the -% authors at \href{mailto:cvr@river-valley.org}{\ttfamily -% cvr@river-valley.org} and/or -% \href{mailto:thanh@river-valley.org}{\ttfamily -% thanh@river-valley.org}. +% The package is released under the \LaTeX{} Project Public +% Licence. Bug reports, suggestions, feature requests, etc., may be +% sent to the original authors at +% \href{mailto:cvr@river-valley.org}{\ttfamily cvr@river-valley.org} +% and/or +% \href{mailto:thanh@river-valley.org}{\ttfamily thanh@river-valley.org}, +% or to the more recent contributors at +% \href{mailto:ross.moore@mq.edu.au}{\ttfamily ross.moore@mq.edu.au} +% and/or +% \href{mailto:selinger@mathstat.dal.ca}{\ttfamily selinger@mathstat.dal.ca}. % % \section{Implementation} -% \subsection{Various auxiliary macros} % -% Two booleans are defined to switch between two options, |a-1b| and -% |x-1a|. \pdfx further demands \pdf version 1.3 and properly placed -% mediabox, bleedbox and trimbox (innermost) in that order. The -% MediaBox defines the size of the entire document, either the -% ArtBox or the TrimBox, defines the extent of the printable -% area. If the file is to be printed with bleed, a BleedBox, which -% must be larger than the TrimBox/ArtBox, but smaller than the -% MediaBox, must be defined. -% -% \begin{macrocode} +% \iffalse %<*package> -% -% $Id: pdfx.dtx,v 1.2 2008/12/10 13:51:10 cvr Exp cvr $ -% +% \fi +% \begin{macrocode} + \@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\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 -\newif\ifpdfxonea \pdfxoneafalse -\newif\ifpdfaoneb \pdfaonebfalse +%% 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. -\DeclareOption{a-1b}{\global\pdfaonebtrue} -\DeclareOption{x-1a}{\global\pdfxoneatrue} +%% 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 -% \end{macrocode} -% -% Several macros were defined to capture data for the \xmp metadata to -% be inserted into the PDF during generation. -% \begin{macrocode} -\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 -% \end{macrocode} -% -% \subsection{Document and instance ID's} -% -% Document \textsc{id} and instance \textsc{id} are created from -% values obtained from |\jobname.pdf| and |\pdfcreationdate| by making -% \DescribeMacro{\findUUID} -% \DescribeMacro{\uuid} -% use of |\pdfmdfivesum| primitive of \pdftex. -% \begin{macrocode} -\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} -% \end{macrocode} -% -% |\jobname.xmpdata| is read if available and the package, |xmpincl| -% is also loaded which will take care of inserting metadata into the -% \pdf document. -% -% \begin{macrocode} -\InputIfFileExists{\jobname.xmpdata}{}{} -\RequirePackage{xmpincl} -% \end{macrocode} -% -% \DescribeMacro{\convDate} -% \DescribeMacro{\convertDate} -% The date format needed by metadata is different from the value -% provided by the |\pdfcreationdate|. |\convertDate| macro generates -% the required date format from |\pdfcreationdate|. -% -% \begin{macrocode} -\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\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 -% \end{macrocode} -% -% \subsection{Color profiles} -% \DescribeMacro{/OutputIntents} For better color management, \pdfx -% and \pdfa need an ICC profile included in the document. An ICC -% profile is a set of data that characterizes a color input or output -% device, or a color space, according to standards promulgated by the -% International Color Consortium (ICC). Profiles describe the color -% attributes of a particular device or viewing requirement by defining -% a mapping between the device source or target color space and a -% profile connection space. For \pdfx, we have included the ICC -% profile namely, |FOGRA39L.icc| which is for \textsc{cmyk} data and -% for \pdfa, we have used |sRGBIEC1966-2.1.icm| for \textsc{rgb} -% data. You can change the value of the |file| attribute in the code -% below to use different color profile files. -% -% \begin{macrocode} -\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\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\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 (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) - >> ]} -\else - \immediate\pdfobj stream attr{/N 4} file{sRGBIEC1966-2.1.icm} - \edef\OBJ@RVT{\the\pdflastobj} + /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 (\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 +%% 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 -% \end{macrocode} -% -% One of the |xmp| files is selectively loaded based on the option -% chosen. -% -% \begin{macrocode} + \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 -% \end{macrocode} -% -% |glyphtounicode.tex| and |glyphtounicode-cmr.tex| are read. -% These files contain mapping from glyph names to corresponding unicode for -% embedded fonts, which are required by \pdfa. |glyphtounicode.tex| covers -% AGL (Adobe Glyph List), names from |texglyphlist.txt| (part of -% lcdf-typetools) and |zapfdingbats.txt|, plus a few exceptions. -% |glyphtounicode-cmr.tex| covers glyphs that are used in CM fonts but not -% listed in |glyphtounicode.txt|; the mappings come from file |goadb998.nam| -% (part of \TeX{} Gyre fonts). +%% ---------------------------------------------------------------------- +\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 -% -% \begin{macrocode} \input glyphtounicode.tex \input glyphtounicode-cmr.tex \pdfgentounicode=1 -% \end{macrocode} -% -% Active content is not allowed in a \pdfx file. This means that -% standard \pdf features like forms, signatures, comments and embedded -% sounds and movies are not allowed in \pdfx. So |hyperref| is loaded -% in |draft| mode and an |info| dictionary is defined with |\pdfinfo| -% command. -% -% \begin{macrocode} -\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 -% \end{macrocode} -% -% For \pdfa, load |hyperref| package with |pdfa| option, so that it -% will take care of the link annotations correctly. We have slightly -% modified the |\pdfinfo| by including |/GTS_PDFA1Version| -% |(PDA/A-1b:2005)|. Take a look at the modified |\PDF@FinishDoc| -% macro of |hyperref|. -% -% \begin{macrocode} - \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 -% -%</package> + \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{macrocode} +% \iffalse +%</package> +% \fi % \Finale % \PrintIndex % \PrintChanges diff --git a/Master/texmf-dist/source/latex/pdfx/pdfx.ins b/Master/texmf-dist/source/latex/pdfx/pdfx.ins index 0d0f2e32499..e4a8eee433e 100644 --- a/Master/texmf-dist/source/latex/pdfx/pdfx.ins +++ b/Master/texmf-dist/source/latex/pdfx/pdfx.ins @@ -1,10 +1,13 @@ \input docstrip.tex %\keepsilent +\askforoverwritefalse \preamble - 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 diff --git a/Master/texmf-dist/source/latex/pdfx/rvdtx.sty b/Master/texmf-dist/source/latex/pdfx/rvdtx.sty index 6e7e9235d32..2160142cfa2 100644 --- a/Master/texmf-dist/source/latex/pdfx/rvdtx.sty +++ b/Master/texmf-dist/source/latex/pdfx/rvdtx.sty @@ -91,11 +91,6 @@ a4paper} \RequirePackage{comment,xspace} -\def\xml{\textsc{xml}\xspace} -\def\pdf{\textsc{pdf}\xspace} -\def\pdfa{\textsc{pdf/a-1}b\xspace} -\def\pdfx{\textsc{pdf/x-1}a\xspace} -\def\xmp{\textsc{xmp}\xspace} \def\pdftex{\textsc{pdf\TeX}\xspace} \def\defmacro#1{\texttt{\@bsl#1}} \def\thanh{H\`an Th\^e Th\`anh\xspace} |