iText

Release iText 7.1.10

iText 7.1.10 brings the first quarterly release of 2020 for the iText 7 family, and coincidentally it's on the day that iText, as a project, turns 20!

Although it's iText's birthday, we are giving away presents left and right, which include new releases of Core, pdf2Data, pdfCalligraph, pdfHTML, pdfSweep, pdfXFA and RUPS (oof, I really had to take a breather there. It's a lot of goodies!) Head on down to the Release Notes to get the details.


Lots of goodies going around! In no particular order:

  • Core now has some improved memory usage, specifically if you are reading big PDF files (check out PdfReader#SetMemorySavingMode(true)), more robust PDF update mechanisms, a better PDF/A document experience, some dependency updates and <marker> support for SVG;

  • pdf2Data has even better table boundary detection;

  • pdfCalligraph has much improved Thai and Gujarati language scripts' support;

  • pdfHTML now supports the lang attribute. This will help with the creation of PDF/UA compliant documents; 

  • pdfSweep had a bug which would remove /ColorSpace when redaction would partially affect an image;

  • pdfXFA has much better dynamic page numbering handling.


Also, a couple of points mostly of interest for our commercial customers:

  • It is now required that the License Key Volume library is loaded if you are a Volume customer;

  • Proxy environment variables will be honored for Volume reporting;

  • If your license expires during runtime, it will revert back to AGPL mode.


New Features

  • [CORE] Allow individual page loading when reading

  • [CORE] Implement scheduledCheck analog for iText Core

  • [CORE] Update BouncyCastle dependency to 1.64

  • [CORE] SVG: Feature: Markers, initial support

Improvements

  • [CORE] Document PdfReader#setMemorySavingMode

  • [LICENSE] the name-case of some test folders differs in Java in .NET 

  • [SAMPLES] Improve CustomBorder3 sample, port CustomBorder4

  • [SAMPLES] Update CounterDemo sample to not use deprecated API and be independent from the version

Bugs

  • [CORE] When filling unmerged fields iText doesn't distinguish field and widget dictionaries

  • [CORE] Digital Signatures: annotation dictionary incorrectly updated when signing a pre-signed document

  • [CORE] Leading spaces are trimmed in form field appearances

  • [CORE] Adding a field to an existing acroform fails when using the PdfDocument append mode.

  • [CORE] Opening, setting tagged and closing an already tagged pdf rewrites the parenttree dictionary

  • [CORE] Problem with PDF/A end page event

  • [PDFCALLIGRAPH] IndexOutOfBoundsException when processing Gujarati text in pdfCalligraph

  • [PDFCALLIGRAPH] Wrong Toners position. TH SarabunPSK font

  • [PDFCALLIGRAPH] Thai accent positioning bug

  • [PDFSWEEP] removes /ColorSpace array

  • [PDFXFA] absPageSpan / absPage functions are supported incorrectly - logical page number is returned instead of absolute one

  • [PDFXFA] duplex pagination is not applied correctly - even pages are missing

  • [CORE] Sharpen: fix documentation porting

  • [CORE] Fix SignUtils class to handle the case when a certificate doesn't have unsupported critical extensions

  • [CORE] svg: set default stroke width to 1 px value

Tasks

  • [CORE] Make sure that all iTextCore tests extend ExtendedITextTest

  • [CORE] Reorganize samples-internal tests: FormFieldTest

  • [CORE] Reorganize samples-internal tests: FormFieldFlatteningTest

  • [CORE] xfdf: move xfdf message constants to XfdfException class

  • [CORE] Add test category to some itextcore tests

  • [CORE] Deprecate IdelOutputStream

  • [CORE] Reorganize samples-internal tests: InlineImageExtractionTest

  • [CORE] Avoid reading page dictionaries in ParentTreeHandler.registerMcr()

  • [CORE] Optimize PdfPagesTree#loadPage()

  • [CORE] Make PdfDocument#tryInitTagStructure protected

  • [CORE] Improve documentation of PdfEncryption

  • [CORE] Improve javadocs of CompareTool

  • [CORE] Incorrect XRef type in compressed PDFs

  • [CORE] Reorganize samples-internal tests: SmartModeTest

  • [CORE] Resolve layout javadoc warnings

  • [CORE] Reorganize samples-internal tests: FloatsComplexTest

  • [CORE] Add test category to some internal-tests and license tests

  • [LICENSE] Rework the ProducerInfoYearsTest.versionYearsTest in the LicenseKey tests

  • [LICENSE] Add test category to licensekey-creation tests

  • [LICENSE] Manually test edge-case scenarios of licensekey-volume library inability to access AWS server

  • [CORE] Reorganize samples-internal tests: PartialCleanUpMultipleImageOccurrencesTest

  • [CORE] Update pdftest module dependency on veraPDF

  • [PDFXFA] Improve documentation for XFAFlattener

  • [SAMPLES] Improve/Port stamper samples

  • [SAMPLES] Incorrect absolute position of the header in the sample result

  • [CORE] sharpen: Resolve minor mistype in TwoDIList.java.txt 

  • [CORE] sharpen: Make sure that iText Javadoc Convention includes all the changes introduce

  • [CORE] Add -Test postfix to some licensekey and signatures tests

  • [CORE] Add tests for "overflow" attribute in svg

  • [CORE] Update year to 2020 in the Copyright headers and project info in all repositories  

  • [CORE] Fix differences between C# and Java test results in ValidationOff012Test

  • [CORE] Fix getNameTree method so that key order is platform-independent

  • [CORE] Make BouncyCastle non-optional dependency of iText Core

  • [LICENSE] Enforce that licensekey-volume dependency is loaded when volume license is used

  • [LICENSE] Add fallback dependencies to itext.licensekey.sln (licensekey .NET repo)

  • [LICENSE] Update dependencies on AWS SDK to allow users specify proxy settings for licensekey volume calls

  • [LICENSE] Add fallback dependencies to itext.licensekey.volume.sln (licensekey-volume .NET repo)

  • [PDFHTML] pdfHTML: convert "lang" attribute into Lang accessibility property for tagged PDF

  • [CORE] Default logger listeners are reset once LogListener's resetLoggingContext is called

  • [CORE] Update logback dependencies in Core and add-ons as the currently used 1.1.3 version has security vulnerabilities

  • [SAMPLES] SamplesWrapperTest: change result output folder to bin folder