iText is an Open Source library for creating and manipulating PDF, RTF, and HTML files in Java. It was written by Bruno Lowagie, Paulo Soares, and others; it is distributed under the Mozilla Public License with the LGPL as alternative license.
The same document can be exported to multiple formats, or multiple instances of the same format. Data can be written to a file or, for example, from a servlet to a web browser.
More recently, it has been extended into a general purpose PDF library, capable of filling out forms, moving pages from one PDF to another, and so on. These extensions are often mutually exclusive. One class allows you to fill in forms, while a different and incompatible class makes it possible to copy pages from one PDF to another.
iText's PDF support is, nonetheless, quite extensive. It supports PDF's PKI-based signatures, 40-bit and 128-bit encryption, color correction, PDF/X, color management via ICC profiles, and a host of other features.