Differencebetween Lowagie and Itext

What is the difference between lowagie and iText?

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.

What is the Difference between ITEXT and ITEXTPDF?

I see 3 questions. I will answer only 2 of them, for the third question you need to open a new topic on Stack Overflow.

These are your questions as I see them:

  1. What is the difference between itext and itextpdf?
  2. What am I missing in my dependency upgrade?
  3. Why have my barcodes stopped working?

1. Difference between itext and itextpdf

tl;dr: there is no difference!

I would also like to refer you to these duplicate questions:

  • Difference between com.lowagie.text and iText 2.1.7 JAR?
  • What is the difference between lowagie and iText?

Longer answer:

iText is a PDF library for Java which was originally developed by Bruno Lowagie. You can still see that in the old versions of iText (prior to 5.0.0), the packages are called com.lowagie.* Some years ago, Bruno Lowagie founded a company around his iText product, iText Software. At the time the domain name itext.com was not available, so he registered itextpdf.com. Starting from version 5.0.0, the package names were renamed from com.lowagie.* to com.itextpdf.*. It is a common practice to name your packages after the reverse of your domain name.

As a crude rule of thumb:

  • Versions 1.x.x and 2.x.x = com.lowagie.* = developed by Bruno Lowagie
  • Versions 5.x.x and 7.x.x = com.itextpdf.* = developed by iText Software
  • Versions 4.x.x = released by someone unknown, unrelated to iText Software. Not an official release. Do not use.

2. What is missing in the dependency upgrade

  • Only use version 5.5.10.
  • Delete all other versions.
  • Check your code for import com.lowagie and replace with import com.itextpdf.
  • Fix any compilation errors.

3. Why have your barcodes stopped working

I don't know. Open a new topic on Stack Overflow and add enough code so anyone can reproduce your issue. Please read How to create a Minimal, Complete, and Verifiable example

Incompatibility between TornadoFX and lowagie iText

I found the problem. Was "Invalid signature file". I put this command in gradle file and the problem was solved

exclude 'META-INF/.RSA', 'META-INF/.SF','META-INF/*.DSA'

iTextSharp vs iText

Releases

iText 7.x is the latest version of the library, and the comparison breaks down as follows as detailed in iText's changelog
:

  • iText 0.x (Java) (2000-2006)
    • The very first version of iText was released on Valentine's Day 2000. That means that iText is 17 years old.
  • iText 1.x-2.x (Java) / iTextSharp 3.x-4.x (.NET) (2006-2009)
    • Versions of the library that are very popular, but that are no longer supported and should no longer be used in a commercial context (see Can iText 2.1.7 / iTextSharp 4.1.6 or earlier be used commercially?).
    • The last release of these versions dates from 2009 (iText 2.1.7 / iTextSharp 4.1.6.0).
  • iText 5.x (Java) and iTextSharp 5.x (.NET) (2009-2016)
    • In 2009, the license changed from the LGPL/MPL to the AGPL.
    • iTextSharp was designed as the .NET port of the library and the release numbers were synchronized at the moment iText 5.0.0 / iTextSharp 5.0.0.0 was released.
    • In Java, the library moved to Java 5.
    • It was the start of professionalization. The library was backed by a company and the revenue was used to focus on fixing bugs, standardization, and performance.
  • iText 7.x (Java & .NET) (2016-present)

    • A complete rewrite, focusing on extensibility and modularity.
    • We no longer talk about iTextSharp, we talk about iText for Java and iText for .Net (C#).
    • The Java version moved to Java 7.
    • Before, all code was manually ported from Java to C#. Starting with iText 7, Java code is automatically ported to C#.

iText vs iTextSharp

As you can tell from the historical overview, iTextSharp has always been kept in sync with iText, but before version 5, there was a difference in version numbers. Starting with version 7, the name iTextSharp is no longer used in favor of using the name iText.

iText 2.x (and earlier) vs iText 5.x

You can see a functionality comparison chart of the both iText and iTextSharp products below :

Sample Image

iText 5.x vs iText 7.x

iText 7.x appears to be a complete "from scratch" re-write of iText 5.x in order to make it more modular, configurable, and extensible.

You can find a blog post here that details many of the changes between iText 5.x and iText 7.x.

What is the difference between ScaleAbsolute and ScaleToFit?

ScaleAbsolute fully scales the image to the given dimensions ignoring the aspect ratio of the original image.

ScaleToFit scales the image keeping the aspect ratio. Thus, usually only one dimension ends up as the respective given size while the other dimension is smaller.



Related Topics



Leave a reply



Submit