What is the difference between lowagie and iText?

JavaItextOpenpdf

Java Problem Overview


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?

Java Solutions


Solution 1 - Java

Actually, there is no difference: in iText 2.1.0. Create a PDF, go to properties and see "iText 2.1.0 by lowagie.com" )) what seems to have happened in the evolution of the lib is that "lowagie" in the java package name, was replaced with "itextpdf".

That was my first answer. Bruno does not like it )). OK -- so of course, lots has changed over the life of the java lib. What I meant to say is that "lowagie" is the same lib (albeit in an earlier revision) as iText. I think that Bruno is very interested in re-branding the lib and does not want it referred to as lowagie. Fine -- but no need to mince words -- lowagie is iText in a previous version.

Ax, let me try again... there was something, something like an opensource brand/business, they had a web site, it was named after the creater "lowagie.com". and it was a java lib. and when we used it, we saw that the package structure reflected this brand choice "lowagie" as in:

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.PdfStamper;

So, I stand by my answer, and assert that there were two brands being used for iText: iText and lowagie.com. But now clearly, there is a move to get rid of "lowagie" and just stick with iText.

Solution 2 - Java

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.

Solution 3 - Java

This is Eclipse Oxygen Today

So I am editing in Eclipse Oxygen and my List of import suggestions look like this. There is Lowagie!

Solution 4 - Java

As of now, there is also OpenPDF that uses the classes from com.lowagie, so you might also want to consider that some dependency of your project could be depending on OpenPDF.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAdeeb CheulkarView Question on Stackoverflow
Solution 1 - JavatomView Answer on Stackoverflow
Solution 2 - JavaBruno LowagieView Answer on Stackoverflow
Solution 3 - JavatomView Answer on Stackoverflow
Solution 4 - JavanyrygykView Answer on Stackoverflow