For creating PDF I happily use
FOP and the
XSL-FO namespace.
In a nutshell, XSL-FO is a xml-dialect that describes the visual appearence of a document on paper.
FOP is a open source tool to translate the XSL-FO to various output formats, including pdf.
To create the FO-document you basically have two possibilities:
- create xml from your data and apply a xslt-stylesheet to it
- create the xsl-fo document directly via print or a templating engine
I didn't use linking from FO yet, but itrc it should be supported.