summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfmanagement-testphase
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-05-14 20:12:08 +0000
committerKarl Berry <karl@freefriends.org>2021-05-14 20:12:08 +0000
commitcd51de63725b21c1d3cba9ea2a26555fa8c35e77 (patch)
treeeda81e30b805f8d4a8c326135717df622c3fbce7 /Master/texmf-dist/tex/latex/pdfmanagement-testphase
parent94e30de3e8e2b8a03f814dfa490e6db7d81aba44 (diff)
pdfmanagement-testphase (14may21)
git-svn-id: svn://tug.org/texlive/trunk@59194 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfmanagement-testphase')
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def132
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty14
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def20
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def18
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty1134
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty24
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx122
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty54
17 files changed, 1121 insertions, 447 deletions
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
index 15754414a16..d8a6c9c4085 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/color-ltx.sty
@@ -22,7 +22,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2021-03-17 v0.95c
+\ProvidesPackage{color-ltx}[2021-05-14 v0.95d
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2021/03/07 v1.2e) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
index 98d06175e9d..2fb91d1a128 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hgeneric-testphase.def
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: hyperref-generic.dtx
-\ProvidesFile{hgeneric-testphase.def}[2021-03-17 v0.95c %
+\ProvidesFile{hgeneric-testphase.def}[2021-05-14 v0.95d %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -243,8 +243,12 @@
,href / format .code:n = { \cs_set_eq:NN \__hyp_href_url_format #1 }
}
+\hook_new_pair:nn{cmd/href/before}{cmd/href/after}
+
\DeclareRobustCommand*{\href}[1][]{%
- \begingroup
+ \mode_leave_vertical:
+ \hook_use:n{cmd/href/before}
+ \group_begin:
\keys_set:nn { hyp / href } {#1}
\let\protect\@unexpandable@protect
\bool_if:NTF \l__hyp_href_url_encode_bool
@@ -257,11 +261,27 @@
\@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
}
-\DeclareRobustCommand*{\hrefurl}[1][]{
- \group_begin:
- \keys_set:nn { hyp / href } {#1}
- \let\protect\@unexpandable@protect
- \bool_if:NTF \l__hyp_href_url_encode_bool
+\begingroup
+ \catcode`\$=6 %
+ \catcode`\#=12 %
+ \gdef\href@$1{\expandafter\href@split$1##\\}%
+ \gdef\href@split$1#$2#$3\\$4{%
+ \hyper@@link{$1}{$2}{$4}%<---__hyp-docstrip doubling!
+ \endgroup
+ \hook_use:n{cmd/href/after}
+ }%
+\endgroup
+
+\hook_new_pair:nn{cmd/hrefurl/before}{cmd/hrefurl/after}
+
+\DeclareRobustCommand*{\hrefurl}[1][]
+ {
+ \mode_leave_vertical:
+ \hook_use:n{cmd/href/before}
+ \group_begin:
+ \keys_set:nn { hyp / href } {#1}
+ \let\protect\@unexpandable@protect
+ \bool_if:NTF \l__hyp_href_url_encode_bool
{
\tl_set:Nn \l__hyp_text_enc_uri_print_tl {utf8/URI}
}
@@ -274,11 +294,15 @@
{
\exp_args:Nno\hyper@linkurl{#2}{\l__hyp_href_url_protocol_tl#1}
\group_end:
+ \hook_use:n{cmd/href/after}
}
+\hook_new_pair:nn{cmd/hrefpdf/before}{cmd/hrefpdf/after}
\DeclareRobustCommand*{\hrefpdf}[1][]
{
- \begingroup
+ \mode_leave_vertical:
+ \hook_use:n{cmd/hrefpdf/before}
+ \group_begin:
\keys_set:nn { hyp / href } {#1}
\let\protect\@unexpandable@protect
\hyper@normalise\__hyp_href_pdf_aux:nn
@@ -286,11 +310,16 @@
\cs_new_protected:Npn \__hyp_href_pdf_aux:nn #1 #2
{
- \exp_args:Nnno\hyper@linkfile{#2}{#1}{\l__hyp_href_pdf_destination_tl}\endgroup
+ \exp_args:Nnno\hyper@linkfile{#2}{#1}{\l__hyp_href_pdf_destination_tl}
+ \group_end:
+ \hook_use:n{cmd/hrefpdf/after}
}
+\hook_new_pair:nn{cmd/hrefrun/before}{cmd/hrefrun/after}
\DeclareRobustCommand*{\hrefrun}[1][]
{
+ \mode_leave_vertical:
+ \hook_use:n{cmd/hrefrun/before}
\group_begin:
\keys_set:nn { hyp / href } {#1}
\let\protect\@unexpandable@protect
@@ -301,10 +330,15 @@
{
\exp_args:Nnno\hyper@linklaunch{#2}{#1}{\l__hyp_href_run_parameter_tl}
\group_end:
+ \hook_use:n{cmd/hrefrun/after}
}
+\hook_new_pair:nn{cmd/url/before}{cmd/url/after}
+
\DeclareRobustCommand*{\url}[1][]
{
+ \mode_leave_vertical:
+ \hook_use:n{cmd/url/before}
\group_begin:
\keys_set:nn {hyp / href } {#1}
\let\protect \@unexpandable@protect
@@ -324,8 +358,16 @@
\hyper@linkurl{\__hyp_href_url_format {#1}}
{\l__hyp_href_url_protocol_tl#1}
\group_end:
+ \hook_use:n{cmd/url/after}
}
+
+\def\urldef#1#2{\begingroup\def\url{\hyper@normalise\url@}\setbox\z@\hbox\bgroup
+ \def\Url@HyperHook##1\endgroup{\Url@def{#1}{#2}}%
+ % Because hyperref breaks \urldef and does not define its own (Grrrr!)...
+ \def\url@##1{\egroup\endgroup\DeclareRobustCommand#1{#2{##1}}}%
+ #2}
+
\NewExpandableDocumentCommand\__hyp_secondoftwowithopt:wnn {omm}{#3}
\pdfstringdefDisableCommands{\let\hrefurl\__hyp_secondoftwowithopt:wnn}
\pdfstringdefDisableCommands{\let\hrefpdf\__hyp_secondoftwowithopt:wnn}
@@ -341,9 +383,9 @@
\color_set:nn {hyp/color/citeborder}{hyp/color/cite!60!white}
\keys_define:nn { hyp / setup }
{
- ,citecolor .code:n = {\__hyp_color_set:nn {hyp/color/cite}{#1}}
+ ,citecolor .code:n = {\__hyp_color_set:ne {hyp/color/cite}{#1}}
,citebordercolor
- .code:n = {\__hyp_color_set:nn {hyp/color/citeborder}{#1}}
+ .code:n = {\__hyp_color_set:ne {hyp/color/citeborder}{#1}}
}
\hook_gput_code:nnn { hyp/link/cite }{hyp/cite}
{
@@ -810,14 +852,14 @@
{
\tl_if_head_eq_charcode:nNTF {#1}[ %]
{
- \__hyp_colormodel_export:wnnN #1 {#2} #3
+ \__hyp_color_export_aux:wnnN #1 {#2} #3
}
{
\color_export:nnN {#1} {#2} #3
}
}
-\cs_new_protected:Npn \__hyp_colormodel_export:wnnN [#1] #2 #3 #4
+\cs_new_protected:Npn \__hyp_color_export_aux:wnnN [#1] #2 #3 #4
{
\color_export:nnnN {#1}{#2}{#3}#4
}
@@ -827,14 +869,14 @@
{
\tl_if_head_eq_charcode:nNTF {#1}[ %]
{
- \__hyp_colormodel_select_aux:wn #1
+ \__hyp_color_select_aux:wn #1
}
{
\color_select:n {#1}
}
}
-\cs_new_protected:Npn \__hyp_colormodel_select_aux:wn [#1] #2
+\cs_new_protected:Npn \__hyp_color_select_aux:wn [#1] #2
{
\color_select:nn {#1}{#2}
}
@@ -844,14 +886,14 @@
{
\tl_if_head_eq_charcode:nNTF {#2}[ %]
{
- \__hyp_colormodel_set_aux:nwn { #1 } #2
+ \__hyp_color_set_aux:nwn { #1 } #2
}
{
\color_set:nn {#1} {#2}
}
}
-\cs_new_protected:Npn \__hyp_colormodel_set_aux:nwn #1 [#2] #3
+\cs_new_protected:Npn \__hyp_color_set_aux:nwn #1 [#2] #3
{
\color_set:nnn {#1}{#2}{#3}
}
@@ -1051,17 +1093,17 @@
}
\cs_new_protected:Npn \__hyp_ocg_init:
{
- \pdf_object_new:nn { l__hyp_ocg_view_dict_obj } { dict }
- \pdf_object_new:nn { l__hyp_ocg_print_dict_obj } { dict }
- \pdf_object_new:nn { l__hyp_ocg_config_dict_obj } { dict }
- \pdf_object_new:nn { l__hyp_ocg_ref_array_obj } { array }
- \pdf_object_write:nx { l__hyp_ocg_ref_array_obj }
+ \pdf_object_new:nn { __hyp/OCG/View } { dict }
+ \pdf_object_new:nn { __hyp/OCG/Print } { dict }
+ \pdf_object_new:nn { __hyp/OCG/config } { dict }
+ \pdf_object_new:nn { __hyp/OCG/refarray } { array }
+ \pdf_object_write:nx { __hyp/OCG/refarray }
{
- \pdf_object_ref:n { l__hyp_ocg_view_dict_obj }
+ \pdf_object_ref:n { __hyp/OCG/View }
\c_space_tl
- \pdf_object_ref:n { l__hyp_ocg_print_dict_obj }
+ \pdf_object_ref:n { __hyp/OCG/Print }
}
- \pdf_object_write:nn { l__hyp_ocg_view_dict_obj }
+ \pdf_object_write:nn { __hyp/OCG/View }
{
/Type/OCG
/Name(View)
@@ -1071,7 +1113,7 @@
/View <</ViewState/ON >>~
>>
}
- \pdf_object_write:nn { l__hyp_ocg_print_dict_obj }
+ \pdf_object_write:nn { __hyp/OCG/Print }
{
/Type/OCG
/Name(Print)
@@ -1081,30 +1123,30 @@
/View <</ViewState/OFF>>~
>>
}
- \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {l__hyp_ocg_view_dict_obj} }
- \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {l__hyp_ocg_print_dict_obj} }
- \pdf_object_write:nx { l__hyp_ocg_config_dict_obj }
+ \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {__hyp/OCG/View} }
+ \pdfmanagement_add:nnx { Catalog / OCProperties }{OCGs }{ \pdf_object_ref:n {__hyp/OCG/Print} }
+ \pdf_object_write:nx { __hyp/OCG/config }
{
- /OFF[\pdf_object_ref:n { l__hyp_ocg_print_dict_obj }]
+ /OFF[\pdf_object_ref:n { __hyp/OCG/Print }]
/AS[
<<
/Event/View
- /OCGs\c_space_tl \pdf_object_ref:n { l__hyp_ocg_ref_array_obj }
+ /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray }
/Category[/View]
>>
<<
/Event/Print
- /OCGs\c_space_tl \pdf_object_ref:n { l__hyp_ocg_ref_array_obj }
+ /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray }
/Category[/Print]
>>
<<
/Event/Export
- /OCGs\c_space_tl \pdf_object_ref:n { l__hyp_ocg_ref_array_obj }
+ /OCGs\c_space_tl \pdf_object_ref:n { __hyp/OCG/refarray }
/Category[/Print]
>>
]
}
- \pdfmanagement_add:nnx { Catalog / OCProperties }{ D }{ \pdf_object_ref:n { l__hyp_ocg_config_dict_obj} }
+ \pdfmanagement_add:nnx { Catalog / OCProperties }{ D }{ \pdf_object_ref:n { __hyp/OCG/config} }
\cs_gset:Npn \__hyp_ocg_init: {}
}
\prop_map_inline:Nn \c__hyp_map_hyp_annot_prop
@@ -1129,10 +1171,10 @@
\hbox_set_end:
\mbox
{
- \pdf_bdcobject:nn {OC}{l__hyp_ocg_print_dict_obj}
+ \pdf_bdcobject:nn {OC}{__hyp/OCG/Print}
\hbox_overlap_right:n { \box_use:N \l__hyp_tmpa_box }
\pdf_emc:
- \pdf_bdcobject:nn {OC}{l__hyp_ocg_view_dict_obj}
+ \pdf_bdcobject:nn {OC}{__hyp/OCG/View}
\group_begin:
\color_select:n { hyp/color/#1 }
\box_use_drop:N \l__hyp_tmpa_box
@@ -2447,9 +2489,9 @@
}
}
\pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font }
- {ZaDb} {\pdf_object_ref:n {l__hyp_font_zapfdingbats_obj} }
+ {ZaDb} {\pdf_object_ref:n {__hyp/Font/ZaDb} }
\pdfmanagement_add:nnx {Catalog / AcroForm/DR/Font }
- {Helv} {\pdf_object_ref:n {l__hyp_font_helvetica_obj} }
+ {Helv} {\pdf_object_ref:n {__hyp/Font/Helv} }
\pdfmanagement_add:nnx {Catalog /AcroForm}
{DA}{(/Helv~10~Tf~0~g)}
\pdfmeta_standard_verify:nTF {form_no_NeedAppearance}
@@ -2859,10 +2901,10 @@
\ExplSyntaxOn
\def\Hy@FormObjects
{
- \pdf_object_new:nn {l__hyp_encoding_pdfdoc_obj } { dict }
- \pdf_object_new:nn {l__hyp_font_zapfdingbats_obj } { dict }
- \pdf_object_new:nn {l__hyp_font_helvetica_obj } { dict }
- \pdf_object_write:nx {l__hyp_encoding_pdfdoc_obj }
+ \pdf_object_new:nn {__hyp/Encoding/pdfdoc } { dict }
+ \pdf_object_new:nn {__hyp/Font/ZaDb } { dict }
+ \pdf_object_new:nn {__hyp/Font/Helv } { dict }
+ \pdf_object_write:nx {__hyp/Encoding/pdfdoc }
{
/Type/Encoding
/Differences[
@@ -2904,20 +2946,20 @@
/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis
]
}
- \pdf_object_write:nn {l__hyp_font_zapfdingbats_obj }
+ \pdf_object_write:nn {__hyp/Font/ZaDb }
{
/Type/Font
/Subtype/Type1
/Name/ZaDb
/BaseFont/ZapfDingbats
}
- \pdf_object_write:nx {l__hyp_font_helvetica_obj }
+ \pdf_object_write:nx {__hyp/Font/Helv }
{
/Type/Font
/Subtype/Type1
/Name/Helv
/BaseFont/Helvetica
- /Encoding~\pdf_object_ref:n { l__hyp_encoding_pdfdoc_obj }
+ /Encoding~\pdf_object_ref:n { __hyp/Encoding/pdfdoc }
}
\global\let\Hy@FormObjects\relax
}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
index b38a47f09c1..ab8723947e4 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2021-03-17}{0.95c}
+\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2021-05-14}{0.95d}
{Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF}
\cs_if_exist:NT \pdfmanagement_add:nnn
@@ -103,8 +103,8 @@
,pdfcontacturl
,pdfdate
%hyperref, needs probably special handling
- ,pdftitle
- ,pdfsubject
+ % ,pdftitle %see below
+ % ,pdfsubject %see below
,pdfkeywords
,pdfproducer
}
@@ -115,9 +115,15 @@
% pdfauthor, this is only a work around for simple author
% TODO needs improvement
+ \exp_args:NNe
\pdfstringdef\@pdfauthor{\GetDocumentProperties{hyperref/pdfauthor}}
\cs_set_eq:NN\hyxmp@pdfauthor\@pdfauthor
-
+ \exp_args:NNe
+ \pdfstringdef\@pdfsubject{\GetDocumentProperties{hyperref/pdfsubject}}
+ \cs_set_eq:NN\hyxmp@pdfsubject\@pdfsubject
+ \exp_args:NNe
+ \pdfstringdef\@pdftitle{\GetDocumentProperties{hyperref/pdftitle}}
+ \cs_set_eq:NN\hyxmp@pdftitle\@pdftitle
% pdflang,
\tl_if_exist:cF{@pdflang}{\tl_new:c{@pdflang}}
\tl_set:cx {@pdflang}{\GetDocumentProperties{document/lang}}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
index da3b99f7cb4..d5979d5bd1f 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvipdfmx.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvipdfmx.def}{2021-03-17}{}
+ {l3backend-testphase-dvipdfmx.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
@@ -127,8 +127,8 @@
\hook_gset_rule:nnnn{shipout/firstpage}{l3backend-dvipdfmx}{after}{pdf}
\clist_map_inline:Nn \c__pdf_backend_PageResources_clist
{
- \__pdf_backend_object_new:nn { Page/Resources/#1 } { dict }
- \hook_gput_code:nnn{shipout/firstpage}{pdf}{\__pdf_backend_object_write:nn { Page/Resources/#1 } {}}
+ \__pdf_backend_object_new:nn { __pdf/Page/Resources/#1 } { dict }
+ \hook_gput_code:nnn{shipout/firstpage}{pdf}{\__pdf_backend_object_write:nn { __pdf/Page/Resources/#1 } {}}
}
\cs_new_protected:Npn \__pdf_backend_PageResources:n #1
{
@@ -143,7 +143,7 @@
%objects are not filled with \pdf_object_write as this is not additive!
\__pdf_backend:x
{
- put~\__pdf_backend_object_ref:n {Page/Resources/#1}<</#2~#3>>
+ put~\__pdf_backend_object_ref:n {__pdf/Page/Resources/#1}<</#2~#3>>
}
}
@@ -226,7 +226,7 @@
\__kernel_backend_literal:x
{
pdf:put~@resources~
- <</##1~\__pdf_backend_object_ref:n {Page/Resources/##1}>>
+ <</##1~\__pdf_backend_object_ref:n {__pdf/Page/Resources/##1}>>
}
}
}
@@ -318,21 +318,21 @@
{
put~ @resources ~
<<
- /ExtGState~ \pdf_object_ref:n { Page/Resources/ExtGState }
+ /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState }
>>
}
\__pdf_backend:x
{
put~ @resources ~
<<
- /Pattern~ \pdf_object_ref:n { Page/Resources/Pattern }
+ /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern }
>>
}
\__pdf_backend:x
{
put~ @resources ~
<<
- /Shading~ \pdf_object_ref:n { Page/Resources/Shading }
+ /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading }
>>
}
\__pdf_backend:x
@@ -340,7 +340,7 @@
put~ @resources ~
<<
/ColorSpace~
- \pdf_object_ref:n { Page/Resources/ColorSpace }
+ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace }
>>
}
\exp_args:Nx
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
index a8baaf26b4d..547771b06fa 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvips.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvips.def}{2021-03-17}{}
+ {l3backend-testphase-dvips.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
index ba0b8b91d95..2f30f182790 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-dvisvgm.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-dvisvgm.def}{2021-03-17}{}
+ {l3backend-testphase-dvisvgm.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
index 866c334bbf4..d753d60d7df 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-luatex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-luatex.def}{2021-03-17}{}
+ {l3backend-testphase-luatex.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
@@ -161,14 +161,14 @@
%create the backend objects:
\clist_map_inline:Nn \c__pdf_backend_PageResources_clist
{
- \__pdf_backend_object_new:nn {Page/Resources/#1} {dict}
+ \__pdf_backend_object_new:nn {__pdf/Page/Resources/#1} {dict}
\cs_if_exist:NT \tex_directlua:D
{
\tex_directlua:D
{
- ltx.__pdf.object["Page/Resources/#1"]
+ ltx.__pdf.object["__pdf/Page/Resources/#1"]
=
- "\__pdf_backend_object_ref:n{Page/Resources/#1}"
+ "\__pdf_backend_object_ref:n{__pdf/Page/Resources/#1}"
}
}
}
@@ -190,7 +190,7 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} }
{
\__pdf_backend_object_write:nx
- { Page/Resources/##1 }
+ { __pdf/Page/Resources/##1 }
{ \pdfdict_use:n { g__pdf_Core/Page/Resources/##1} }
}
}
@@ -342,22 +342,22 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ExtGState } }
{
- /ExtGState~ \pdf_object_ref:n { Page/Resources/ExtGState }
+ /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Pattern } }
{
- /Pattern~ \pdf_object_ref:n { Page/Resources/Pattern }
+ /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Shading } }
{
- /Shading~ \pdf_object_ref:n { Page/Resources/Shading }
+ /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ColorSpace } }
{
- /ColorSpace~ \pdf_object_ref:n { Page/Resources/ColorSpace }
+ /ColorSpace~ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace }
}
}
\l__pdf_backend_tmpa_box
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
index 518c05f7376..10ed67a42f2 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-pdftex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-pdftex.def}{2021-03-17}{}
+ {l3backend-testphase-pdftex.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
@@ -135,14 +135,14 @@
%create the backend objects:
\clist_map_inline:Nn \c__pdf_backend_PageResources_clist
{
- \__pdf_backend_object_new:nn {Page/Resources/#1} {dict}
+ \__pdf_backend_object_new:nn {__pdf/Page/Resources/#1} {dict}
\cs_if_exist:NT \tex_directlua:D
{
\tex_directlua:D
{
- ltx.__pdf.object["Page/Resources/#1"]
+ ltx.__pdf.object["__pdf/Page/Resources/#1"]
=
- "\__pdf_backend_object_ref:n{Page/Resources/#1}"
+ "\__pdf_backend_object_ref:n{__pdf/Page/Resources/#1}"
}
}
}
@@ -158,7 +158,7 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/##1} }
{
\__pdf_backend_object_write:nx
- { Page/Resources/##1 }
+ { __pdf/Page/Resources/##1 }
{ \pdfdict_use:n { g__pdf_Core/Page/Resources/##1} }
}
}
@@ -263,7 +263,7 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/#1} }
{
- \pdfdict_item:ne { #1 }{ \pdf_object_ref:n {Page/Resources/#1}}
+ \pdfdict_item:ne { #1 }{ \pdf_object_ref:n {__pdf/Page/Resources/#1}}
}
}
@@ -361,22 +361,22 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ExtGState } }
{
- /ExtGState~ \pdf_object_ref:n { Page/Resources/ExtGState }
+ /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Pattern } }
{
- /Pattern~ \pdf_object_ref:n { Page/Resources/Pattern }
+ /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/Shading } }
{
- /Shading~ \pdf_object_ref:n { Page/Resources/Shading }
+ /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading }
}
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Page/Resources/ColorSpace } }
{
- /ColorSpace~ \pdf_object_ref:n { Page/Resources/ColorSpace }
+ /ColorSpace~ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace }
}
}
\l__pdf_backend_tmpa_box
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
index 7d9d4e523ab..42b8b8728fd 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase-xetex.def
@@ -20,7 +20,7 @@
%%
%% File: l3backend-testphase.dtx
\ProvidesExplFile
- {l3backend-testphase-xetex.def}{2021-03-17}{}
+ {l3backend-testphase-xetex.def}{2021-05-14}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
\RequirePackage{l3ref-tmp}
\cs_generate_variant:Nn \ref_label:nn {en}
@@ -127,8 +127,8 @@
\hook_gset_rule:nnnn{shipout/firstpage}{l3backend-xetex}{after}{pdf}
\clist_map_inline:Nn \c__pdf_backend_PageResources_clist
{
- \__pdf_backend_object_new:nn { Page/Resources/#1 } { dict }
- \hook_gput_code:nnn{shipout/firstpage}{pdf}{\__pdf_backend_object_write:nn { Page/Resources/#1 } {}}
+ \__pdf_backend_object_new:nn { __pdf/Page/Resources/#1 } { dict }
+ \hook_gput_code:nnn{shipout/firstpage}{pdf}{\__pdf_backend_object_write:nn { __pdf/Page/Resources/#1 } {}}
}
\cs_new_protected:Npn \__pdf_backend_PageResources:n #1
{
@@ -143,7 +143,7 @@
%objects are not filled with \pdf_object_write as this is not additive!
\__pdf_backend:x
{
- put~\__pdf_backend_object_ref:n {Page/Resources/#1}<</#2~#3>>
+ put~\__pdf_backend_object_ref:n {__pdf/Page/Resources/#1}<</#2~#3>>
}
}
@@ -226,7 +226,7 @@
\__kernel_backend_literal:x
{
pdf:put~@resources~
- <</##1~\__pdf_backend_object_ref:n {Page/Resources/##1}>>
+ <</##1~\__pdf_backend_object_ref:n {__pdf/Page/Resources/##1}>>
}
}
}
@@ -318,21 +318,21 @@
{
put~ @resources ~
<<
- /ExtGState~ \pdf_object_ref:n { Page/Resources/ExtGState }
+ /ExtGState~ \pdf_object_ref:n { __pdf/Page/Resources/ExtGState }
>>
}
\__pdf_backend:x
{
put~ @resources ~
<<
- /Pattern~ \pdf_object_ref:n { Page/Resources/Pattern }
+ /Pattern~ \pdf_object_ref:n { __pdf/Page/Resources/Pattern }
>>
}
\__pdf_backend:x
{
put~ @resources ~
<<
- /Shading~ \pdf_object_ref:n { Page/Resources/Shading }
+ /Shading~ \pdf_object_ref:n { __pdf/Page/Resources/Shading }
>>
}
\__pdf_backend:x
@@ -340,7 +340,7 @@
put~ @resources ~
<<
/ColorSpace~
- \pdf_object_ref:n { Page/Resources/ColorSpace }
+ \pdf_object_ref:n { __pdf/Page/Resources/ColorSpace }
>>
}
\exp_args:Nx
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
index f6ae9306076..8d8f5e3c635 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3backend-testphase.lua
@@ -114,7 +114,7 @@ local function __pdf_backend_PageResources_gpush (page)
end
for i,name in ipairs(ResourceList) do
if ltx.__pdf.Page.Resources[name] then
- token = token .. "/"..name.." "..ltx.pdf.object_ref("Page/Resources/"..name)
+ token = token .. "/"..name.." "..ltx.pdf.object_ref("__pdf/Page/Resources/"..name)
end
end
return token
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
index b4d93ec6de4..9c356016b03 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
@@ -5,6 +5,8 @@
%% The original source files were:
%%
%% l3pdffield.dtx (with options: `package')
+%% l3pdffield-checkbox.dtx (with options: `package')
+%% l3pdffield-textfield.dtx (with options: `package')
%%
%% Copyright (C) 2019-2021 The LaTeX Project
%%
@@ -18,15 +20,19 @@
%% This file is part of the "LaTeX PDF management testphase bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3pdfpdffield-checkbox.dtx
+%% File: l3pdffield.dtx
+
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2021-03-17}{0.95c}%
- {form field checkboxes}
+\ProvidesExplPackage{l3pdffield-testphase}{2021-05-14}{0.95d}%
+ {form fields}
\csname HyField@NeedAppearancesfalse\endcsname % suppress NeedAppearances
-\str_new:N \l__pdffield_field_name_str
\str_new:N \l__pdffield_tmpa_str
-\str_new:N \l__pdffield_name_tmpa_str
-\tl_new:N \l__pdffield_keys_tmpa_tl
+\tl_new:N \l__pdffield_tmpa_tl
+\tl_new:N \l__pdffield_tmpa_keys_tl
+\cs_new_protected:Npn \__pdffield_tmpa:n #1 {}
+\cs_new_protected:Npn \__pdffield_tmpa:nn #1 #2 {}
+\tl_new:N \l__pdffield_currentparent_tl
+\tl_new:N \l__pdffield_fieldID_tl
\msg_new:nnn {pdffield}{no-period}
{
The~field~name~`#1`~contains~a~period. \\
@@ -39,14 +45,34 @@
}
\msg_new:nnn {pdffield}{appearance-missing}
{
- The~appearance~`#1`~is~missing~for~the~#2~appearance.
+ The~appearance~definition~`#1`~is~missing~for~the~#2~appearance.
+ }
+\msg_new:nnn {pdffield}{not-implemented}
+ {
+ Support~for~'/#1'~is~not~implemented\\
+ The~key~is~ignored.
}
-\msg_new:nnn {pdffield}{field-keys-ignored}
+\msg_new:nnn {pdffield}{key-disabled}
{
- The~field~`#1`~is~already~initialized\\
- The~field~keys~`#2`~are~ignored.
+ key~`#2`~is~disabled~and~ignored~in~the~`#1`~command.\\
+ Use~key~`#3`~instead.
+ }
+\msg_new:nnn {pdffield}{parent-field-missing}
+ {
+ The~parent~field~'#1'~doesn't~exist\\
+ Create~it~with~\tl_to_str:n{\pdffield_field:nn}
}
+\cs_new_protected:Npn \__pdffield_key_disable:nnn #1#2#3
+ {
+ \keys_define:nn {pdffield}
+ {
+ #2 .code:n =
+ {
+ \msg_warning:nnnnn {pdffield}{key-disabled}{#1}{#2}{#3}
+ }
+ }
+ }
\bitset_new:Nn \l__pdffield_Ff_bitset
{
ReadOnly = 1,
@@ -68,7 +94,27 @@
Comb = 25,%Tx, requires MaxLen in dict
RadiosInUnison = 26,%Btn Radio
RichText = 26,%Tx
- CommitOnSelChange = 27
+ CommitOnSelChange = 27,
+ readonly = 1,
+ required = 2,
+ noexport = 3,
+ multiline = 13,%Tx
+ password = 14,
+ notoggletooff = 15,%Btn, radio button
+ radio = 16,%Btn: Radio: 15=1, 16=0
+ pushbutton = 17,%Btn: Checkbox: 15=0, 16=0
+ %Btn: Pushbutton: 16=1
+ combo = 18,%Ch: Combo=1 List=0
+ edit = 19,%Ch, Combo=1 -> + edit field
+ sort = 20,%Ch, not relevant for view...
+ fileselect = 21,%Tx
+ multiselect = 22,%Ch
+ donotspellcheck = 23,%Tx, Ch (if Combo + Edit set)
+ donotscroll = 24,%Tx
+ comb = 25,%Tx, requires MaxLen in dict
+ radiosinunison = 26,%Btn Radio
+ richtext = 26,%Tx
+ commitonselchange = 27
}
\bitset_new:Nn \l__pdffield_F_bitset
@@ -82,62 +128,84 @@
ReadOnly = 7,
Locked = 8,
ToggleNoView = 9,
- LockedContents = 10
+ LockedContents = 10,
+ invisible = 1,
+ hidden = 2,
+ print = 3,
+ nozoom = 4,
+ norotate = 5,
+ noview = 6,
+ readonly = 7,
+ locked = 8,
+ togglenoview = 9,
+ lockedcontents = 10
}
-\pdfdict_new:n {l__pdffield/checkbox/field}
-\pdfdict_put:nnn {l__pdffield/checkbox/field}{FT}{/Btn}
-\cs_new_protected:Npn \__pdffield_checkbox_field_new:n #1
+\pdfdict_new:n {l__pdffield/field}
+\pdfdict_new:n {l__pdffield/field/AA}
+\bool_new:N \l__pdffield_root_field_bool
+\cs_new_protected:Npn \__pdffield_field:n #1
{
- \group_begin:
- \pdf_object_new:nn {__pdffield_checkbox/field/#1} {dict}
- \pdf_object_new:nn {__pdffield_checkbox/field/#1/Kids} {array}
- \seq_new:c {g__pdffield_checkbox/field/#1/Kids_seq}
- \hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ...
- {
- \pdf_object_write:nx {__pdffield_checkbox/field/#1/Kids}
- {
- \seq_use:cn{g__pdffield_checkbox/field/#1/Kids_seq}{~}
- }
- }
- \pdfdict_put:nnn {l__pdffield/checkbox/field}{T}{(#1)}
- % V,DV are names describing the appearance. With checkboxes
- % the values /Yes and /Off are used.
- % this values are taken from the outside
- \pdfdict_put:nnx {l__pdffield/checkbox/field}
- {Kids}
- {
- \pdf_object_ref:n {__pdffield_checkbox/field/#1/Kids}
- }
- \bitset_set_false:Nn \l__pdffield_Ff_bitset {Radio}
- \bitset_set_false:Nn \l__pdffield_Ff_bitset {Pushbutton}
- \pdfdict_put:nnx {l__pdffield/checkbox/field}
- {Ff}
- {\bitset_to_arabic:N \l__pdffield_Ff_bitset }
- \pdfdict_if_empty:nF{l__pdffield/checkbox/field/AA}
- {
- \pdfmeta_standard_verify:nT
- {annot_widget_no_AA}
- {
- \pdfdict_put:nnx
- {l__pdffield/checkbox/field}
- {AA}
- {<<\pdfdict_use:n {l__pdffield/checkbox/field/AA}>>}
- }
- }
- \pdf_object_write:nx {__pdffield_checkbox/field/#1} { \pdfdict_use:n {l__pdffield/checkbox/field} }
- \pdfmanagement_add:nnx
- { Catalog / AcroForm }
- { Fields }
- {\pdf_object_ref:n {__pdffield_checkbox/field/#1} }
- \group_end:
+ \pdf_object_new:nn {__pdffield/field/#1} {dict}
+ \pdf_object_new:nn {__pdffield/field/Kids/#1} {array}
+ \tl_if_empty:NTF \l__pdffield_currentparent_tl
+ {
+ \pdfmanagement_add:nnx
+ { Catalog / AcroForm }
+ { Fields }
+ {\pdf_object_ref:n {__pdffield/field/#1} }
+ }
+ {
+ \exp_args:Ne
+ \pdf_object_if_exist:nTF {__pdffield/field/\l__pdffield_currentparent_tl}
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{Parent}
+ {\exp_args:Ne \pdf_object_ref:n{__pdffield/field/\l__pdffield_currentparent_tl}}
+ \seq_gput_right:cx {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq}
+ { \exp_args:Ne \pdf_object_ref:n{__pdffield/field/#1}}
+ }
+ {
+ \msg_error:nnx {pdffield}{parent-field-missing}{\l__pdffield_currentparent_tl}
+ }
+ }
+ \seq_new:c {g__pdffield_field/Kids/#1_seq}
+ \pdfdict_put:nnx {l__pdffield/field}
+ {Kids}
+ {
+ \pdf_object_ref:n {__pdffield/field/Kids/#1}
+ }
+ \pdfdict_put:nnx {l__pdffield/field}
+ {Ff}
+ {\bitset_to_arabic:N \l__pdffield_Ff_bitset }
+ \pdfdict_if_empty:nF{l__pdffield/field/AA}
+ {
+ \pdfmeta_standard_verify:nT
+ {annot_widget_no_AA}
+ {
+ \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n {l__pdffield/field/AA}}
+ \pdfdict_put:nnx
+ {l__pdffield/field}
+ {AA}
+ {\pdf_object_ref_last:}
+ }
+ }
+ \hook_gput_code:nnn {shipout/lastpage}{pdffield} %xetex needs this ...
+ {
+ \pdf_object_write:nx {__pdffield/field/Kids/#1}
+ {
+ \seq_use:cn{g__pdffield_field/Kids/#1_seq}{~}
+ }
+ }
+ \pdf_object_write:nx {__pdffield/field/#1} { \pdfdict_use:n {l__pdffield/field} }
}
-
-\pdfdict_new:n {l__pdffield/checkbox/annot}
-\pdfdict_put:nnn {l__pdffield/checkbox/annot}{Subtype}{/Widget}
-\cs_new_protected:Npn \__pdffield_checkbox_annot_add:nnnn #1 #2 #3 #4 %name, wd, ht, dp,
+\cs_new_protected:Npn \pdffield_field:nn #1 #2
{
\group_begin:
- \pdfdict_put:nnx {l__pdffield/checkbox/annot}{AP}{<<\pdfdict_use:n{l__pdffield/checkbox/annot/AP}>>}
+ \keys_set:nn { pdffield } {#1}
+ \__pdffield_field:n {#2}
+ \group_end:
+ }
+\cs_new_protected:Npn \__pdffield_annot:
+ {
\pdfmeta_standard_verify:nF
{annot_flags}
{
@@ -146,311 +214,815 @@
\bitset_set_false:Nn \l__pdffield_F_bitset {Invisible}
\bitset_set_false:Nn \l__pdffield_F_bitset {NoView}
}
- \pdfdict_if_empty:nF{l__pdffield/checkbox/annot/AA}
+ \pdfannot_dict_put:nnx {widget}{F}{ \bitset_to_arabic:N \l__pdffield_F_bitset }
+ \tl_if_empty:NF \l__pdffield_currentparent_tl
{
- \pdfmeta_standard_verify:nT
- {annot_widget_no_AA}
- {
- \pdfdict_put:nnx
- {l__pdffield/checkbox/annot}
- {AA}
- {<<\pdfdict_use:n {l__pdffield/checkbox/annot/AA}>>}
- }
- }
- \pdfdict_put:nnx {l__pdffield/checkbox/annot}{F}{ \bitset_to_arabic:N \l__pdffield_F_bitset }
- \pdfdict_set_eq:nn {l__pdfannot/widget}{l__pdffield/checkbox/annot}
- \pdfannot_dict_put:nnx {widget}{Parent}{\pdf_object_ref:n{__pdffield_checkbox/field/#1}}
+ \exp_args:Ne
+ \pdf_object_if_exist:nTF { __pdffield/field/\l__pdffield_currentparent_tl }
+ {
+ \pdfannot_dict_put:nnx {widget}{Parent}
+ {
+ \exp_args:Ne
+ \pdf_object_ref:n{__pdffield/field/\l__pdffield_currentparent_tl}
+ }
+ }
+ {
+ \msg_error:nnx { pdffield }{parent-field-missing}{\l__pdffield_currentparent_tl}
+ }
+ }
\mode_leave_vertical:
\hbox_to_wd:nn
- { #2 }
+ { \l__pdffield_annot_wd_dim }
{
- \rule [-#4]{0pt}{\dim_eval:n{#3+#4} }
+ \rule [-\l__pdffield_annot_dp_dim]{0pt}{\dim_eval:n{\l__pdffield_annot_ht_dim+\l__pdffield_annot_dp_dim} }
\pdfannot_widget_box:nnn
- { #2 }
- { #3 }
- { #4 }
+ { \l__pdffield_annot_wd_dim }
+ { \l__pdffield_annot_ht_dim }
+ { \l__pdffield_annot_dp_dim }
\hfill
}
- \seq_gput_right:cx {g__pdffield_checkbox/field/#1/Kids_seq}{ \pdfannot_box_ref_last:}
- \group_end:
- }
-
-\cs_new_protected:Npn \pdffield_store_appearance:nn #1 #2
- {
- \pdfxform_new:nnn {__pdffield_#1}{}{#2}
+ \tl_if_empty:NF \l__pdffield_currentparent_tl
+ {
+ \seq_if_exist:cTF {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq}
+ {
+ \seq_gput_right:cx
+ {g__pdffield_field/Kids/\l__pdffield_currentparent_tl _seq}
+ { \pdfannot_box_ref_last:}
+ }
+ {
+ \msg_error:nnx { pdffield}{parent-field-missing}{\l__pdffield_currentparent_tl}
+ }
+ }
}
-
-\cs_new_protected:Nn \__pdffield_store_default_appearances:
+\cs_new_protected:Npn \pdffield_annot:n #1
{
- \pdffield_store_appearance:nn {checkbox/default/Yes}
- {
- \normalsize
- \fboxsep 0pt
- \framebox
- [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
- { \texttimes \strut }
- }
- \pdffield_store_appearance:nn {checkbox/default/Off}
- {
- \normalsize
- \fboxsep 0pt
- \framebox
- [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
- { \phantom{\texttimes} \strut }
- }
+ \group_begin:
+ \keys_set:nn { pdffield } {#1}
+ \__pdffield_annot:
+ \group_end:
}
+\cs_new_protected:Npn \__pdffield_color_set:nn #1 #2
+ {
+ \tl_if_head_eq_charcode:nNTF {#2}[ %]
+ {
+ \__pdffield_color_set_aux:nwn { #1 } #2
+ }
+ {
+ \color_set:nn {#1} {#2}
+ }
+ }
-\__pdffield_store_default_appearances:
-\pdfdict_new:n {l__pdffield/checkbox/annot/AP}
-
-\cs_new_protected:Npn \__pdffield_checkbox_add:n #1
+\cs_new_protected:Npn \__pdffield_color_set_aux:nwn #1 [#2] #3
{
- \group_begin:
- \keys_set_filter:nnnN {pdffield / checkbox }{field}{#1}\l__pdffield_keys_tmpa_tl
- \str_if_empty:NT \l__pdffield_field_name_str
- {
- \msg_error:nn {pdffield}{empty-name}
- }
- \exp_args:Nx
- \pdf_object_if_exist:nTF {__pdffield_checkbox/field/\l__pdffield_field_name_str}
- {
- \tl_if_empty:NF \l__pdffield_keys_tmpa_tl
- {
- \msg_warning:nnxx
- {pdffield}
- {field-keys-ignored}
- {\l__pdffield_field_name_str}
- {\l__pdffield_keys_tmpa_tl}
- }
- }
- {
- \keys_set:nV { pdffield/checkbox } \l__pdffield_keys_tmpa_tl
- \exp_args:No
- \__pdffield_checkbox_field_new:n {\l__pdffield_field_name_str}
- }
- \exp_args:No
- \__pdffield_checkbox_annot_add:nnnn
- {\l__pdffield_field_name_str}
- {\l__pdffield_annot_wd_tl }
- {\l__pdffield_annot_ht_tl }
- {\l__pdffield_annot_dp_tl }
- \group_end:
+ \color_set:nnn {#1}{#2}{#3}
}
-\tl_new:N \l__pdffield_annot_ht_tl
-\tl_new:N \l__pdffield_annot_wd_tl
-\tl_new:N \l__pdffield_annot_dp_tl
-\keys_define:nn { pdffield / checkbox }
+\cs_new_protected:Npn \__pdffield_value_handler:nN #1#2
{
- ,width .tl_set:N = \l__pdffield_annot_wd_tl
- ,height .tl_set:N = \l__pdffield_annot_ht_tl
- ,depth .tl_set:N = \l__pdffield_annot_dp_tl
- ,width .initial:n = \normalbaselineskip
- ,height .initial:n = \normalbaselineskip
- ,depth .initial:n = 0pt
+ \tl_set:Nn #2 {#1}
}
-\keys_define:nn { pdffield / checkbox }
+\keys_define:nn { pdffield }
{
- ,name .code:n =
+ ,parent .tl_set:N = \l__pdffield_currentparent_tl
+ ,parent .groups:n = {field,annot}
+ ,T .code:n =
{
- \pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l__pdffield_field_name_str
- \str_if_in:NnT \l__pdffield_field_name_str {.}
+ \pdf_string_from_unicode:nnN {utf8/string-raw}{#1}\l__pdffield_tmpa_str
+ \str_if_in:NnT \l__pdffield_tmpa_str {.}
{
- \msg_error:nnx {pdffield}{no-period}{\l__pdffield_field_name_str}
+ \msg_error:nnx {pdffield}{no-period}{\l__pdffield_tmpa_str}
}
- \str_if_empty:NT\l__pdffield_field_name_str
+ \str_if_empty:NTF\l__pdffield_tmpa_str
{
- \msg_error:nn {pdffield}{empty-name}
+ \msg_warning:nn {pdffield}{empty-name}
+ \pdfdict_remove:nn { l__pdffield/field }{T}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{T}{(\l__pdffield_tmpa_str)}
}
}
+ ,T .value_required:n = true
+ ,T .groups:n = {field}
+ ,name .meta:n = {T={#1}}
,name .value_required:n = true
- ,name .initial:n = checkbox
- ,altname .code:n =
+ ,name .groups:n = {field}
+ ,TU .groups:n = {field}
+ ,TU .code:n =
{
- \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_name_tmpa_str
- \pdfdict_put:nnx { l__pdffield/checkbox/field }{TU}{\l__pdffield_name_tmpa_str}
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{TU}
+ }
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str
+ \pdfdict_put:nnx { l__pdffield/field }{TU}{\l__pdffield_tmpa_str}
+ }
}
+ ,TU .groups:n = {field}
+ ,altname .meta:n = {TU={#1}}
,altname .groups:n = {field}
- ,mappingname .code:n =
+ ,TM .code:n =
{
- \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_name_tmpa_str
- \pdfdict_put:nnx { l__pdffield/checkbox/field }{TM}{\l__pdffield_name_tmpa_str}
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{TM}
+ }
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str
+ \pdfdict_put:nnx { l__pdffield/field }{TM}{\l__pdffield_tmpa_str}
+ }
}
+ ,TM .groups:n = {field}
+ ,mappingname .meta:n = {TM={#1}}
,mappingname .groups:n = {field}
- }
-
-\keys_define:nn { pdffield / checkbox }
- {
- ,checked .choice:
- ,checked / false .code:n =
+ ,FT .choices:nn =
+ { Btn, Tx, Ch, Sig }
+ {
+ \pdfdict_put:nnn { l__pdffield/field }{FT}{ /#1 }
+ }
+ ,FT .groups:n = {field}
+ ,V .code:n =
{
- \pdfdict_put:nnn {l__pdffield/checkbox/field}{V}{/Off}
- \pdfdict_put:nnn {l__pdffield/checkbox/annot}{AS}{/Off}
- \pdfdict_put:nnn {l__pdffield/checkbox/field}{DV}{/Off}
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{V}
+ }
+ {
+ \__pdffield_value_handler:nN{#1}\l__pdffield_tmpa_str
+ \pdfdict_put:nnx { l__pdffield/field }{V}{ \l__pdffield_tmpa_str }
+ }
}
- ,checked / true .code:n =
+ ,V .groups:n = {field}
+ ,DV .code:n =
{
- \pdfdict_put:nnn {l__pdffield/checkbox/field}{V}{/Yes}
- \pdfdict_put:nnn {l__pdffield/checkbox/annot}{AS}{/Yes}
- \pdfdict_put:nnn {l__pdffield/checkbox/field}{DV}{/Yes}
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{DV}
+ }
+ {
+ \__pdffield_value_handler:nN{#1}\l__pdffield_tmpa_str
+ \pdfdict_put:nnx { l__pdffield/field }{DV}{ \l__pdffield_tmpa_str }
+ }
}
- ,checked .default:n = {true}
- ,checked .initial:n = {false}
- }
-\keys_define:nn { pdffield / checkbox }
+ ,DV .groups:n = {field}
+ ,MaxLen .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{MaxLen}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{MaxLen}{ #1 }
+ }
+ }
+ ,MaxLen .groups:n = {field}
+ ,Lock .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{Lock}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{Lock}{ \pdf_object_ref:n{#1} }
+ }
+ }
+ ,Lock .groups:n = {field}
+ ,SV .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{SV}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{SV}{ \pdf_object_ref:n{#1} }
+ }
+ }
+ ,SV .groups:n = {field}
+ ,Opt .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{Opt}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{Opt}{ \pdf_object_ref:n{#1} }
+ }
+ }
+ ,Opt .groups:n = {field}
+ ,TI .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{TI}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{TI}{ #1 }
+ }
+ }
+ ,TI .groups:n = {field}
+ ,I .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{I}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{I}{ \pdf_object_ref:n{#1} }
+ }
+ }
+ ,I .groups:n = {field}
+ }
+
+\keys_define:nn { pdffield }
{
- ,setfieldflags .code:n =
+ ,setFf .code:n =
{
\clist_map_inline:nn {#1}
{
\bitset_set_true:Nn \l__pdffield_Ff_bitset {##1}
}
}
+ ,setFf .groups:n = {field}
+ ,setfieldflags .meta:n =
+ {setFf={#1}}
,setfieldflags .groups:n = {field}
- ,unsetfieldflags .code:n =
+ ,unsetFf .multichoice:
+ ,unsetFf / all .code:n = { \bitset_clear:N \l__pdffield_Ff_bitset}
+ ,unsetFf / unknown .code:n =
{
- \clist_map_inline:nn {#1}
- {
- \bitset_set_false:Nn \l__pdffield_Ff_bitset {##1}
- }
+ \bitset_set_false:Nn \l__pdffield_Ff_bitset {#1}
}
+ ,unsetFf .groups:n = {field}
+ ,unsetfieldflags .meta:n = {unsetFf={#1}}
,unsetfieldflags .groups:n = {field}
- ,setannotflags .code:n =
+ }
+
+\cs_set_protected:Npn \__pdffield_tmpa:n #1 %
+ {
+ \keys_define:nn { pdffield }
{
- \clist_map_inline:nn {#1}
+ AA/#1 .code:n =
{
- \bitset_set_true:Nn \l__pdffield_F_bitset {##1}
- }
+ \pdf_string_from_unicode:nnN {utf8/string-raw}{##1}\l__pdffield_tmpa_str
+ \str_if_empty:NTF \l__pdffield_tmpa_str
+ {
+ \pdfdict_remove:nn {l__pdffield/field/AA}{#1}
+ }
+ {
+ \pdfdict_put:nnx {l__pdffield/field/AA}
+ {#1}
+ {<</S/JavaScript/JS(\l__pdffield_tmpa_str)>>}
+ }
+ },
+ AA/#1 .groups:n = {field}
}
- ,unsetannotflags .code:n =
+ }
+
+\clist_map_inline:nn {K,F,V,C}{\__pdffield_tmpa:n{#1}}
+
+\cs_set_protected:Npn \__pdffield_tmpa:nn #1 #2
+ {
+ \keys_define:nn { pdffield }
{
- \clist_map_inline:nn {#1}
- {
- \bitset_set_false:Nn \l__pdffield_F_bitset {##1}
- }
+ #1 .meta:nn =
+ { pdffield }{AA/#2={##1}},
+ #1 .groups:n = {field}
+ }
+ }
+\__pdffield_tmpa:nn {keystroke}{K}
+\__pdffield_tmpa:nn {format} {F}
+\__pdffield_tmpa:nn {validate} {V}
+\__pdffield_tmpa:nn {calculate}{C}
+
+\keys_define:nn { pdffield }
+ {
+ DA .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn { l__pdffield/field }{DA}
+ }
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{DA}{ (#1) }
+ }
}
+ ,DA .groups:n = {field}
+ ,Q .choices:nn = {left,center,right}
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{Q}{ \int_eval:n{\l_keys_choice_int-1} }
+ }
+ ,Q / .code:n = { \pdfdict_remove:nn { l__pdffield/field }{Q} }
+ ,Q .groups:n = {field}
+ ,align .meta:n={Q=#1}
+ ,DS .code:n =
+ {
+ \msg_warning:nnn {pdffield}{not-implemented}{DS}
+ }
+ ,DS .groups:n = {field}
+ ,RV .code:n =
+ {
+ \msg_warning:nnn {pdffield}{not-implemented}{RV}
+ }
+ ,RV .groups:n = {field}
}
+\dim_new:N \l__pdffield_annot_ht_dim
+\dim_new:N \l__pdffield_annot_wd_dim
+\dim_new:N \l__pdffield_annot_dp_dim
-\keys_define:nn { pdffield / checkbox }
+\keys_define:nn { pdffield }
{
- appearance .code:n = %value is a name of an appearance
+ ,width .dim_set:N = \l__pdffield_annot_wd_dim
+ ,height .dim_set:N = \l__pdffield_annot_ht_dim
+ ,depth .dim_set:N = \l__pdffield_annot_dp_dim
+ ,width .initial:n = 0pt
+ ,height .initial:n = 0pt
+ ,depth .initial:n = 0pt
+ }
+\keys_define:nn { pdffield }
+ {
+ %parent is defined in field
+ ,AS .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfannot_dict_remove:nn { widget }{AS}
+ }
+ {
+ \pdfannot_dict_put:nnx {widget}{AS}{\pdf_name_from_unicode_e:n{#1}}
+ }
+ }
+ ,AS .groups:n = annot
+ }
+\cs_new_protected:Npn \__pdffield_appearance_handler:nnn #1#2#3
+ {
+ \pdfxform_if_exist:nTF { #1 }
+ {
+ \pdfannot_dict_put:nnx {widget/AP}{#2}
+ {
+ \pdfxform_ref:n {#1}
+ }
+ }
+ {
+ \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3}
+ }
+ }
+\keys_define:nn { pdffield }
+ {
+ AP/N .code:n =
{
- \pdfxform_if_exist:nTF { __pdffield_#1/Yes }
+ \tl_if_empty:nTF {#1}
{
- \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
- {N}
- {
- <<
- /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
- /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
- >>
- }
+ \pdfannot_dict_remove:nn { widget/AP }{N}
}
{
- \msg_error:nnnn{pdffield}{appearance-missing}{#1}{normal}
+ \__pdffield_appearance_handler:nnn {#1}{N}{normal}
}
- },
- appearance .initial:n = checkbox/default,
+ }
+ ,AP/N .groups:n = annot
+ ,appearance .meta:n = {AP/N={#1}}
}
-
-\keys_define:nn { pdffield / checkbox }
+\keys_define:nn { pdffield }
{
- rollover-appearance .code:n = %value is a name of an appearance
+ AP/R .code:n =
{
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfannot_dict_remove:nn { widget/AP }{R}
+ }
+ {
+ \__pdffield_appearance_handler:nnn {#1}{R}{rollover}
+ }
+ }
+ ,AP/R .groups:n = annot
+ ,rollover-appearance .meta:n = {AP/R={#1}}
+ }
+\keys_define:nn { pdffield }
+ {
+ AP/D .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfannot_dict_remove:nn { widget/AP }{D}
+ }
+ {
+ \__pdffield_appearance_handler:nnn {#1}{D}{rollover}
+ }
+ }
+ ,AP/D .groups:n = annot
+ ,down-appearance .meta:n = {AP/D={#1}}
+ }
+
+\keys_define:nn { pdffield }
+ {
+ MK/R .choices:nn = {0,90,180,270}
+ {
+ \pdfannot_dict_put:nnx {widget/MK}{R}{#1}
+ }
+ ,MK/R / .code:n =
+ {
+ \pdfannot_dict_remove:nn { widget/MK }{R}
+ }
+ ,MK/R .groups:n = annot
+ ,rotate .meta:n = {MK/R=#1}
+ }
+
+\keys_define:nn { pdffield }
+ {
+ MK/BC .code:n =
+ {
\tl_if_empty:nTF {#1}
- {
- \pdfdict_remove:nn {l__pdffield/checkbox/annot/AP} {R}
- }
- {
- \pdfxform_if_exist:nTF { __pdffield_#1/Yes }
- {
- \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
- {R}
- {
- <<
- /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
- /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
- >>
- }
- }
- {
- \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{rollover}
- }
+ {
+ \pdfannot_dict_remove:nn { widget/MK }{BC}
+ }
+ {
+ \__pdffield_color_set:nn {__pdffield/tmp}{#1}
+ \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_tmpa_tl
+ \pdfannot_dict_put:nnx {widget/MK}{BC}{[\l__pdffield_tmpa_tl]}
+ }
+ }
+ ,MK/BC .groups:n = annot
+ ,bordercolor .meta:n = {MK/BC=#1}
+ }
- }
- },
+\keys_define:nn { pdffield }
+ {
+ MK/BG .code:n =
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfannot_dict_remove:nn { widget/MK }{BG}
+ }
+ {
+ \__pdffield_color_set:nn {__pdffield/tmp}{#1}
+ \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_tmpa_tl
+ \pdfannot_dict_put:nnx {widget/MK}{BG}{[\l__pdffield_tmpa_tl]}
+ }
+ }
+ ,MK/BG .groups:n = annot
+ ,bordercolor .meta:n = {MK/BG=#1}
}
-\keys_define:nn { pdffield / checkbox }
+\keys_define:nn { pdffield }
{
- down-appearance .code:n = %value is a name of an appearance
- {
+ MK/CA .code:n =
+ {
\tl_if_empty:nTF {#1}
- {
- \pdfdict_remove:nn {l__pdffield/checkbox/annot/AP} {D}
- }
- {
- \pdfxform_if_exist:nTF { __pdffield_#1/Yes }
+ {
+ \pdfannot_dict_remove:nn { widget/MK }{CA}
+ }
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdffield_tmpa_str
+ \pdfannot_dict_put:nnx {widget/MK}{CA}{\l__pdffield_tmpa_str}
+ }
+ }
+ ,MK/CA .groups:n = annot
+ ,caption .meta:n = {MK/CA=#1}
+ }
+
+\cs_set_protected:Npn \__pdffield_tmpa:n #1
+ {
+ \keys_define:nn { pdffield }
+ {
+ MK/#1 .code:n =
+ {
+ \tl_if_empty:nTF {##1}
{
- \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
- {D}
- {
- <<
- /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
- /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
- >>
- }
+ \pdfannot_dict_remove:nn { widget/AP }{#1}
}
{
- \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{down}
+ \pdfannot_dict_put:nnx {widget/MK}{#1}{##1}
}
- }
- },
+ }
+ ,MK/#1 .groups:n = annot
+ }
+ }
+
+\clist_map_inline:nn {RC,AC,I,RI,IX,IF,TP}
+ { \__pdffield_tmpa:n {#1} }
+\keys_define:nn { pdffield }
+ {
+ ,setF .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \bitset_set_true:Nn \l__pdffield_F_bitset {##1}
+ }
+ }
+ ,setF .groups:n = annot
+ ,setannotflags .meta:nn =
+ { pdffield }{setF={#1}}
+ ,setannotflags .groups:n = annot
+ ,unsetF .multichoice:
+ ,unsetF / all .code:n = { \bitset_clear:N \l__pdffield_F_bitset}
+ ,unsetF / unknown .code:n =
+ {
+ \bitset_set_false:Nn \l__pdffield_F_bitset {#1}
+ }
+ ,unsetF .groups:n = annot
+ ,unsetannotflags .meta:nn =
+ { pdffield }{unsetF= {#1} }
+ ,unsetannotflags .groups:n = annot
}
-\pdfdict_new:n {l__pdffield/checkbox/annot/AA}
-\pdfdict_new:n {l__pdffield/checkbox/field/AA}
-\cs_new_protected:Npn \__pdffield_define_AAaction_key:nnn #1 #2 #3 %#1 key, #2 pdf, #3 dict
+\cs_set_protected:Npn \__pdffield_tmpa:n #1 %
{
- \keys_define:nn { pdffield / checkbox }
+ \keys_define:nn { pdffield }
{
- #1 .code:n =
+ AA/#1 .code:n =
{
- \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdffield_tmpa_str
+ \pdf_string_from_unicode:nnN {utf8/string-raw}{##1}\l__pdffield_tmpa_str
\str_if_empty:NTF \l__pdffield_tmpa_str
{
- \pdfdict_remove:nn {l__pdffield/checkbox/#3/AA}{#2}
+ \pdfannot_dict_remove:nn {widget/AA}{#1}
}
{
- \pdfdict_put:nnx {l__pdffield/checkbox/#3/AA}
- {#2}
- {<</S/JavaScript/JS\l__pdffield_tmpa_str>>}
+ \pdfannot_dict_put:nnx {widget/AA}
+ {#1}
+ {<</S/JavaScript/JS(\l__pdffield_tmpa_str)>>}
}
},
- #1 .groups:n = {#3}
- }
- }
-\__pdffield_define_AAaction_key:nnn {keystroke}{K}{field}
-\__pdffield_define_AAaction_key:nnn {format} {F}{field}
-\__pdffield_define_AAaction_key:nnn {validate} {V}{field}
-\__pdffield_define_AAaction_key:nnn {calculate}{C}{field}
-\__pdffield_define_AAaction_key:nnn {onfocus} {Fo}{annot}
-\__pdffield_define_AAaction_key:nnn {onblur} {Bl}{annot}
-\__pdffield_define_AAaction_key:nnn {onmousedown}{D}{annot}
-\__pdffield_define_AAaction_key:nnn {onmouseup}{U}{annot}
-\__pdffield_define_AAaction_key:nnn {onenter} {E}{annot}
-\__pdffield_define_AAaction_key:nnn {onexit} {X}{annot}
-\cs_set_eq:NN \pdffield_checkbox:n \__pdffield_checkbox_add:n
+ ,AA/#1 .groups:n = annot
+ }
+ }
+
+\clist_map_inline:nn {Fo,Bl,D,U,E,X,PO,PC,PV,PI}{\__pdffield_tmpa:n{#1}}
-\cs_new_protected:Npn \pdffield_setup:nn #1 #2
+\cs_set_protected:Npn \__pdffield_tmpa:nn #1 #2
+ {
+ \keys_define:nn { pdffield }
+ {
+ #1 .meta:nn =
+ { pdffield }{AA/#2={##1}},
+ #1 .groups:n = {annot}
+ }
+ }
+\__pdffield_tmpa:nn {onfocus} {Fo}
+\__pdffield_tmpa:nn {onblur} {Bl}
+\__pdffield_tmpa:nn {onmousedown}{D}
+\__pdffield_tmpa:nn {onmouseup}{U}
+\__pdffield_tmpa:nn {onenter} {E}
+\__pdffield_tmpa:nn {onexit} {X}
+\cs_new_protected:Npn \pdffield_appearance:nn #1 #2
+ {
+ \pdfxform_new:nnn {#1}{}{#2}
+ }
+
+\cs_set_eq:NN \pdffield_store_appearance:nn\pdffield_appearance:nn
+\keys_define:nn { pdffield / setup }
+ {
+ ,create-style .code:n = { \__pdffield_style_create:nn #1 }
+ ,preset-checkbox .code:n =
+ {
+ \keys_define:nn { pdffield }
+ {
+ __pdffield/preset/checkbox .meta:n = {#1},
+ }
+ }
+ ,preset-textfield .code:n =
+ {
+ \keys_define:nn { pdffield }
+ {
+ __pdffield/preset/textfield .meta:n = {#1},
+ }
+ }
+ }
+\keys_set:nn{ pdffield / setup }{preset-checkbox={}}
+\keys_set:nn{ pdffield / setup }{preset-textfield={}}
+
+\cs_new_protected:Npn \__pdffield_style_create:nn #1#2
+ {
+ \keys_define:nn { pdffield }
+ {
+ __pdffield/style/#1 .meta:n = {#2},
+ }
+ }
+
+\cs_new_protected:Npn \pdffield_setup:n #1
+ {
+ \keys_set:nn{ pdffield / setup }{#1}
+ }
+
+\keys_define:nn { pdffield }
+ {
+ style .code:n = {\keys_set:nn {pdffield}{__pdffield/style/#1={#1}}}
+ }
+%% File: l3pdfpdffield-checkbox.dtx
+\cs_new_protected:cn {__pdffield/checkbox/default_appearances:}
+ {
+ \pdffield_appearance:nn {pdffield/checkbox/default/Yes}
+ {
+ \normalsize
+ \fboxsep 0pt
+ \framebox
+ [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+ { \texttimes \strut }
+ }
+ \pdffield_appearance:nn {pdffield/checkbox/default/Off}
+ {
+ \normalsize
+ \fboxsep 0pt
+ \framebox
+ [ \dim_eval:n { \box_ht:N\strutbox+\box_dp:N\strutbox } ]
+ { \phantom{\texttimes} \strut }
+ }
+ \cs_gset_eq:cN {__pdffield/checkbox/default_appearances:} \prg_do_nothing:
+ }
+\cs_new_protected:Npn \__pdffield_checkbox_field:n #1 %name
+ {
+ \pdf_object_if_exist:nF {__pdffield/field/__pdffield/checkbox/#1}
+ {
+ \__pdffield_field:n { __pdffield/checkbox/#1 }
+ }
+ \keys_set:nn {pdffield}{parent=__pdffield/checkbox/#1}
+ }
+\cs_generate_variant:Nn \__pdffield_checkbox_field:n {V}
+
+\cs_new_protected:Npn \__pdffield_checkbox:n #1
+ {
+ \group_begin:
+ \use:c {__pdffield/checkbox/default_appearances:}
+ \cs_set_eq:NN\__pdffield_appearance_handler:nnn \__pdffield_checkbox_appearance_handler:nnn
+ \keys_set:nn {pdffield}
+ {
+ fieldID=,
+ name=checkbox,
+ appearance = pdffield/checkbox/default,
+ checked=false,
+ width = \normalbaselineskip,
+ height = \normalbaselineskip,
+ }
+ \__pdffield_key_disable:nnn{checkbox}{V}{checked}
+ \__pdffield_key_disable:nnn{checkbox}{DV}{checked}
+ \__pdffield_key_disable:nnn{checkbox}{AS}{checked}
+ \keys_set:nn { pdffield }{__pdffield/preset/checkbox,#1}
+ \keys_set:nn { pdffield }
+ {
+ ,unsetFf={Radio,Pushbutton}
+ ,FT= Btn
+ }
+ \tl_if_empty:NT\l__pdffield_fieldID_tl
+ {
+ \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl
+ \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/checkbox/}
+ }
+ \__pdffield_checkbox_field:V\l__pdffield_fieldID_tl
+ \__pdffield_annot:
+ \group_end:
+ }
+\keys_define:nn { pdffield }
{
- \keys_set:nn {pdffield / #1 } {#2}
+ ,checked .choice:
+ ,checked / false .code:n =
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{V} { /Off }
+ \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Off }
+ \pdfannot_dict_put:nnn {widget}{AS}{ /Off }
+ }
+ ,checked / true .code:n =
+ {
+ \pdfdict_put:nnx { l__pdffield/field }{V} { /Yes }
+ \pdfdict_put:nnx { l__pdffield/field }{DV}{ /Yes }
+ \pdfannot_dict_put:nnn {widget}{AS}{ /Yes }
+ }
+ ,checked .default:n = {true}
+ ,checked .groups:n = {checkbox}
+ }
+\keys_define:nn { pdffield }
+ {
+ fieldID .tl_set:N = \l__pdffield_fieldID_tl
}
+\cs_new_protected:Npn \__pdffield_checkbox_appearance_handler:nnn #1 #2 #3 %name, type, text
+ {
+ \pdfxform_if_exist:nTF { #1/Yes }
+ {
+ \pdf_object_if_exist:nF {__pdffield/checkbox/AP/#1}
+ {
+ \pdf_object_new:nn {__pdffield/checkbox/AP/#1}{dict}
+ \pdf_object_write:nx
+ {__pdffield/checkbox/AP/#1}
+ {
+ /Yes ~ \pdfxform_ref:n { #1/Yes}
+ /Off ~ \pdfxform_ref:n { #1/Off}
+ }
+ }
+ \pdfannot_dict_put:nnx {widget/AP}{#2}{\pdf_object_ref:n{__pdffield/checkbox/AP/#1}}
+ }
+ {
+ \msg_error:nnnn{pdffield}{appearance-missing}{#1}{#3}
+ }
+ }
+
+\cs_set_eq:NN \pdffield_checkbox:n \__pdffield_checkbox:n
+%% File: l3pdfpdffield-textfield.dtx
+
+\tl_new:N \l__pdffield_DA_fontcolor_tl
+\dim_new:N \l__pdffield_DA_fontsize_dim
+\tl_new:N \l__pdffield_DA_fontname_tl
+\cs_new_protected:cn {__pdffield/textfield/default_appearance:}
+ {
+ \pdffield_appearance:nn {pdffield/textfield/default}
+ {
+ { \color_select:n{black!5!white}\rule{\paperwidth}{\paperheight} }
+ }
+ \cs_gset_eq:cN {__pdffield/textfield/default_appearance:} \prg_do_nothing:
+ }
+\cs_new_protected:Npn \__pdffield_textfield_field:n #1 %name
+ {
+ \pdf_object_if_exist:nF {__pdffield/field/__pdffield/textfield/#1}
+ {
+ \__pdffield_field:n { __pdffield/textfield/#1 }
+ }
+ \keys_set:nn {pdffield}{parent=__pdffield/textfield/#1}
+ }
+\cs_generate_variant:Nn \__pdffield_textfield_field:n {V}
+
+\cs_new_protected:Npn \__pdffield_textfield:n #1
+ {
+ \group_begin:
+ \cs_set_eq:NN\__pdffield_value_handler:nN \__pdffield_textfield_value_handler:nN
+ \use:c {__pdffield/textfield/default_appearance:}
+ \keys_set:nn {pdffield}
+ {
+ ,fieldID=
+ ,name=textfield
+ ,appearance = pdffield/textfield/default
+ ,width = 3cm
+ ,fontsize= \f@size pt
+ ,height = \f@size pt,
+ depth = \fp_eval:n {0.3*\f@size} pt,
+ % font defaults!!
+ }
+ \keys_set:nn { pdffield }{__pdffield/preset/textfield,#1}
+ \int_compare:nNnT {\bitset_item:Nn \l__pdffield_Ff_bitset {Comb}}={1}
+ {
+ % warning if set?
+ \keys_set:nn { pdffield }
+ {
+ ,unsetFf={FileSelect,Multiline,Password}
+ }
+ \pdfdict_get:nnN {l__pdffield/field}{MaxLen}\l__pdffield_tmpa_tl
+ \quark_if_no_value:NT \l__pdffield_tmpa_tl
+ {
+ \keys_set:nn { pdffield}
+ {
+ MaxLen = 10 %variable
+ }
+ % warning
+ }
+ }
+ \keys_set:nn { pdffield }
+ {
+ ,FT= Tx
+ ,AS=
+ ,DA=
+ {
+ \pdf_name_from_unicode_e:n{\l__pdffield_DA_fontname_tl}
+ \c_space_tl
+ \dim_to_decimal_in_bp:n{\l__pdffield_DA_fontsize_dim}
+ \c_space_tl
+ Tf
+ \c_space_tl
+ \l__pdffield_DA_fontcolor_tl
+ \c_space_tl
+ %\l__pdffield_text_DAextra_tl
+ }
+ }
+ \tl_if_empty:NT\l__pdffield_fieldID_tl
+ {
+ \pdfdict_get:nnN {l__pdffield/field}{T}\l__pdffield_fieldID_tl
+ \tl_put_left:Nn \l__pdffield_fieldID_tl {__pdffield/textfield/}
+ }
-\endinput%
-%%%%
-%% Appearance
-%%checkbox
+ \__pdffield_textfield_field:V\l__pdffield_fieldID_tl
+ \__pdffield_annot:
+ \group_end:
+ }
+\keys_define:nn {pdffield}
+ {
+ ,fontcolor .code:n =
+ {
+ \__pdffield_color_set:nn {__pdffield/tmp}{#1}
+ \color_export:nnN{__pdffield/tmp}{space-sep-rgb}\l__pdffield_DA_fontcolor_tl
+ \tl_put_right:Nn \l__pdffield_DA_fontcolor_tl{~rg}
+ }
+ ,fontcolor .initial:n = black,
+ ,fontcolor .groups:n = {textfield}
+ ,font .tl_set:N = \l__pdffield_DA_fontname_tl
+ ,font .initial:n = {Helv}
+ ,font .groups:n = {textfield}
+ ,fontsize .dim_set:N = \l__pdffield_DA_fontsize_dim
+ ,fontsize .initial:n = {10bp}
+ ,fontsize .groups:n = {textfield}
+ }
+\keys_define:nn { pdffield }
+ {
+ fieldID .tl_set:N = \l__pdffield_fieldID_tl
+ }
+\cs_new_protected:Npn \__pdffield_textfield_value_handler:nN #1#2
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{#1}#2
+ }
+\cs_set_eq:NN \pdffield_textfield:n \__pdffield_textfield:n
%%
%%
%% End of file `l3pdffield-testphase.sty'.
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty
index d43c363fe5b..43ac3a7ce95 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdflscape-ltx.sty
@@ -22,7 +22,7 @@
%% This work consists of the main source file pdflscape-ltx.sty
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{pdflscape-ltx}{2021-03-17}{0.95c}
+\ProvidesExplPackage{pdflscape-ltx}{2021-05-14}{0.95d}
{Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)}
\RequirePackage{lscape}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
index 0bd7d33a23b..e641d3c7357 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-firstaid.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-firstaid.dtx
-\ProvidesExplPackage{pdfmanagement-firstaid}{2021-03-17}{0.95c}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2021-05-14}{0.95d}
{LaTeX PDF management testphase bundle / firstaid-patches}
\clist_map_inline:nn {pgf,transparent,hyperxmp,pdflscape,xcolor,color,beamer}
@@ -79,9 +79,9 @@
%objects are already created ...
\def\pgf@sys@pdf@possible@resources
{
- /ColorSpace~\pdf_object_ref:n {Page/Resources/ColorSpace}
- /Pattern ~\pdf_object_ref:n {Page/Resources/Pattern}
- /ExtGState ~\pdf_object_ref:n {Page/Resources/ExtGState}
+ /ColorSpace~\pdf_object_ref:n {__pdf/Page/Resources/ColorSpace}
+ /Pattern ~\pdf_object_ref:n {__pdf/Page/Resources/Pattern}
+ /ExtGState ~\pdf_object_ref:n {__pdf/Page/Resources/ExtGState}
}
\let\pgf@sys@pdf@check@resources=\relax%
%not sure if needed, but perhaps the lists are used somewhere else ...
@@ -111,24 +111,22 @@
}
\cs_generate_variant:Nn \tl_trim_spaces:n{V}
-\cs_generate_variant:Nn \__pdf_backend_PageResources_gput:nnn {nex}
+\cs_generate_variant:Nn \pdfmanagement_add:nnn {nex}
\cs_new:Npn \__pdfmanagement_patch_pgfextgs:w #1/#2<<#3>>#4\q_stop
{
\tl_set:Nx\l_tmpa_tl{#2}
- \__pdf_backend_PageResources_gput:nex
- {ExtGState}{\tl_trim_spaces:V\l_tmpa_tl}{<<#3 #4>>}
+ \pdfmanagement_add:nex
+ {Page/Resources/ExtGState}{\tl_trim_spaces:V\l_tmpa_tl}{<<#3 #4>>}
}
\cs_new:Npn \__pdfmanagement_patch_pgfpatterns:w #1/#2\space#3\q_stop
{
- \exp_args:Nnxx
- \__pdf_backend_PageResources_gput:nnn
- {Pattern}{\tl_trim_spaces:n{#2}}{#3}
+ \pdfmanagement_add:nex
+ {Page/Resources/Pattern}{\tl_trim_spaces:n{#2}}{#3}
}
\cs_new:Npn \__pdfmanagement_patch_pgfcolorspaces:w #1/#2[#3]#4\q_stop
{
- \exp_args:Nne
- \__pdf_backend_PageResources_gput:nnn
- {ColorSpace}{\tl_trim_spaces:n{#2}}{[#3]}
+ \pdfmanagement_add:nex
+ {Page/Resources/ColorSpace}{\tl_trim_spaces:n{#2}}{[#3]}
}
\bool_if:NT \g__pdfmanagement_firstaid_transparent_bool
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
index 32de8d45bc7..847300ef601 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
@@ -27,7 +27,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-03-17}{0.95c}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-05-14}{0.95d}
{PDF~management~code~(testphase)}
%% File: l3pdfdict.dtx
\cs_new:Npn \__pdfdict_get_type:n #1
@@ -666,15 +666,15 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AA } }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AA_obj } { dict }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AA } { dict }
\__pdf_backend_object_write:nx
- { g__pdfmanagement_/Catalog/AA_obj }
+ { __pdfmanagement/Catalog/AA }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AA } }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{AA}
{
- \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AA_obj }
+ \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AA }
}
}
}
@@ -682,67 +682,67 @@
{
\seq_if_empty:cF { g__pdfmanagement_/Catalog/AcroForm/Fields_seq }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AcroForm/Fields_obj } { array }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AcroForm/Fields } { array }
\__pdf_backend_object_write:nx
- { g__pdfmanagement_/Catalog/AcroForm/Fields_obj }
+ { __pdfmanagement/Catalog/AcroForm/Fields }
{ \seq_use:cn { g__pdfmanagement_/Catalog/AcroForm/Fields_seq } {~} }
\exp_args:Nnnx
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ Fields }
- { \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AcroForm/Fields_obj } }
+ { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/Fields } }
}
\seq_if_empty:cF { g__pdfmanagement_/Catalog/AcroForm/CO_seq }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AcroForm/CO_obj } { array }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AcroForm/CO } { array }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/AcroForm/CO_obj }
+ { __pdfmanagement/Catalog/AcroForm/CO }
{ \seq_use:cn { g__pdfmanagement_/Catalog/AcroForm/CO_seq } {~} }
\exp_args:Nnnx
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ CO }
- { \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AcroForm/CO_obj } }
+ { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/CO } }
}
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR/Font}}
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AcroForm/DR/Font_obj } {dict}
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AcroForm/DR/Font } {dict}
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/AcroForm/DR/Font_obj }
+ { __pdfmanagement/Catalog/AcroForm/DR/Font }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR/Font } }
\exp_args:Nnnx
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR } }
{ Font }
- { \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AcroForm/DR/Font_obj } }
+ { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/DR/Font } }
}
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm/DR}}
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AcroForm/DR_obj } {dict}
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AcroForm/DR } {dict}
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/AcroForm/DR_obj }
+ { __pdfmanagement/Catalog/AcroForm/DR }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm/DR } }
\exp_args:Nnnx
\prop_gput:cnn %we have to use \prop here to avoid the handler ...
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm } }
{ DR }
- { \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AcroForm/DR_obj } }
+ { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm/DR } }
}
\prop_if_empty:cF { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/AcroForm} }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AcroForm_obj } {dict}
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AcroForm } {dict}
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/AcroForm_obj }
+ { __pdfmanagement/Catalog/AcroForm }
{ \pdfdict_use:n { g__pdf_Core/Catalog/AcroForm } }
\exp_args:Nnnx
\__pdfmanagement_handler_gput:nnn
{ Catalog }
{ AcroForm }
- { \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/AcroForm_obj } }
+ { \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/AcroForm } }
}
}
@@ -751,16 +751,16 @@
\seq_if_empty:cF
{ g__pdfmanagement_/Catalog/AF_seq }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/AF_obj } { array }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/AF } { array }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/AF_obj }
+ { __pdfmanagement/Catalog/AF }
{ \seq_use:cn { g__pdfmanagement_/Catalog/AF_seq } {~} }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{AF}
{
- \__pdf_backend_object_ref:n {g__pdfmanagement_/Catalog/AF_obj}
+ \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/AF}
}
}
}
@@ -769,16 +769,16 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/MarkInfo } }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/MarkInfo_obj } { dict }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/MarkInfo } { dict }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/MarkInfo_obj }
+ { __pdfmanagement/Catalog/MarkInfo }
{ \pdfdict_use:n { g__pdf_Core/Catalog/MarkInfo } }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{MarkInfo}
{
- \__pdf_backend_object_ref:n {g__pdfmanagement_/Catalog/MarkInfo_obj}
+ \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/MarkInfo}
}
}
}
@@ -792,10 +792,10 @@
>
{ 0 }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/OCProperties_obj } { dict }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/OCProperties } { dict }
\seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l_tmpa_tl
\exp_args:Nnx
- \__pdf_backend_object_write:nn {g__pdfmanagement_/Catalog/OCProperties_obj}
+ \__pdf_backend_object_write:nn {__pdfmanagement/Catalog/OCProperties}
{
/OCGs~[ \seq_use:cn { g__pdfmanagement_/Catalog/OCProperties/OCGs_seq } {~} ]
/D~\l_tmpa_tl~
@@ -808,7 +808,7 @@
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{ OCProperties }
- { \__pdf_backend_object_ref:n {g__pdfmanagement_/Catalog/OCProperties_obj} }
+ { \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/OCProperties} }
}
}
\cs_new_protected:cpn { __pdfmanagement_/Catalog/OutputIntents_gpush: }
@@ -816,16 +816,16 @@
\seq_if_empty:cF
{ g__pdfmanagement_/Catalog/OutputIntents_seq }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/OutputIntents_obj } { array }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/OutputIntents } { array }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/OutputIntents_obj }
+ { __pdfmanagement/Catalog/OutputIntents }
{ \seq_use:cn { g__pdfmanagement_/Catalog/OutputIntents_seq } {~} }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{OutputIntents}
{
- \__pdf_backend_object_ref:n {g__pdfmanagement_/Catalog/OutputIntents_obj}
+ \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/OutputIntents}
}
}
}
@@ -834,16 +834,16 @@
\seq_if_empty:cF
{ g__pdfmanagement_/Catalog/Requirements_seq }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/Requirements_obj } { array }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/Requirements } { array }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/Requirements_obj }
+ { __pdfmanagement/Catalog/Requirements }
{ \seq_use:cn { g__pdfmanagement_/Catalog/Requirements_seq } {~} }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{Requirements}
{
- \__pdf_backend_object_ref:n { g__pdfmanagement_/Catalog/Requirements_obj }
+ \__pdf_backend_object_ref:n { __pdfmanagement/Catalog/Requirements }
}
}
}
@@ -852,16 +852,16 @@
\prop_if_empty:cF
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/ViewerPreferences } }
{
- \__pdf_backend_object_new:nn { g__pdfmanagement_/Catalog/ViewerPreferences_obj } { dict }
+ \__pdf_backend_object_new:nn { __pdfmanagement/Catalog/ViewerPreferences } { dict }
\exp_args:Nnx
\__pdf_backend_object_write:nn
- { g__pdfmanagement_/Catalog/ViewerPreferences_obj }
+ { __pdfmanagement/Catalog/ViewerPreferences }
{ \pdfdict_use:n { g__pdf_Core/Catalog/ViewerPreferences } }
\exp_args:Nnx
\__pdf_backend_catalog_gput:nn
{ViewerPreferences}
{
- \__pdf_backend_object_ref:n {g__pdfmanagement_/Catalog/ViewerPreferences_obj}
+ \__pdf_backend_object_ref:n {__pdfmanagement/Catalog/ViewerPreferences}
}
}
}
@@ -1063,21 +1063,56 @@
}
\pdfdict_new:n { l__pdfannot/widget }
+ \pdfdict_new:n { l__pdfannot/widget/AA }
+ \pdfdict_new:n { l__pdfannot/widget/AP }
+ \pdfdict_new:n { l__pdfannot/widget/MK }
+ \pdfdict_new:n { l__pdfannot/widget/BS }
\pdfdict_put:nnn { l__pdfannot/widget }{ Subtype }{ /Widget }
\hook_new_pair:nn
{pdfannot/widget/before}
{pdfannot/widget/after}
- \hook_new_pair:nn
- {pdfannot/widget/begin}
- {pdfannot/widget/end}
\cs_new_protected:Npn \pdfannot_widget_box:nnn #1 #2 #3
{
\hook_use:n { pdfannot/widget/before }
+ \group_begin:
+ \pdfmeta_standard_verify:nT
+ {annot_widget_no_AA}
+ {
+ \pdfdict_if_empty:nF { l__pdfannot/widget/AA }
+ {
+ \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/AA}}
+ \pdfdict_put:nnx { l__pdfannot/widget }
+ {AA}
+ {\pdf_object_ref_last:}
+ }
+ }
+ \pdfdict_if_empty:nF { l__pdfannot/widget/AP }
+ {
+ \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/AP}}
+ \pdfdict_put:nnx { l__pdfannot/widget }
+ {AP}
+ {\pdf_object_ref_last:}
+ }
+ \pdfdict_if_empty:nF { l__pdfannot/widget/MK }
+ {
+ \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/MK}}
+ \pdfdict_put:nnx { l__pdfannot/widget }
+ {MK}
+ {\pdf_object_ref_last:}
+ }
+ \pdfdict_if_empty:nF { l__pdfannot/widget/BS }
+ {
+ \pdf_object_unnamed_write:nx {dict}{\pdfdict_use:n{l__pdfannot/widget/BS}}
+ \pdfdict_put:nnx { l__pdfannot/widget }
+ {BS}
+ {\pdf_object_ref_last:}
+ }
\pdfannot_box:nnnx {#1}{#2}{#3}
{
\pdfdict_use:n { l__pdfannot/widget}
}
- \hook_use:n { pdfannot/widget/after }
+ \hook_use:n { pdfannot/widget/end }
+ \group_end:
\bool_gset_false:N\g__pdfannot_use_lastlink_bool
}
\seq_const_from_clist:Nn \c_pdfannot_link_types_seq { URI , GoToR , Launch , GoTo, Named }
@@ -1721,6 +1756,7 @@
,.tex = text/plain %or application/x-tex, not in iana.org list
,.txt = text/plain
,.sty = text/plain
+ ,.xml = text/xml
}
\str_new:N \l_pdffile_source_name_str
\pdfdict_new:n { l_pdffile }
@@ -1837,7 +1873,6 @@
\msg_error:nn {pdffile}{target-name-missing}
}
{
- \pdf_object_new:nn { #1 } {dict}
\group_begin:
\__pdffile_filename_convert_to_print:nN { #2 } \l__pdffile_tmpa_str
\pdfdict_put:nnx {l_pdffile/Filespec}{F} { \l__pdffile_tmpa_str }
@@ -1896,6 +1931,7 @@
}
\tl_if_blank:nTF { #2 }
{
+ \pdf_object_new:nn { #3 } {dict}
\exp_args:Nnnx
\__pdffile_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
@@ -1904,6 +1940,7 @@
{\l__pdffile_embed_ref_tl}
}
{
+ \pdf_object_new:nn { #3 } {dict}
\exp_args:Nnnx
\__pdffile_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
@@ -1933,6 +1970,7 @@
{ #1 }
\l__pdffile_automimetype_tl
\tl_set:Nx \l__pdffile_embed_ref_tl { \pdf_object_ref_last: }
+ \pdf_object_new:nn { #3 } {dict}
\exp_args:Nnxx
\__pdffile_filespec_write:nnn
%#1 dict, #2 target file name, #3 object ref
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
index 21614ec555a..3161539cf01 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: pdfmanagement-testphase.dtx
-\ProvidesExplPackage{pdfmanagement-testphase}{2021-03-17}{0.95c}
+\ProvidesExplPackage{pdfmanagement-testphase}{2021-05-14}{0.95d}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty
index 8d5abb7e2a3..4b4030c4b2f 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/transparent-ltx.sty
@@ -3,7 +3,7 @@
%% a replacement for transparent sty from Heiko Oberdiek
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{transparent-ltx}{2021-03-17}{0.95c}
+\ProvidesExplPackage{transparent-ltx}{2021-05-14}{0.95d}
{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
\RequirePackage{l3opacity}
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index aec0fbb6321..76aee08fef9 100644
--- a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,26 +1,44 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-03-17 v0.95c patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-05-14 v0.95d patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
-\cs_gset_protected:Npn \@expl@xcolor@set@@nnn #1 #2 #3
+% #1 is the color name
+% #2: model or models
+% #3: value: either numbers or a color name
+% #4 is the type: named or ps
+\cs_gset_protected:Npn \@expl@xcolor@set@@nnnn #1 #2 #3 #4
{
- \cs_if_exist:cTF { __color_parse_model_ #2 :w }
- {
- \color_set:nnn {#1}{#2}{#3}
- }
- {
- \tl_if_eq:nnTF{#2}{named}
- {
- \color_set:nn{#1}{#3}
- }
- {
- %this is for multi models, it will break if there is model
- %l3 doesn't know, but the case is rare, so accept it for now.
- \color_set:nnn{#1}{#2}{#3}
- }
- }
+ \str_case:nnF {#4}
+ {
+ % we ignore the ps type for now.
+ {ps}{}
+ {named}
+ {
+ \cs_if_exist:cT { __color_parse_model_ #2 :w }
+ {
+ \color_set:nnn {#1}{#2}{#3}
+ }
+ }
+ }
+ {
+ \cs_if_exist:cTF { __color_parse_model_ #2 :w }
+ {
+ \color_set:nnn {#1}{#2}{#3}
+ }
+ {
+ \tl_if_eq:nnTF{#2}{named}%this the model not the type!
+ {
+ \color_set:nn{#1}{#3}
+ }
+ {
+ %this is for multi models, it will break if there is model
+ %l3 doesn't know, but the case is rare, so accept it for now.
+ \color_set:nnn{#1}{#2}{#3}
+ }
+ }
+ }
}
\cs_generate_variant:Nn \color_set:nn {ne}
\cs_new_protected:Npn \@expl@xcolor@set@@ne #1 #2
@@ -58,7 +76,7 @@
%\pretocmd{\XC@definec@lor}{\@expl@color@set@@nnn{#2}{#4}{#5}}{}{\fail}
\def\XC@definec@lor[#1]#2[#3]#4#5%
- {\@expl@xcolor@set@@nnn{#2}{#4}{#5}%
+ {\@expl@xcolor@set@@nnnn{#2}{#4}{#5}{#1}%
\begingroup
\XC@sdef\@@cls{#1}\XC@edef\@@nam{#2}\edef\colornameprefix{#3}%
\XC@logdef\@@nam