back-imp-pdf.mkxl /size: 5762 b    last modification: 2024-01-16 09:02
1%D \module
2%D   [       file=back-imp-pdf,
3%D        version=2009.04.15,
4%D          title=\CONTEXT\ Backend Macros,
5%D       subtitle=\PDF,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14%D The less there is here, the better. After a decade it is time to remove the \type
15%D {\pdf*} ones completely. For the moment I keep them commented but even that will
16%D go away.
17
18%D Todo: a few delayed binding left:
19
20% ./lpdf-ini.lmt : reserve | immediate | positions | matrix | pos | fontobject
21% ./lpdf-lmt.lmt : fontname | object | boxresources
22% ./lpdf-rul.lmt : mp stuff
23% ./back-res.lmt : boxresources
24
25\writestatus{loading}{ConTeXt Backend Macros / PDF}
26
27% \registerctxluafile{back-imp-pdf}{autosuffix} % some code will move to lpdf-*
28
29\registerctxluafile{lpdf-ini}{autosuffix}
30\registerctxluafile{lpdf-lmt}{autosuffix}
31\registerctxluafile{lpdf-sig}{autosuffix,optional}
32\registerctxluafile{lpdf-col}{autosuffix}
33\registerctxluafile{lpdf-xmp}{autosuffix}
34\registerctxluafile{lpdf-ano}{autosuffix}
35\registerctxluafile{lpdf-mis}{autosuffix}
36\registerctxluafile{lpdf-ren}{autosuffix}
37\registerctxluafile{lpdf-grp}{autosuffix}
38\registerctxluafile{lpdf-wid}{autosuffix}
39\registerctxluafile{lpdf-fld}{autosuffix}
40\registerctxluafile{lpdf-tag}{autosuffix}
41\registerctxluafile{lpdf-fmt}{autosuffix}
42\registerctxluafile{lpdf-pde}{autosuffix}
43\registerctxluafile{lpdf-img}{autosuffix}
44\registerctxluafile{lpdf-epa}{autosuffix}
45\registerctxluafile{lpdf-emb}{autosuffix}
46\registerctxluafile{lpdf-fix}{autosuffix}
47\registerctxluafile{lpdf-rul}{autosuffix}
48
49\registerctxluafile{back-imp-pdf}{autosuffix} % some code will move to lpdf-*
50\registerctxluafile{back-imp-pdp}{autosuffix}
51
52\registerctxluafile{lpdf-fix-imp-fonts}   {autosuffix} % some code will move to lpdf-*
53%registerctxluafile{lpdf-fix-imp-contents}{autosuffix} % on demand
54
55% \registerctxluafile{lpdf-u3d}{autosuffix}
56
57\loadmkxlfile{back-imp-u3d}
58
59\unprotect
60
61%D We will minimize the number of calls to \PDF\ specific primitives and delegate
62%D all management and injection of code to the backend.
63%D
64%D Because we do a lot in \LUA\ and don't want interferences, we nil most of the
65%D \PDFTEX\ primitives. Of course one can always use the \type {\pdfvariable},
66%D \type {\pdfextension} and \type {\pdffeedback} primitives but it will probably
67%D have bad side effects. We fake them as primitives which is why they are
68%D defined as untraced.
69
70% \pdfextension % defined in lua
71% \pdffeedback  % idem
72% \pdfvariable  % idem
73% \pdfliteral   % idem
74% \pdfobj       % idem
75% \pdflastobj   % idem
76% \pdfrefobj    % idem
77
78\untraced\permanent\protected\def\pdfrestore  {\pdfextension restore}
79\untraced\permanent\protected\def\pdfsave     {\pdfextension save}
80\untraced\permanent\protected\def\pdfsetmatrix{\pdfextension setmatrix}
81
82\untraced\permanent\def\pdfxform              {\saveboxresource}
83\untraced\permanent\def\pdflastxform          {\lastsavedboxresourceindex}
84\untraced\permanent\def\pdfrefxform           {\useboxresource}
85
86%D This is also needed for tikz:
87
88\ifdefined\pdfsavepos\else
89    \untraced\permanent\def\pdfsavepos {\savepos }
90    \untraced\permanent\def\pdflastxpos{\lastxpos}
91    \untraced\permanent\def\pdflastypos{\lastypos}
92\fi
93
94%D Here are quick and dirty compression flippers, mostly used when testing something
95%D as one can best stick to the defaults that also adapt to specific standards.
96
97\untraced\permanent\protected\def\nopdfcompression        {\clf_setpdfcompression\zerocount\zerocount}
98\untraced\permanent\protected\def\onlypdfobjectcompression{\clf_setpdfcompression\plusthree\zerocount}
99\untraced\permanent\protected\def\maximumpdfcompression   {\clf_setpdfcompression\plusnine \plusnine }
100\untraced\permanent\protected\def\normalpdfcompression    {\clf_setpdfcompression\plusthree\plusthree}
101
102%D PDF/X (maybe combine the two lua calls)
103
104\setupbackend
105  [xmpfile=]
106
107\appendtoks
108    \edef\p_file{\backendparameter{xmpfile}}%
109    \ifempty\p_file\else
110      \clf_setxmpfile{\p_file}%
111    \fi
112\to \everysetupbackend
113
114%D This will change:
115
116\appendtoks
117    \clf_setformat
118         format  {\backendparameter\c!format}%
119         level   {\backendparameter\c!level}%
120         option  {\backendparameter\c!option}%
121         profile {\backendparameter\c!profile}%
122         intent  {\backendparameter\c!intent}%
123         file    {\backendparameter\c!file}%
124    \relax
125\to \everysetupbackend
126
127%D These are the only official methods to add stuff to the resources. If more is
128%D needed for third party low level code, it can be added.
129
130% \pdfbackendsetcatalog       #1#2 % defined in lua
131% \pdfbackendsetinfo          #1#2 % idem
132% \pdfbackendsetname          #1#2 % idem
133%
134% \pdfbackendsetpageattribute #1#2 % idem
135% \pdfbackendsetpagesattribute#1#2 % idem
136% \pdfbackendsetpageresource  #1#2 % idem
137%
138% \pdfbackendsetextgstate     #1#2 % idem
139% \pdfbackendsetcolorspace    #1#2 % idem
140% \pdfbackendsetpattern       #1#2 % idem
141% \pdfbackendsetshade         #1#2 % idem
142%
143% \pdfbackendcurrentresources      %  idem, expandable
144% \pdfcolor                     #1 %  idem, expandable
145
146%D This is a temporary hack that will be removed, improved or somehow can become
147%D default.
148
149\permanent\def\TransparencyHack{\setupcolors[\c!pagecolormodel=\v!auto]}
150
151%D Just in case one needs this \unknown:
152%D
153%D \starttyping
154%D text \pdfbackendactualtext{Meier}{Müller} text
155%D \stoptyping
156
157\untraced\permanent\protected\def\pdfbackendactualtext#1#2% not interfaced
158  {\clf_startactualtext{#2}%
159   #1%
160   \clf_stopactualtext}
161
162\aliased\let\pdfactualtext\pdfbackendactualtext
163
164\protect \endinput
165