Q3 is upon us, and so is the release of iText 7 Suite 7.2.3! The big news this time round is naturally the official release of our reference implementation of iText 7 Core for Android. That’s by no means all we’ve been working on for Core though, with a fix relating to XMP metadata in PDF/A documents, and improved support for SVG image dimensions using exponent notation. We’ve also revised the way PDF streams with indirect references are flushed, and much more.
On the iText 7 add-ons side, probably the most notable is the addition of HEIC image encoding support in pdfRender and there’s also updates to pdfHTML, pdfSweep, and pdfXFA. And of course, there is a new version of iText RUPS to help with your adventures in PDF debugging.
iText 7 Core 7.2.3
First things first: Android! It’s been a while since we officially supported iText on Android; in fact, the last time was back in the iText 5 days when we had an Android variant called “iTextG” – in case you were wondering, the G was for Google – which has not been updated for around 8 years.
Due to the extensive rewrites in iText 7 and the switch to a more modular approach for the iText library, an updated version for Android hasn’t really been a priority for us. Added to which, the differences between plain Java and Android meant there were some pretty significant compatibility issues. So, for Android developers using iText, seemingly the only viable option was to stick with iTextG even though it was a number of versions behind the equivalent Java release of iText 5. Indeed, it has seen a steady rate of downloads which have continued until today.
Despite the incompatibilities, we’ve heard from some of our commercially-licensed customers who have put in the extra work to use iText 7 on Android. And so, we decided to take a look at Android support again with the benefit of using iText 7.2 as a base and the advantages and improvements in newer Android APIs.
The minimum Android API version we support is 27 which is 8.1 (Oreo). We couldn’t go back too far without sacrificing functionality and running into incompatibilities. It is far back enough that Google hadn’t quite run out of dessert-themed names yet though 😊.
There are still some features of iText 7 Core which are not yet fully-functional, and indeed we want to make some of the add-ons in the iText 7 Suite accessible for Android developers as well. There’s still plenty of functionality for manipulating PDF files which already works though, and so we’ve developed a reference implementation to use as a basis for your own projects. The SDK includes some UI components to demonstrate the currently available functionality, as shown in these screenshots from the demo app.
This SDK depends on forked versions of PdfiumAndroid and the AndroidPdfViewer project by barteksc, who has put a ton of effort into its development over the last few years. A big shout out to them for their hard work!
Check out the release notes for details on installing iText 7 for Android from our Artifactory.
In other news for Core, we’ve made some more SVG improvements by adding support for exponent notation using the capital E to specify image dimensions. We’ve prepared a code example to demonstrate this which you can find linked from the release notes.
There’s also a nice change for our open-source users. If a license file is not provided for Core, it assumes AGPL usage and so occasionally a message is printed to
stdout as a reminder. However, if you’re happy that you’re in compliance with the AGPL requirements then seeing this message might become a little annoying after a while. If this is the case, you’ll be pleased to learn that you can disable it, see the example linked from the release notes to learn more.
We’d also like to mention a couple of pull requests. Firstly, a big thank you to carl-di-ortus for submitting a fix for XMP metadata in canonical format causing issues, and thus generating invalid namespace attributes in PDF/A documents. We determined the reported issue was caused by the XML library used by the .NET version of iText 7 not supporting the
0x1F char, however the fix should prevent such XMP metadata causing similar compliance issues when generating PDF/A documents.
In addition, another pull request inspired us to make some improvements to the way PDF streams with indirect references are flushed. Thank you LingMan!
Finally, there’s the usual miscellaneous bugfixes and improvements, which you can find more details of in the Changelog.
As always, the Java and C# source code for the iText 7 PDF library can be found on GitHub, together with all our other open-source projects.
A couple of very nice updates for pdfHTML this time round. There is a fix for the resolving of the
display:none CSS style for flex children, and we’ve fixed an issue with ordered lists where a list symbol could be duplicated when content overflowed onto a second page, causing the symbol to overlap in the converted document.
You now have even more options for rendering PDFs as images as HEIC image encoding support has been added to pdfRender. HEIC (High-Efficiency Image Container) images typically take up around half the space of an equivalent quality JPEG and it is a more efficient and flexible format than PNG.
The format has been gaining popularity since Apple announced it would use HEIC as the default for its operating systems in 2017. Check out the code example linked from the release notes for more information.
Some small, yet significant changes for pdfSweep. We’ve made improvements and additions to the Java and .NET API documentation, see the release notes for more details.
We’ve also updated the
commons-imaging dependency to a stable version from the snapshot that was previously used.
pdfXFA now supports rich text values in form states. You can learn more in the code example linked from the release notes.
As always, all the changes in Core automatically make their way into our PDF debugging tool RUPS. However, if you’ve been following the iText Research Teams recent adventures in livestreaming on our YouTube channel, you might already know we’ve been making some RUPS-specific improvements. If you missed out though, you’ll be happy to learn the structure tree viewer now shows the text inside marked content items, which looks like this:
In addition, RUPS now comes with a Preferences file where you can configure some visual settings, set the default home folder, and allow duplicate files to be viewed. This is just the beginning though, so stay tuned for more developments on this front.
On that note, PDF Association members won’t want to miss the talk from Michaël Demey and Matthias Valvekens “The PDF Detectives” at PDF Days Europe in September. Our Belgian sleuths will be channeling Hercule Poirot and exercising their “little grey cells” to hunt down bugs in PDF documents live on stage, and RUPS is sure to play a crucial role in proceedings!
In fact, iText Software is presenting a whole bunch of talks at PDF Days this year as you can see from the agenda which is packed with interesting talks from the industry’s top experts. As always, the talks should be uploaded later to the PDF Association’s YouTube page. We’ll be sure to let you know when they’re available.
Until next time!