# [pdftex] pdf objects with references to each other?

Heiko Oberdiek oberdiek at ruf.uni-freiburg.de
Sat Mar 30 02:14:28 CET 2002

On Sat, 30 Mar 2002, Robert Howlett wrote:

>   \pdfannot width 12 cm height 2 cm depth 10 pt
>   {/Subtype /Popup
>   /T (Algebra 1)
>   /Open false
>   /C [0 1 1]
>   /Contents
>   (Lectures given at the University of Sydney for the course
>   Math3902.)}
>   \pdfannot height 2 cm depth 10 pt
>   {/Subtype /Text
>   /C [0 1 1]
>   /Popup \the\pdflastannot\space 0 R}%
>
> i.e. the T and Contents entries go into the popup
> instead of the text annotation itself.
> What I would have liked to do is have the T and Contents
> entries in the dictionary of the text annotation and
> put a Parent key in the dictionary of the popup referring
> back to the text annotation. However, this means having
> entries in the dictionaries of each text annotation
> and the popup annotation referring to the other.
> I can't figure out a way to do this with pdftex.
> It seems to me that I need to be able to tell pdftex to
> choose some number that has not yet been used
> for an object, create an indirect reference to a
> yet-to-be-constructed object with that number, and then
> later make an object with that number.
> Can this be done?

You can use a pdf object without referencing:

\setbox0=\hbox{Click}
\edef\APNrule{width\the\wd0 height\the\ht0 depth\the\dp0}
\immediate\pdfxform0
\edef\APNobj{\the\pdflastxform}

\pdfobj{}%
\pdfannot ... {%
/Subtype/Popup%
/Parent \the\numexpr\pdflastobj+2\relax\space 0 R%
/Open false%
/C[0 1 1]%
}%
\pdfannot\APNrule{%
/Subtype/Text%
/Popup \the\pdflastannot\space 0 R%
/C[0 1 1]%
/T(...)%
/Contents(...)%
/AP<</N \APNobj\space 0 R>>%
}

Without e-TeX: \pdflastobj has to be stored in a counter
register after \pdfobj{} and the register is then
incremented by 2 and is used in the next \pdfannot command