summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty')
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty455
1 files changed, 455 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
new file mode 100644
index 00000000000..ed28f7b00e6
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pdfmanagement-testphase/l3pdffield-testphase.sty
@@ -0,0 +1,455 @@
+%%
+%% This is file `l3pdffield-testphase.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3pdffield.dtx (with options: `package')
+%%
+%% Copyright (C) 2019-2021 The LaTeX Project
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% 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
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesExplPackage{l3pdffield-checkbox}{0000-00-00}{v0.00a}{form field checkbox}%
+\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
+\msg_new:nnn {pdffield}{no-period}
+ {
+ The~field~name~`#1`~contains~a~period. \\
+ This~is~not~allowed. `
+ }
+\msg_new:nnn {pdffield}{empty-name}
+ {
+ The~field~name~is~empty. \\
+ This~is~not~allowed. `
+ }
+\msg_new:nnn {pdffield}{appearance-missing}
+ {
+ The~appearance~`#1`~is~missing~for~the~#2~appearance.
+ }
+\msg_new:nnn {pdffield}{field-keys-ignored}
+ {
+ The~field~`#1`~is~already~initialized\\
+ The~field~keys~`#2`~are~ignored.
+ }
+
+\bitset_new:Nn \l__pdffield_Ff_bitset
+ {
+ ReadOnly = 0,
+ Required = 1,
+ NoExport = 2,
+ Multiline = 12,%Tx
+ Password = 13,
+ NoToggleToOff = 14,%Btn, radio button
+ Radio = 15,%Btn: Radio: 15=1, 16=0
+ Pushbutton = 16,%Btn: Checkbox: 15=0, 16=0
+ %Btn: Pushbutton: 16=1
+ Combo = 17,%Ch: Combo=1 List=0
+ Edit = 18,%Ch, Combo=1 -> + edit field
+ Sort = 19,%Ch, not relevant for view...
+ FileSelect = 20,%Tx
+ MultiSelect = 21,%Ch
+ DoNotSpellCheck = 22,%Tx, Ch (if Combo + Edit set)
+ DoNotScroll = 23,%Tx
+ Comb = 24,%Tx, requires MaxLen in dict
+ RadiosInUnison = 25,%Btn Radio
+ RichText = 25,%Tx
+ CommitOnSelChange = 26
+ }
+
+\bitset_new:Nn \l__pdffield_F_bitset
+ {
+ 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
+ {
+ \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:
+ }
+
+\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,
+ {
+ \group_begin:
+ \pdfdict_put:nnx {l__pdffield/checkbox/annot}{AP}{<<\pdfdict_use:n{l__pdffield/checkbox/annot/AP}>>}
+ \pdfmeta_standard_verify:nF
+ {annot_flags}
+ {
+ \bitset_set_true:Nn \l__pdffield_F_bitset {Print}
+ \bitset_set_false:Nn \l__pdffield_F_bitset {Hidden}
+ \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}
+ {
+ \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}}
+ \mode_leave_vertical:
+ \hbox_to_wd:nn
+ { #2 }
+ {
+ \rule [-#4]{0pt}{\dim_eval:n{#3+#4} }
+ \pdfannot_widget_box:nnn
+ { #2 }
+ { #3 }
+ { #4 }
+ \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}
+ }
+
+\cs_new_protected:Nn \__pdffield_store_default_appearances:
+ {
+ \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 }
+ }
+ }
+
+\__pdffield_store_default_appearances:
+\pdfdict_new:n {l__pdffield/checkbox/annot/AP}
+
+\cs_new_protected:Npn \__pdffield_checkbox_add:n #1
+ {
+ \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:
+ }
+\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 }
+ {
+ ,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
+ }
+\keys_define:nn { pdffield / checkbox }
+ {
+ ,name .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 {.}
+ {
+ \msg_error:nnx {pdffield}{no-period}{\l__pdffield_field_name_str}
+ }
+ \str_if_empty:NT\l__pdffield_field_name_str
+ {
+ \msg_error:nn {pdffield}{empty-name}
+ }
+ }
+ ,name .value_required:n = true
+ ,name .initial:n = checkbox
+ ,altname .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}
+ }
+ ,altname .groups:n = {field}
+ ,mappingname .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}
+ }
+ ,mappingname .groups:n = {field}
+ }
+
+\keys_define:nn { pdffield / checkbox }
+ {
+ ,checked .choice:
+ ,checked / false .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}
+ }
+ ,checked / true .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}
+ }
+ ,checked .default:n = {true}
+ ,checked .initial:n = {false}
+ }
+\keys_define:nn { pdffield / checkbox }
+ {
+ ,setfieldflags .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \bitset_set_true:Nn \l__pdffield_Ff_bitset {##1}
+ }
+ }
+ ,setfieldflags .groups:n = {field}
+ ,unsetfieldflags .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \bitset_set_false:Nn \l__pdffield_Ff_bitset {##1}
+ }
+ }
+ ,unsetfieldflags .groups:n = {field}
+ ,setannotflags .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \bitset_set_true:Nn \l__pdffield_F_bitset {##1}
+ }
+ }
+ ,unsetannotflags .code:n =
+ {
+ \clist_map_inline:nn {#1}
+ {
+ \bitset_set_false:Nn \l__pdffield_F_bitset {##1}
+ }
+ }
+ }
+
+\keys_define:nn { pdffield / checkbox }
+ {
+ appearance .code:n = %value is a name of an appearance
+ {
+ \pdfxform_if_exist:nTF { __pdffield_#1/Yes }
+ {
+ \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
+ {N}
+ {
+ <<
+ /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
+ /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
+ >>
+ }
+ }
+ {
+ \msg_error:nnnn{pdffield}{appearance-missing}{#1}{normal}
+ }
+ },
+ appearance .initial:n = checkbox/default,
+ }
+
+\keys_define:nn { pdffield / checkbox }
+ {
+ rollover-appearance .code:n = %value is a name of an appearance
+ {
+ \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}
+ }
+
+ }
+ },
+ }
+
+\keys_define:nn { pdffield / checkbox }
+ {
+ down-appearance .code:n = %value is a name of an appearance
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \pdfdict_remove:nn {l__pdffield/checkbox/annot/AP} {D}
+ }
+ {
+ \pdfxform_if_exist:nTF { __pdffield_#1/Yes }
+ {
+ \pdfdict_put:nnn {l__pdffield/checkbox/annot/AP}
+ {D}
+ {
+ <<
+ /Yes ~ \pdfxform_ref:n { __pdffield_#1/Yes}
+ /Off ~ \pdfxform_ref:n { __pdffield_#1/Off}
+ >>
+ }
+ }
+ {
+ \msg_warning:nnnn{pdffield}{appearance-missing}{#1}{down}
+ }
+ }
+ },
+ }
+\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
+ {
+ \keys_define:nn { pdffield / checkbox }
+ {
+ #1 .code:n =
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdffield_tmpa_str
+ \str_if_empty:NTF \l__pdffield_tmpa_str
+ {
+ \pdfdict_remove:nn {l__pdffield/checkbox/#3/AA}{#2}
+ }
+ {
+ \pdfdict_put:nnx {l__pdffield/checkbox/#3/AA}
+ {#2}
+ {<</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
+
+\cs_new_protected:Npn \pdffield_setup:nn #1 #2
+ {
+ \keys_set:n {pdffield / #1 } {#2}
+ }
+
+\endinput%
+%%%%
+%% Appearance
+%%checkbox
+%%
+%%
+%% End of file `l3pdffield-testphase.sty'.