[latex3-commits] [git/LaTeX3-latex3-pdfresources] testlinkstuff: storing (b4f9aea)

Ulrike Fischer fischer at troubleshooting-tex.de
Mon May 6 12:52:41 CEST 2019


Repository : https://github.com/latex3/pdfresources
On branch  : testlinkstuff
Link       : https://github.com/latex3/pdfresources/commit/b4f9aeae6aada4eb375811d24028d8473af5bb3d

>---------------------------------------------------------------

commit b4f9aeae6aada4eb375811d24028d8473af5bb3d
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Mon May 6 12:52:41 2019 +0200

    storing


>---------------------------------------------------------------

b4f9aeae6aada4eb375811d24028d8473af5bb3d
 pageresources.tex |   89 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 83 insertions(+), 6 deletions(-)

diff --git a/pageresources.tex b/pageresources.tex
index 6dfe67f..5065e16 100644
--- a/pageresources.tex
+++ b/pageresources.tex
@@ -191,6 +191,70 @@ Every of the five dictionaries ExtGState, ColorSpace, Pattern, Shading, Properti
 It must be decided when to write the properties to pdfpageresources.
 
 \section{pdfcatalog}
+\begin{itemize}
+\item The catalog dictionary (the root of the pdf) is filled by e.g. \verb+\pdfcatalog+. 
+\item Multiple appearances of  \verb+\pdfcatalog+ are concatenated (is this true for all drivers??).
+
+\begin{verbatim}
+\pdfcatalog{/XXX (abc)}
+\pdfcatalog{/YYY (cde)}
+\pdfcatalog{/XXX (cde)}
+9 0 obj
+<<
+/Type /Catalog
+/Pages 5 0 R
+/XXX (abc)/YYY (cde)/XXX (cde)
+>>
+endobj
+\end{verbatim}
+
+\item Entries:
+\begin{enumerate}
+  \item Type (name, required, automatic)
+  \item Pages (dict, required, automatic)
+  \item Version (name, e.g. /1.4), takes precendance over the heaver \emph{if later}
+  \item \emph{Collection} (dict, pdf 1.7, (for file attachments)) 
+  \item \emph{OCProperties} (dict, pdf 1.5, required if a document contains optional content) 
+        contains OCGs (array of references), D (dict pointing to a start config), Configs (array of dicts). 
+  \item \emph{AcroForm} (dict)       
+  \item \emph{Metadata} (stream)
+  \item \emph{PageMode} (name: UseNone, UseOutlines, UseThumbs, FullScreen, UseOC (PDF 1.5),
+   UseAttachments (PDF 1.6)
+  \item \emph{ViewerPreferences} (dict)
+  \item PageLabels (number tree /indirect object) 
+  \item Names (dict)
+  \item Dests (dict, must be an indirect reference) 
+   
+  \item PageLayout (name: one of SinglePage, OneColumn, 
+  TwoColumnLeft, TwoColumnRight, TwoPageLeft (PDF 1.5), TwoPageRight (PDF 1.5) 
+  \item PageMode (name: UseNone, UseOutlines, UseThumbs, FullScreen, UseOC (PDF 1.5),
+   UseAttachments (PDF 1.6)
+
+  \item Outlines (dict, must be an indirect reference) 
+  \item Threads (array, must be an indirect reference) 
+  \item OpenAction (array (dest) or dictionary (action))
+  \item AA (dict, additional-actions) 
+  \item URI (dict) 
+  \item StructTreeRoot (dict) relevant for tagging
+  \item MarkInfo (dict) relevant for tagging 
+   \item Lang (string, e.g. (de-DE))
+  \item SpiderInfo (dict) 
+  \item OutputIntents (array of dict) 
+  An array of output intent dictionaries describing the color characteristics of output devices on which the document might be rendered \item PieceInfo (dict) 
+ 
+  \item Perms (dict, pdf 1.5, permissions) 
+  \item Legal (dict, pdf 1.5)
+  \item Requirements (array, pdf 1.7) 
+
+  \item NeedsRendering (boolean, pdf 1.7) 
+  \item Extensions (dict, pdf 2.0)
+  \item DSS (dict, pdf 2.0)
+  \item AF (array of dictionaries, pdf 2.0, associated files, important for accessibility)
+  \item DPartRoot, (dict, pdf 2.0)
+\end{enumerate}
+\end{itemize}
+
+
 
 \subsection{uses}
 \begin{description}
@@ -200,11 +264,10 @@ It must be decided when to write the properties to pdfpageresources.
    \item[pdfnotiz] /AcroForm (in sync with cooltooltips)
   \item[dccpaper-base] /Metadata (XML-stream)
   \item[hyperref] /OCProperties, /PageMode, /URI, openaction goto page, /ViewerPreferences<<lots of content>>, /Lang, /AcroForm (not in sync with cooltooltips),
-  \item[hyperxmp]
-  \item[jmlrbook.cls]
-  \item[media9]
-  \item[pdfbase]
-  \item[ocgbase]
+  \item[hyperxmp] /Metadata
+  \item[jmlrbook.cls] /OutputIntents, /Metadata  
+  \item[pdfbase] AcroForm
+  \item[ocgbase] /OCProperties, 
   \item[ocg-p]
   \item[pdfpagediff]
   \item[pdfx]
@@ -213,6 +276,20 @@ It must be decided when to write the properties to pdfpageresources.
   \item[xmpincl]
   \item[zwpagelayout]
 \end{description}
-yet missing
+
+\subsection{Discussion}
+Some values in the catalog need special treatment. So we will have a central property for the catalog, and a number of special properties. An entry like Lang can be added to the catalog property, but e.g ViewerPreferences needs a special property, and the general prop should only contain the indirect reference to the dict obj. Probably a number of tests are needed to prevent users to write into the wrong prop.
+
+\begin{itemize}
+ \item Collection: unclear
+ \item OCProperties: (unclear) Possible that more than one package wants to add something. Then it must be done in the sub dicts OCGs and Configs and would need management.
+ \item AcroForm: (unclear) It looks as if only one can win here. Compare what the packages do and if overwriting is a problem. 
+ \item Metadata: (unclear) Only one can win here, so we need to sort out, how to create and fill the stream. 
+ \item PageMode, Uri, Lang: (direct write) 
+ \item ViewerPreferences: needs its own property that can be filled by packages. At the end it should then be added by us to the catalog. 
+     
+ \item OutputIntents: needs it own property, as more than one intent can be added. The \enquote{ID} of an intent is the value of OutputCondition, so there should be a way to test it.
+\item       
+\end{itemize}
 \end{document}
 





More information about the latex3-commits mailing list