Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Interview: Bruno Lowagie on PDFs with iText on Android

DZone's Guide to

Interview: Bruno Lowagie on PDFs with iText on Android

· Java Zone
Free Resource

Just released, a free O’Reilly book on Reactive Microsystems: The Evolution of Microservices at Scale. Brought to you in partnership with Lightbend.

Last year, during Devoxx 2010, I interviewed Bruno Lowagie from iText, which is the free and open source Java library for creating and manipulating PDF documents. That article, published on Java Zone as Interview: Bruno Lowagie on "iText In Action", 2nd Edition, focused on the 2nd edition of Bruno's "iText in Action".

This year at Devoxx, I met Bruno again, at the iText booth, demonstrating the latest features to a group of interested Devoxx attendees:

After his demos, Bruno took a break and I chatted with him on the latest iText developments.

Hi Bruno, so what's happened with iText since this time last year at Devoxx?

Well, last year we set up a company in the US which is doing sales for iText, while this year we created a similar company in Europe. So, we're developing business here too.

And we're investing all revenues into our new developments. We've hired developers to help develop the topics on the iText wishlist.

And what are the topics on the wishlist?

Well, for instance, one item is the ability to create PDFs with iText on Android.

We currently have some small demo apps running on Android:

The real business is applications on tablets such as Android tablets. Business applications are found in this space. Imagine, for example, when you go to a hospital. When you are admitted to a hospital, you need to fill in plenty of forms. If it's not the first time you're there, the hospital already has all your information. In that case, the hospital could use an inexpensive tablet and download all the data already known about the patient onto the tablet and then the patient would be able to complete it or correct it. They can then also put their signature on the form with their finger, then push a button, after which the PDF would be created.

A PDF should be seen as a data container. The patient would then hand the tablet back so that the data can be extracted from the PDF and sent into a database. Applications like that, where creating PDF on Android could be helpful, are where the business really is.

What's some other iText functionality you've been working on?

  • XML to PDF Conversion. One thing promised in the previous interview was better XML to PDF conversion. We've thrown all the old XML functionality away and we've rewritten everything from scratch, resulting in XML Worker. The first XML format we support is XHTML, but now we are working on scalablae vector graphics, meaning direct conversion to output that is print-ready, and we are also adding support for CMYK and spot colors, which is important for the print industry, but not present in SVG. XML Worker is also the basis for our XFA to PDF processor. XFA stands for XML Forms Architecture. It is a way to create dynamic templates for PDF.

  • Digital Signatures. Last year I promised support for PAdES (PDF Advanced electronic signatures). More specifically, support for LTV, which means that you can expand the lifespan of a signed PDF. In a signed PDF, there's a digital certificate with an expiration date. Using LTV, you can add a new certificate to extend the lifespan of the existing certificate.

  • Text Extraction. We already did text extraction but when I presented it last year, it was still new. In the meantime, plenty of bugs have been fixed based on users and customers.

Are you still the main developer of iText?

Well, it's a pity that I can't do as much development as I used to, but it's great to see junior developers come up with ideas that are really great. For example, Jeroen has great plans to deploy iText in the cloud, offering an API to produce PDFs in the cloud through a message broker.

Actually, we bought a house in Gent, Belgium, that will be more or less for interns and students to develop their ideas around iText. In short, it will be our development shack. We even have a couch we can use as a bed where developers can crash for the night!

Instead of a developer, I'm now more involved in doing business, which isn't in my comfort zone, though it is very fun and rewarding to see how iText lives and is useful in many domains.

What are your promises for the next interview? :-)

Well, we've been selected for a program called "Plug & Play", supported by the IBBT, a Flemish government-sponsored organization that aims to encourage and stimulate your enterpeneurs. It means that we can go to Silicon Valley for three months between January and June. The goal of the program is networking, to meet as many companies and potential partners as possible. We're looking forward to fill up our agenda with meetings and find out what the needs are and adapt our development roadmap to meet those needs.

Well, promises. Look at what happens with iText on Android which will mean it will also work with Google App Engine and so we will have a cloud solution.

I am also involved with the NBN (bureau for normalization of Belgium), which means that I receive all the drafts for the new ISO standards for PDF. Actually, I will have my first line in an ISO standard in a couple of months when PDF UA comes out. UA stands for universal accessibility which means the PDF can be read out loud for the visually impaired.

I've also read the draft specification for PDF 2 and one thing that caught my attention is the geospatial PDFs, so where you add functionality to the PDF to visualize maps. I can't promise any developments in this area because developing business in the US and promoting the promises we made last year is now our first priority!

Strategies and techniques for building scalable and resilient microservices to refactor a monolithic application step-by-step, a free O'Reilly book. Brought to you in partnership with Lightbend.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}