summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx')
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx70
1 files changed, 58 insertions, 12 deletions
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index f9fc15bf4d..e556f3575c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95r, released 2022-08-24}
+% \date{Version 0.95s, released 2022-09-26}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2022-08-24}{}
+ {l3backend-testphase-dvipdfmx.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2022-08-24}{}
+ {l3backend-testphase-dvips.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2022-08-24}{}
+ {l3backend-testphase-dvisvgm.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2022-08-24}{}
+ {l3backend-testphase-luatex.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2022-08-24}{}
+ {l3backend-testphase-pdftex.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2022-08-24}{}
+ {l3backend-testphase-xetex.def}{2022-09-26}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -580,7 +580,7 @@
%<*pdftex|luatex>
\clist_map_inline:Nn \c_@@_backend_PageResources_clist
{
- \pdf_object_new:nn {@@/Page/Resources/#1} {dict}
+ \pdf_object_new:n {@@/Page/Resources/#1}
\cs_if_exist:NT \tex_directlua:D
{
\tex_directlua:D
@@ -624,8 +624,8 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g_@@_Core/Page/Resources/##1} }
{
- \pdf_object_write:nx
- { @@/Page/Resources/##1 }
+ \pdf_object_write:nnx
+ { @@/Page/Resources/##1 } { dict }
{ \pdfdict_use:n { g_@@_Core/Page/Resources/##1} }
}
}
@@ -649,8 +649,11 @@
%
\clist_map_inline:Nn \c_@@_backend_PageResources_clist
{
- \pdf_object_new:nn { @@/Page/Resources/#1 } { dict }
- \hook_gput_code:nnn{shipout/firstpage}{pdf}{\pdf_object_write:nn { @@/Page/Resources/#1 } {}}
+ \pdf_object_new:n { @@/Page/Resources/#1 }
+ \hook_gput_code:nnn
+ {shipout/firstpage}
+ {pdf}
+ {\pdf_object_write:nnn { @@/Page/Resources/#1 } { dict } {}}
}
\cs_new_protected:Npn \@@_backend_PageResources:n #1
{
@@ -1998,9 +2001,52 @@
%<*drivers>
\pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')}
\pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')}
+ \AddToDocumentProperties[document]{pdfcreationdate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[document]{pdfmoddate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[hyperref]{pdfmetadate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[hyperref]{pdfdate}{D:20010101205959-00'00'}
+ \AddToDocumentProperties[hyperref]{pdfinstanceid}{uuid:0a57c455-157a-4141-8c19-6237d832fc80}
}
%</drivers>
% \end{macrocode}
+%
+% \subsection{Uncompressed metadata object stream}
+% The xmp metadata should be written \enquote{uncompressed} to pdf.
+% It is not quite clear what exactly that means. Probably it only
+% means that there should be no |/Filter| key in the stream, but
+% packages like \pkg{pdfx} and \pkg{hyperref} try to suppress object
+% compression too, so we add support for it too.
+% With luatex this is possible by using the |uncompressed| key word.
+% With pdftex one can change locally the compresslevel. (x)dvipdfmx does
+% it automatically and doesn't need some special command. No solution
+% is known for the dvips route. We need it only once, so we make
+% it special and probably no public interface is needed. It writes
+% an unnamed object so should be referenced directly with |\pdf_object_ref_last:|
+% \begin{macrocode}
+%<*luatex>
+\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+ {
+ \tex_immediate:D \tex_pdfextension:D obj ~uncompressed~
+ \__pdf_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
+ }
+%</luatex>
+%<*pdftex>
+\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+ {
+ \group_begin:
+ \tex_pdfcompresslevel:D 0 \scan_stop:
+ \tex_immediate:D \tex_pdfobj:D
+ \__pdf_backend_object_write:nn {stream} {{/Type~/Metadata~/Subtype~/XML}{#1}}
+ \group_end:
+ }
+%</pdftex>
+%<*xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+\cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1
+ {
+ \pdf_object_unnamed_write:nn {stream}{{/Type~/Metadata~/Subtype~/XML}{#1}}
+ }
+%</xdvipdfmx|dvipdfmx|dvips|dvisvgm>
+% \end{macrocode}
% \subsection{lua code for lualatex}
% \begin{macrocode}
%<*lua>