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

Robert Howlett rhowlett at mail.usyd.edu.au
Sat Mar 30 21:11:14 CET 2002

Heiko Oberdiek wrote:
>
> 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
> instead of \numexpr.
>
> Yours sincerely
>   Heiko <oberdiek at uni-freiburg.de>
>

Many thanks.
I had wondered if something like this might work, but I
was worried that something like \pdflastobj+2 could
hit upon a number that had already been used somehow,
if pdftex's method for choosing object numbers was
a bit complicated.

Bob