At work, I'm currently working on a documentation generator similar to JavaDoc or Doxygen for our new system. I browsed around a bit for a Java library for constructing PDF documents and found iText, which is one of the best structured and most well-documented java library I've ever come across. Their iText by Example tutorial has so many examples that anything you'll want to do when you first try iText will be covered. And by the time you want to do something advanced that is not described in the tutorial, you'll know enough about how things work that you're likely to be able to figure it out yourself. Brilliant!