Apache FOP is a open source project under Apache. FOP means Formatting Object Processor. It is a print formatter driven by XSL formatting object XSL-FO and an output independent formatter. It is platform independent and built in Java.
It reads the Formatting Object(FO) tree and renders the resulting pages to specified output format. PDF is most common output format. In addition, it supports different formats such as PS, PCL, DOC and etc.
Apache FOP can generate file with dynamic contents. First XSLT transformed XSL file to FO format with assistance of XML data. Then Apache FOP processor generate output from FO data.