What is the difference between lowagie and iText?

itext, java, openpdf

Solution

I am Lowagie, the lowagie you refer to. I'm the original author of iText and the author of the "iText in Action" books and the book "Entreprenerd" about the history of iText.

When people talk about lowagie in the context of PDF, they usually talk about libraries with package names (Java) or namespaces (C#) such as `com.lowagie.text` (Java). These are old versions of iText (versions 0, 1, or 2). The last of those old versions was iText 2.1.7 dating from July 2009 or earlier.

There was an iTextSharp 3 and 4 (C#), but there never was an official iText 3 or 4 release (Java). There are forks that claim to be based on iText 4 because the number 4 was temporarily used in the open source repository to prepare for the release of iText 5. With iText 5, the numbers of the releases of the Java and the C# version were finally synchronized.

When people talk about iText, they usually talk about the newer versions of iText can be found in the changelogs: http://itextpdf.com/changelog

The iText 5 version had the following substantial changes:

- the iText.jar is compiled using Java 5 (instead of with the JDK 1.4).

- The F/OSS license has been upgraded from MPL/LGPL to AGPL.

- The package names have changed from `com.lowagie` to `com.itextpdf`.

- The toolbox and RTF support have been removed: they are now in a separate project at SourceForge.

There was never an official iText 6 version; iText 6 only existed internally at iText Group, to prepare for iText 7.

The iText 7 version is a complete rewrite of the library. People who want to migrate from versions prior to iText 7 will have to rewrite their code, as iText 7 isn't compatible with prior versions.

There were many reasons for creating a new version from scratch:

- Rewriting the font layer was necessary to support ligatures and writing systems such as Devanagari (Hindi), Gurmukhi (Punjabi), and support for many other Indic languages such as Kannada, Telugu, Marathi, Urdu,... It's not possible to produce PDFs in those languages with older versions due to the way fonts are implemented in those versions.

- Rewriting the library provided an opportunity to fix plenty of ambiguities and inconsistencies in the API. Starting with iText 7, the library is no longer a monolithic jar, but a set of jars you can pick and choose from based on the functionality you need.

- The design of iText 5 (and earlier versions) dates from February 2000. It preceded the PDF/UA standard released in 2012 and didn't take into account accessibility. Serious efforts were done to support PDF/UA in iText 5, but we have to admit that the accessibility functionality was bolted on an existing library that wasn't created for that purpose. iText 7 was designed with the production of accessible PDF as a prerequisite. As a side-effect, HTML to PDF conversion is much better in iText 7 than it ever can be with iText 5.

- iText 7 is also the only version that supports the more recent PDF 2.0 standard. Previous versions of iText can only produce files in PDF 1.7 or earlier.

- Another important standard that has evolved concerns digital signature. Be aware that you certainly shouldn't use iText 2 (or earlier, or clones) to create digital signatures because "lowagie" dates from 2009, and all the digital signature standards dating from that time are hopelessly outdated.

For a more complete overview of the history of iText, and of how and why things changed, take a look at the Entreprenerd website.

Answer updated on July 21, 2021: I am no longer affiliated with any of the iText companies since March 2020.

Problem

What is the difference between lowagie and iText? Is this just version difference or an upgrade to the library. Which one is recommended to be used?

Original source