to be fair, Nipun, I was in rush to implement a fancy-looking pdf document within 2 days (7 boarding pass pages with dynamic information)
Tight schedule might cause the toughness, but I ended up spending 2 weeks debugging. Just give you a few examples:
- some jar files (I don't remember which one, might come from JasperReport) needs to be in system classpath in order to be loaded by JVM!

I was totally mad about this and ended up setting up system.properties from a
servlet. I paid price for this to have an exploded war folder (instead of an archived war file) in production!
- 2D barcode feature is awful in iText. I couldn't even figure out what its API document is talking about.
- At that time, developer's guide is not free ( I don't know what's the current situation, I don't care any more). I had my boss to buy a pdf document with 26$ or so. This is totally ridiculous because iText is claimed to be open source.
Hence, I suggest every serious developer try his/her best to find an alternative.