summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-07-31 20:56:25 +0000
committerKarl Berry <karl@freefriends.org>2021-07-31 20:56:25 +0000
commit0f16883734671b9de034bb28b54771c4e509783f (patch)
treed9a699c3a7ab83e6203b18fa618693b922dc9ab9 /Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx
parent908d657f38d20fce93644b10ae715d8512f44215 (diff)
pdfmanagement-testphase (31jul21)
git-svn-id: svn://tug.org/texlive/trunk@60127 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx')
-rw-r--r--Master/texmf-dist/tex/latex/pdfmanagement-testphase/pdfmanagement-testphase.ltx120
1 files changed, 104 insertions, 16 deletions
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 094041b27d7..ecfa1e60a1b 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-07-21}{0.95g}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-07-31}{0.95h}
{PDF~management~code~(testphase)}
%% File: l3pdfdict.dtx
\cs_new:Npn \__pdfdict_get_type:n #1
@@ -270,6 +270,7 @@
\cs_set_eq:NN \pdfdict_use:n \__pdfdict_use:n
%% File: l3pdfmanagement.dtx
+
\msg_new:nnn { pdfmanagement } { unknown-dict }
{ The~PDF~management~resource~'#1'~is~unknown. }
@@ -282,6 +283,9 @@
\msg_new:nnn { pdfmanagement } { no-show }
{ It~is~not~possible~to~show~the~content~of~'#1'.}
+\msg_new:nnn { pdfmanagement } { name-exist }
+ { The~name~'#1'~has~already~been~used~for~name~tree~'#2'.}
+
\msg_new:nnn { pdfmanagement } { show-dict }
{
The~PDF~resource~'#1'~
@@ -298,6 +302,10 @@
The~PDF~resources~management~is~not~active\\
command~'#1'~ignored.
}
+\tl_new:N \l__pdfmanagement_tmpa_tl
+\tl_new:N \l__pdfmanagement_tmpb_tl
+\seq_new:N \l__pdfmanagement_tmpa_seq
+
\bool_new:N \g__pdfmanagement_active_bool
\prg_new_conditional:Npnn \__pdfmanagement_if_active: { p , T , F , TF }
{
@@ -308,6 +316,7 @@
\prg_set_eq_conditional:NNn
\pdfmanagement_if_active: \__pdfmanagement_if_active: { p , T , F , TF }
+\cs_set_eq:NN \IfPDFManagementActiveTF\pdfmanagement_if_active:TF
\hook_new:n {pdfmanagement/add}
\cs_new_protected:Npn \pdfmanagement_add:nnn #1 #2 #3
{
@@ -332,7 +341,8 @@
}
}
-\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx}
+\cs_generate_variant:Nn \pdfmanagement_add:nnn {nnx,nxx,xxx}
+\cs_set_eq:NN \PDFManagementAdd \pdfmanagement_add:xxx
\tl_new:N \g__kernel_pdfmanagement_thispage_shipout_code_tl
\tl_new:N \g__kernel_pdfmanagement_lastpage_shipout_code_tl
\tl_new:N \g__kernel_pdfmanagement_end_run_code_tl
@@ -622,6 +632,11 @@
AcroForm/CO
}
+\clist_const:Nn \c__pdfmanagement_Catalog_nametree_clist
+ {
+ AP,
+ JavaScript,
+ }
\clist_map_inline:Nn \c__pdfmanagement_Catalog_seq_clist
{
\seq_new:c { g__pdfmanagement_/Catalog/#1_seq } % new name later
@@ -637,6 +652,43 @@
{ g__pdfmanagement_/Catalog/OCProperties/Configs_seq }
{ #1 }
}
+\cs_new_protected:Npn \__pdfmanagement_nametree_add_aux:nnn #1 #2 #3
+ %#1 name tree, #2 sanitized name #3 value
+ {
+ \prop_get:coNTF
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }}
+ { #2 }
+ \l__pdfmanagement_tmpb_tl
+ {
+ \msg_error:nnnn{pdfmanagement}{name-exist}{#2}{#1}
+ }
+ {
+ \prop_gput:con
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }}
+ { #2 }
+ { #3 }
+ }
+ }
+\clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist
+ {
+ \pdfdict_new:n { g__pdf_Core/Catalog/Names/#1}
+ \cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/#1/?_gput:nn } ##1 ##2
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{##1}\l__pdfmanagement_tmpa_tl
+ \exp_args:Nno
+ \__pdfmanagement_nametree_add_aux:nnn {#1}{\l__pdfmanagement_tmpa_tl}{##2}
+ }
+ }
+\pdfdict_new:n { g__pdf_Core/Catalog/Names/EmbeddedFiles}
+\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles/?_gput:nn } #1 #2
+ {
+ \pdf_string_from_unicode:nnN {utf8/string}{#1}\l__pdfmanagement_tmpa_tl
+ \exp_args:Nno
+ \__pdfmanagement_nametree_add_aux:nnn
+ {EmbeddedFiles}{\l__pdfmanagement_tmpa_tl}{#2}
+ \exp_args:No
+ \__pdf_backend_NamesEmbeddedFiles_add:nn {\l__pdfmanagement_tmpa_tl}{#2}
+ }
\cs_new_protected:Npn \__pdfmanagement_Catalog_gpush:
{
\use:c { __pdfmanagement_/Catalog/AA_gpush: }
@@ -655,7 +707,11 @@
{ \__kernel_pdfdict_name:n { g__pdf_Core/Catalog} }
\__pdf_backend_catalog_gput:nn
% output names tree:
- \use:c { __pdfmanagement_/Catalog/Names/EmbeddedFiles_gpush: }
+ \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {EmbeddedFiles}
+ \clist_map_inline:Nn \c__pdfmanagement_Catalog_nametree_clist
+ {
+ \use:c{ __pdfmanagement_/Catalog/Names_gpush:n } {##1}
+ }
}
\cs_new_protected:cpn { __pdfmanagement_/Catalog/AA_gpush: }
{
@@ -789,12 +845,12 @@
{ 0 }
{
\__pdf_backend_object_new:nn { __pdfmanagement/Catalog/OCProperties } { dict }
- \seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l_tmpa_tl
+ \seq_gpop_left:cN { g__pdfmanagement_/Catalog/OCProperties/Configs_seq} \l__pdfmanagement_tmpa_tl
\exp_args:Nnx
\__pdf_backend_object_write:nn {__pdfmanagement/Catalog/OCProperties}
{
/OCGs~[ \seq_use:cn { g__pdfmanagement_/Catalog/OCProperties/OCGs_seq } {~} ]
- /D~\l_tmpa_tl~
+ /D~\l__pdfmanagement_tmpa_tl~
\seq_if_empty:cF { g__pdfmanagement_/Catalog/OCProperties/Configs_seq }
{
/Configs~
@@ -861,22 +917,54 @@
}
}
}
+\int_new:N \g__pdfmanagement_EmbeddedFiles_int
+\cs_new:Npn \__pdfmanagement_EmbeddedFiles_name:
+ {
+ (
+ l3ef
+ \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {10}
+ {0}
+ \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {100}
+ {0}
+ \int_compare:nNnT {\g__pdfmanagement_EmbeddedFiles_int} < {1000}
+ {0}
+ \int_use:N \g__pdfmanagement_EmbeddedFiles_int
+ )
+ }
\pdfdict_new:n { g__pdf_Core/Catalog/Names }
\cs_new_protected:cpn { __pdfmanagement_handler/Catalog/Names/EmbeddedFiles_gput:n } #1
{
- \__pdf_backend_NamesEmbeddedFiles_add:n { #1 }
- }
-\cs_new_protected:cpn { __pdfmanagement_/Catalog/Names/EmbeddedFiles_gpush: }
- {
- \seq_if_empty:NF \g__pdf_backend_EmbeddedFiles_seq
- {
- \exp_args:Nx \__pdf_backend_NamesEmbeddedFiles_gpush:n
- {
- \seq_use:Nn \g__pdf_backend_EmbeddedFiles_seq {~}
- }
- }
+ \int_gincr:N \g__pdfmanagement_EmbeddedFiles_int
+ \exp_args:Nnx
+ \prop_gput:cnn
+ { \__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/EmbeddedFiles }}
+ { \__pdfmanagement_EmbeddedFiles_name: }
+ { #1 }
+ \exp_args:Nx
+ \__pdf_backend_NamesEmbeddedFiles_add:nn {\__pdfmanagement_EmbeddedFiles_name:} { #1 }
}
+\cs_new_protected:cpn { __pdfmanagement_/Catalog/Names_gpush:n } #1 %#1 name of name tree
+ {
+ \pdfdict_if_empty:nF { g__pdf_Core/Catalog/Names/#1 }
+ {
+ \seq_clear:N \l__pdfmanagement_tmpa_seq
+ \prop_map_inline:cn
+ {\__kernel_pdfdict_name:n { g__pdf_Core/Catalog/Names/#1 }}
+ { \seq_put_right:Nn \l__pdfmanagement_tmpa_seq {##1~##2}}
+ \seq_sort:Nn \l__pdfmanagement_tmpa_seq
+ {
+ \str_compare:nNnTF {##1} > {##2}
+ { \sort_return_swapped: }
+ { \sort_return_same: }
+ }
+ \exp_args:Nnx \__pdf_backend_Names_gpush:nn
+ {#1}
+ {
+ \seq_use:Nn \l__pdfmanagement_tmpa_seq {~}
+ }
+ }
+ }
\cs_new_protected:cpn {__pdfmanagement_handler/Catalog/?_show:}
{
\iow_term:x