iText is an API - so every bit of output needs to be specified by calls to that API at appropriate locations in your code. As such it's good for output that's not very regular. See http://faq.javaranch.com/java/ItextExample for an example.
Jasper is good for reporting situations, where you have the same layout repeatedly, like header-table-footer on all pages.
Another option is Apache FOP, if the data to be displayed is available as XML.
Note that both FOP and Jasper use iText underneath, so if there's something those two can do, then iText by itself can do it too (with more code you need to write).