iText a free Java library
iText is a library that allows you to generate PDF files on the fly. The iText classes are very useful for people who need to generate read-only, platform independent documents containing text, lists, tables and images. The library is especially useful in combination with #Java(TM) technology-based Servlets: The look and feel of HTML is browser dependent; with iText and PDF you can control exactly how your servlet’s output will look.
iText requires JDK 1.2. It’s available for free under a multiple license: MPL and LGPL. It also have a complete list of features (but outdated), and let you perform operation on already created pdf (concat, split, add pages, add an overlay and so on…)