Qt is a free and open-source widget toolkit for creating GUI and Cross platform applications that runs on various hardware and software with little or no changes in the underlying codebase while still being a native application with native capability and speed.

Qt is a huge ecosystem. It supports C++, Python and JavaScript through Qt QML. It also has support for GO and R through community support. Qt has been around for over 25 years and has always been evolving with a over a million developers in its community. Qt is open source under the LGPL license, but also has a commercial version. Some of the apps built with Qt includes VLC Player, Unity 2D, Google Earth, Scribus, Autodesk Maya.

Qt PDF Module contain classes for rendering and navigating PDF. QtPDF is a wrapper around PDFium which supports rendering, navigating pages, bookmarks, links, document metadata, search, text selection and copying to clipboard. It includes image plugin so that most image-viewing applications can view PDF files too. Qt Pdf is limited on control and functionality and requires third-party library for executing more control over the output or modify existing pdf.

Some Third Party Includes

  1. Poppler-qt4
  2. Hummus
  3. PoDoFo

Performing more advance features requires converting to rich text format or other document format Qt can handle more extensively. Some third-party converter includes

  1. Poppler-Utils
  2. Inkscape

 wkhtmltopdf : Is a popular toolkit for converting html to pdf. It also uses Qt webkit rendering engine.

This also accounts for some of the popularity associated with the use of Qt.

Summary:

Qt is a large ecosystem widely used in the industry to build robust cross platform application. It has a PDF module basically for rendering and navigating PDF files, lacking control, editing and modifying functionality. It also has third party libraries that allows for editing and modifying thereby more control and functionality.

Achieving more advance functionality e.g reading QR codes from PDF files will require, a combination of more than one other third party library with lots of hours lost in research, experimenting and development.

Qt is popular because what most user want is to just output a PDF file which QtPDF does well enough. And this option is easier and more natural for them because its already in their code infrastructure, so it can be easily integrated at no additional licensing cost.

Secondly the wkhtmltopdf is one of the most widely used toolkit for converting html to pdf, and it also uses the Qt webkit rendering engine, it comes at no extra cost and satisfices the users needs which in most case is rendering and converting non-confidential documents e.g receipts, order summary to PDF.

I think it accounts more for the Qt popularity seen during our scouting activities.

iText have the following advantages

  1. More Robust with all the tools required to create and manipulate PDF document without any third-party library integration, thereby saving time and effort.
  2. iText is secure with predictable behavior, thereby more suitable for the enterprise environment and government, where security and consistency is important.
  3. iText allows more control over PDF document allowing more advance rendering, especially in use cases where lots of data is being manipulated.
  4. iText is mature and works out of the box

Qt Advantages

  1. A simple tool for creating PDF document especially in the Qt Ecosystem.
  2. Free and less stricter licensing than iText.
  3. Meets the needs of most users, who just want to output a PDF.
  4. Natural choice for user of the Qt Framework with simple need
  5. Wkhtmltopdf which uses the Qt rendering engine allows for easy easy convertion of html to pdf

Qt Disadvantages

  1. Simple, and lacks more advance features and control e.g modifying documents which might be needed in a more advanced use case.
  2. Not secure enough for security critical systems.
  3. Requires third-party library to perform some editing functionality.
  4. Requires more time and effort to modify documents.
  5. Is immature and requires lot of trial and error to accomplish a slightly advance task.

Leave a comment