What is the difference between lowagie and iText?
Asked Answered
P

4

70

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?

Promptbook answered 22/11, 2012 at 14:50 Comment(0)
A
93

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.

Allowance answered 22/11, 2012 at 15:2 Comment(9)
Your response is just confusing. You should have just stated, right away, that the package name and product name are different. Not everyone is looking for iText. I just wanted to know what the heck packages are being imported into this class I am working with and searched for the package name with 'Lowagie'. All you needed to say was: old versions of iText have this package name structure. Tom's response is much better, sir.Bellyache
@BrunoLowagie - The association between Gosling and Java is not the same, as the package names inside the JDK have never been java.gosling.*Blender
@BrunoLowagie The reason people don't understand is because some of us have never worked with iText before, and aren't the original programmers for our project. I'm working on an application that uses iText, but I wouldn't know that because the package directory doesn't include iText in it at all - just a reference to your last name. You should probably just explicitly say that the package refers to the developer of iText - IE, you. ;)Merrell
If you read the source code headers, you clearly see my name. When using iText, it is a minimum requirement that you read the license. When you read the license, you see my name ;-)Allowance
@sudhir In short: if you are looking for API documentation for the "lowagie" software, you shouldn't find much info anymore because you shouldn't be using that software anymore. I'll explain all of this tomorrow at the Great Indian Developer Summit in Bangalore.Allowance
@BrunoLowagie - its not that easy to stop using it.. we use jasper reports and that depends on lowagie versions of IText, we cant remove jasper, neither replace it that easily.. you know things doesnt change that easily in corporations.Solute
@sudhir if you're using JasperReports, then it's TIBCO's responsibility to upgrade. If you're using JasperReports, then there's also no reason why you'd need the Javadocs / API because JasperReports is taken care of the PDF creation process.Allowance
@BrunoLowagie there are some dependency conflicts with other libraries, and i wanted to know which version of iText some method was introduced etc..Solute
@sudhir if you look at the POM file of a project, you get all the version numbers that are required to avoid dependency errors. I am not aware of any errors in the iText POM files. Jaspersoft may be using versions of iText that are no longer available.Allowance
A
113

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.

Alkaloid answered 19/5, 2014 at 15:46 Comment(5)
I appreciate this comment much more than the comment by Mr Lowagie. Thanks for providing the changelog notes from the 5.0.0 Version stating the package name changed. Now I know its the same product, just a newer/better version that I can decide on purchasing.Blender
@BrunoLowagie - Changing Toms answer seems to stretch the rules of stackoverflow edits. While you initially gave an "accurate" answer to the question about lowagie being a family name, it was most unhelpful. Until I found this post I associated lowagie with the iText libraries but thank you for correcting that misunderstanding. I would like to say the current answer you have provided is clear and helpful. In your defense, the question should have been more accurately written "What is the difference between the libraries in the iText package com.lowagie and com.itext".Blender
right. i, as @Revoman, and i would guess also like the person who asked this question, and (i would guess) like many others, we have (had) a branding confusion. the question goes something like "hey, i see this "lowagie brand, and i see this itext brand, are they the same thing?" and the answer is yes!!! it is one and the same pdf manipulation/creation library )))) simple ))). but now itext has chosen to remove "lowagie" from the package name/branding. simple answer.Alkaloid
oh -- there is a big assumption here that should be clearly stated -- in java, the package name, at least historically, has reflected a brand decision. in other words, we "call" the java app/lib by a name which we see in the java namespace. the only exception i can think of off hand is source forge hosted apps. but even then people quickly state their brand/www domain, as in net.sf.jasperreports.engine.export.AbstractPdfTextRendererAlkaloid
in a maven pom.xml there is an element called groupid which is "the unique identifier of the organization or group that created the project". As you can see from repo1.maven.org/maven2/itext/itext/1.3.1/itext-1.3.1.pom that organization was com.lowagie and is now itext.Alkaloid
A
93

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.

Allowance answered 22/11, 2012 at 15:2 Comment(9)
Your response is just confusing. You should have just stated, right away, that the package name and product name are different. Not everyone is looking for iText. I just wanted to know what the heck packages are being imported into this class I am working with and searched for the package name with 'Lowagie'. All you needed to say was: old versions of iText have this package name structure. Tom's response is much better, sir.Bellyache
@BrunoLowagie - The association between Gosling and Java is not the same, as the package names inside the JDK have never been java.gosling.*Blender
@BrunoLowagie The reason people don't understand is because some of us have never worked with iText before, and aren't the original programmers for our project. I'm working on an application that uses iText, but I wouldn't know that because the package directory doesn't include iText in it at all - just a reference to your last name. You should probably just explicitly say that the package refers to the developer of iText - IE, you. ;)Merrell
If you read the source code headers, you clearly see my name. When using iText, it is a minimum requirement that you read the license. When you read the license, you see my name ;-)Allowance
@sudhir In short: if you are looking for API documentation for the "lowagie" software, you shouldn't find much info anymore because you shouldn't be using that software anymore. I'll explain all of this tomorrow at the Great Indian Developer Summit in Bangalore.Allowance
@BrunoLowagie - its not that easy to stop using it.. we use jasper reports and that depends on lowagie versions of IText, we cant remove jasper, neither replace it that easily.. you know things doesnt change that easily in corporations.Solute
@sudhir if you're using JasperReports, then it's TIBCO's responsibility to upgrade. If you're using JasperReports, then there's also no reason why you'd need the Javadocs / API because JasperReports is taken care of the PDF creation process.Allowance
@BrunoLowagie there are some dependency conflicts with other libraries, and i wanted to know which version of iText some method was introduced etc..Solute
@sudhir if you look at the POM file of a project, you get all the version numbers that are required to avoid dependency errors. I am not aware of any errors in the iText POM files. Jaspersoft may be using versions of iText that are no longer available.Allowance
A
1

This is Eclipse Oxygen Today

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

Alkaloid answered 25/7, 2019 at 19:7 Comment(2)
This only indicates that you have an ancient itext version in your class path.Kirkland
or (and) it indicates that eclipse oxygen ships with such an old lib? but good thing that itext has a list, always need one of those...Alkaloid
S
0

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.

Scifi answered 30/7, 2020 at 8:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.