About Orest Ivasiv

Passionate software engineer interested in different programming languages, pragmatic approaches and performance boost practices.

Java PDF Libraries

Recently I had a task to select some Java PDF libraries for PDF generation. But it wasn’t a simple task. The first thing which came into my mind was iText. It’s well know Java library with good reputation. But… there is some stopper. iText version 5+ is released under the AGPL license. I.e. we have to pay money if we want to use iText in commercial product. I’ve created the next small checklist which covers project needs:

  1. liberal license
  2. support maximum amount of project features (e.g. absolute element positioning)
  3. good documentation
  4. huge amount of samples
  5. possibility to render HTML to PDF

I’ve reviewed the next libraries:

iText review

  • iText 2.1.7: the latest official release under the MPL & LGPL license;
  • iText 4.2.0: the latest unofficial release under the MPL & LGPL license;
  • iText 5.0.0 and higher: released under the AGPL license.

Notes about iText 5.0+ vs iText 4.2 Beginning with iText version 5.0 the developers have moved to the AGPL to improve their ability to sell commercial licenses. .. To assist those desiring to stick with the old license was made the final MPL/LGPL version more easily available and forked on github.

Apache™ FOP

Apache™ FOP (Formatting Objects Processor) is a print formatter driven by XSL formatting objects (XSL-FO) and an output independent formatter. It is a Java application that reads a formatting object (FO) tree and renders the resulting pages to a specified output. This lib doesn’t have enough flexibility for absolute page element positioning. But, it might be really valuable as content convertor.

Apache PDFBox

Very interesting project. It has very impressive amount of features. And most important it’s in active development.


I’ve selected iText v.4.2 which has acceptable license and huge community. But the most important feature it’s a very good documentation (actually it’s a book iText in Action — 2nd Edition), tons of samples. Almost all samples for iText v.5 can be easily applied to iText v.4.2. Other libraries have not so much samples/demos. And for quick start it’s very important.
Here is maven dependency info:


PDFBox is selected as backup library. I.e. I will use it when iText has some limitations.



Reference: Java PDF Libraries from our JCG partner Orest Ivasiv at the Knowledge Is Everything blog.
Related Whitepaper:

Java Essential Training

Author David Gassner explores Java SE (Standard Edition), the language used to build mobile apps for Android devices, enterprise server applications, and more!

The course demonstrates how to install both Java and the Eclipse IDE and dives into the particulars of programming. The course also explains the fundamentals of Java, from creating simple variables, assigning values, and declaring methods to working with strings, arrays, and subclasses; reading and writing to text files; and implementing object oriented programming concepts. Exercise files are included with the course.

Get it Now!  

8 Responses to "Java PDF Libraries"

  1. Sean Loughran says:

    I can’t say enough good things about iText. I’ve been using it for years to push the boundaries of PDFs and it hasn’t failed me yet. And as you said, iText In Action v2 is an amazing book!

  2. jroom36 says:

    You also should consider JODConverter(http://code.google.com/p/jodconverter/). It is abstract working with common task for document processing via OpenOffice: conversation, running/stopping, process restarting of Office copy.

  3. Graham says:

    You might like to also consider Docmosis. They have a Java PDF Library.

    It uses a templating solution to handle the construction of a document/report. The templates can be created using common word processing packages like Microsoft Word.


  4. David Zondray says:

    I think Aspose.Pdf is another one you must consider: http://www.aspose.com/java/pdf-component.aspx

Leave a Reply

+ 6 = fourteen

Java Code Geeks and all content copyright © 2010-2014, Exelixis Media Ltd | Terms of Use | Privacy Policy
All trademarks and registered trademarks appearing on Java Code Geeks are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries.
Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.

Sign up for our Newsletter

20,709 insiders are already enjoying weekly updates and complimentary whitepapers! Join them now to gain exclusive access to the latest news in the Java world, as well as insights about Android, Scala, Groovy and other related technologies.

As an extra bonus, by joining you will get our brand new e-books, published by Java Code Geeks and their JCG partners for your reading pleasure! Enter your info and stay on top of things,

  • Fresh trends
  • Cases and examples
  • Research and insights
  • Two complimentary e-books