itext/itext-java
iText for Java represents the next level of SDKs for developers that want to take advantage of the benefits PDF can bring. Equipped with a better document engine, high and low-level programming capabilities and the ability to create, edit and enhance PDF documents, iText can be a boon to nearly every workflow.
📦 Other Stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our [GitHub](https://github.com/itext/) you can find a ton of useful up-to-date samples in the following repos:
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 3 more
✨ New Features
- DEVSIX-9361 – Easily create WTPDF
- DEVSIX-9364 – Perform Color Contrast checks for PDF/UA
- DEVSIX-9626 – Create an implementation for non-EU trusted lists processing
📦 Improvements
- DEVSIX-9675 – Online data retrieval customization during signature validation
- DEVSIX-9727 – Certificate chain building must take multiple CA candidates into account
- DEVSIX-9746 – CertificateChainValidator must check name constraint
- DEVSIX-9719 – PdfLayers are always on when reopening document and accessing them through pdfPage.getLayers()
🐛 Bug Fixes
- DEVSIX-9678 – Unexpected behavior of MemoryLimitsAwareHandler
- DEVSIX-9796 – Type3 Font not processed correctly (missing glyphs) when there are multiple glyphs with same unicode mapping
- DEVSIX-9455 – DA entry is removed from signature field during signing
- DEVSIX-9817 – Copying converted file using iText causes PdfException: Object belongs to other PDF
- DEVSIX-4742 – Throw specific error for an annotation missing a subtype.
- DEVSIX-9231 – Generic NRE is thrown when converting from PDF to PDF/A
📦 Contributors
- We’d like to shout out the following contributors for this release:
- Core team
- [Eugene Bochilo](https://github.com/GrimySoal)
- [Dmitry Chubrick](https://github.com/introfog)
- [Angelina Pavlovets](https://github.com/AnhelinaM)
- [Alexandr Pliushchou](https://github.com/aapsasha)
- [Vitali Prudnikovich](https://github.com/vitali-pr)
- [Dmitry Radchuk](https://github.com/denighte)
- + 23 more
📦 Support for Brotli Compressed PDF Streams
- In this release we’ve added proof‑of‑concept support for reading and writing PDFs that use Brotli compression, including a new filter handler and corresponding high‑level API hooks.
🐛 Bug Fixes and Miscellaneous
- Support for East Asian (Japanese) line‑breaking rules in the layout module was added to avoid orphan punctuation at the beginning of lines, improving typography for Japanese text.
- We also investigated and resolved an issue with form filling and flattening introduced after version 9.0.0, after a customer reported a regression in performance.
- A bug in calculating the maximum number of XRef elements was fixed, avoiding potential overflow issues in large documents.
- We fixed an issue preventing OCG layers from being added, modified, or removed in append mode was fixed, including when no prior OCG layers existed.
- A bug when validating a PDF signature was resolved, where iText did not use OCSP/CRL responses that were added to the document’s DSS in a non-timestamped revision.
📦 Other Stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our [GitHub](https://github.com/itext/) you can find a ton of useful up-to-date samples in the following repos:
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 3 more
✨ New Features
- DEVSIX-9471 - Implement POC with Bouncy Castle for Post-Quantum algorithms
- DEVSIX-9578 – Brotli compression POC (reading/writing Brotli‑compressed PDFs).
- DEVSIX-9587 – Brotli compression/decompression test coverage.
- DEVSIX-9594 – Update embedded Brotli decoder (Google upstream).
- DEVSIX-9608 – GraalVM support for Brotli compressor.
- DEVSIX-9531 - Samples for Ukraine and Moldova trusted lists
- DEVSIX-8978 – Japanese line‑breaking rules.
📦 Improvements
- DEVSIX-9567 – Correct handling of unencrypted metadata in encrypted PDFs.
- DEVSIX-9599 – Unified output‑stream “finish” API and encryption handling.
- DEVSIX-9405 – Preserve original exceptions for TIFF image errors.
- DEVSIX-9641 – Prevent endless recursion in digital signature validation.
- DEVSIX-9616 – Extended PAdES integration test suite.
- DEVSIX-9610 – Improved DSS change detection and timestamp validation (PAdES).
- DEVSIX-9602 – Tests for modern/post‑quantum signing algorithms.
- DEVSIX-9600 – Compare PAdES validation with eSigDSS.
- + 2 more
🐛 Bug Fixes
- DEVSIX-9623 - CalculateMaxElementsInXref casting from long to int
- DEVSIX-9597 - OCG layers can't be added in append mode
- DEVSIX-9586 – Infinite layout loop in list + keep‑together scenario.
- DEVSIX-9637 – NullReferenceException with nested tables and keep‑together.
- DEVSIX-6486 – Stricter validation of transformation matrix length.
- DEVSIX-9623 – Fix casting when computing max XRef elements.
- DEVSIX-9179 – More robust structure trees after merges (avoid NPEs).
- DEVSIX-9525 - Use OCSP/CRL responses from the latest revision of the document
📦 Contributors
- We’d like to shout out the following contributors for this release:
- Core team
- [Eugene Bochilo](https://github.com/GrimySoal)
- [Dmitry Chubrick](https://github.com/introfog)
- [Angelina Pavlovets](https://github.com/AnhelinaM)
- [Alexandr Pliushchou](https://github.com/aapsasha)
- [Vitali Prudnikovich](https://github.com/vitali-pr)
- [Dmitry Radchuk](https://github.com/denighte)
- + 22 more
📦 **Signature Profiles Support**
- We’ve also made a change to LOTL validation reports to eliminate multiple successful validation messages during the process, along with some general improvements to LOTL caching and validation.
📦 **Extending Flex Layout Support**
- This release significantly improves the flex layout support in the core Layout module. Since this primarily affects pdfHTML, you’ll find more details in the release notes for pdfHTML 6.3.0.
📦 Other Stuff
- As always, you can see the Changelog below to see the full rundown on what’s new in Core, and details of other improvements and bug fixes for this release.
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 3 more
✨ New features
- DEVSIX-9287: Be able to resize pages
- DEVSIX-9419: Signature profiles
📦 Improvements
- DEVSIX-9288: Support more of flexlayout
🐛 Bug fixes
- DEVSIX-2454: The color depth 2 is not supported
- DEVSIX-2941: Extracted Indexed monochrome PDF image image gets color inverted
- DEVSIX-2943: The color depth 4 is not supported
- DEVSIX-3634: When several Unicode characters map to a single glyph in a font, iText creates /ToUnicode mapping mapping only to one Unicode which distorts the original text on text extraction
- DEVSIX-3937: GlyphLine substitutions override font program's glyph unicode mapping
- DEVSIX-9128: FontProgram.getSubset is not thread safe
- DEVSIX-9202: PR: Fix bug: dont remove parent just because children is empty
- DEVSIX-9269: Spike: PR: Fix for NotSupportedException if AreaBreak is inside a flex container
- + 1 more
📦 Contributors
- We’d like to shout out the following contributors for this release:
- Core team
- [Eugene Bochilo](https://github.com/GrimySoal)
- [Dmitry Chubrick](https://github.com/introfog)
- [Angelina Pavlovets](https://github.com/AnhelinaM)
- [Alexandr Pliushchou](https://github.com/aapsasha)
- [Vitali Prudnikovich](https://github.com/vitali-pr)
- [Dmitry Radchuk](https://github.com/denighte)
- + 22 more
📦 EU Trusted Lists in Validation
- You can find full details on this implementation and its usage linked in the [release notes](https://kb.itextpdf.com/itext/release-itext-core-9-3-0) on the iText Knowledge Base.
🐛 Bug Fixes and Miscellaneous
- We’ve also fixed an issue related to color depth support in PDF image data streams, which would result in an `com.itextpdf.io.exceptions.IOException: The color depth 1 is not supported.` error.
- We’ve also resolved a StackOverflowException resulting from invalid PDFs with cyclic references in the trailer dictionary, improving robustness and error handling.
📦 Other Stuff
- As always, you can see the Changelog below to see the full rundown on what’s new in Core, and details of other improvements and bug fixes for this release.
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 3 more
✨ New features
- DEVSIX-9161 – EU Trusted Lists in Validation.
📦 Improvements
- DEVSIX-9277 – Optimized .NET Metadata parsing.
- DEVSIX-9019 – Improved thread safety in the core library.
- DEVSIX-8596 – Advances compatibility with MAUI and .NET deployment models.
🐛 Bug fixes
- DEVSIX-9203 – Stack Overflow fix when opening certain PDFs.
- DEVSIX-8614 – Fixed issues with unsupported 1-bit color depths.
- DEVSIX-8864 – PDF/UA-2 Destination Support.
📦 Contributors
- We’d like to shout out the following contributors for this anniversary release:
- Core team
- [Eugene Bochilo](https://github.com/GrimySoal)
- [Dmitry Chubrick](https://github.com/introfog)
- [Angelina Pavlovets](https://github.com/AnhelinaM)
- [Alexandr Pliushchou](https://github.com/aapsasha)
- [Vitali Prudnikovich](https://github.com/vitali-pr)
- [Dmitry Radchuk](https://github.com/denighte)
- + 22 more
📦 Other Stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our [GitHub](https://github.com/itext/) you can find a ton of useful up-to-date samples in the following repos:
- As always, you can see the Changelog below to see the full rundown on what’s new in Core, and details of other improvements and bug fixes for this release.
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- + 4 more
✨ New features
- Automated checks for PDF/UA-2 Validation
- Introduce PDF 2.0 tag structure checker
📦 Improvements
- toLowerCase/toUpperCase locale independent usage
- Added copyright attribution clarification for jsoup-related files
🐛 Bug fixes
- Cell with non breakable content and not enough horizontal space leads to page break and data loss
- Font selection breaks tag structure
- BitsPerComponent: 1 and Indexed DeviceRgb failes with "The color depth 1 is not supported error."
- Wrapping ListItem content in a Div with list symbol inside causes wrongly aligned content
- KeepWithNext property causing formatting issue
- PDF 2.0 does not allow DIV, P tags to be children of the P tag
- PDF 2.0 does not allow P, Hn tags to be children of the Form tag
- PDF 2.0 documents should not contain Document tag if it does not contain any content
- + 9 more
📦 Contributors
- We’d like to shout out the following contributors for this anniversary release:
- Core team
- [Eugene Bochilo](https://github.com/GrimySoal)
- [Dmitry Chubrick](https://github.com/introfog)
- [Angelina Pavlovets](https://github.com/AnhelinaM)
- [Alexandr Pliushchou](https://github.com/aapsasha)
- [Vitali Prudnikovich](https://github.com/vitali-pr)
- [Dmitry Radchuk](https://github.com/denighte)
- + 22 more
🐛 Bug Fixes and Miscellaneous
- There’s an update for merge handling when remote and embedded go-to actions are present, and we resolved a customer issue related to decoding Xref streams with missing bytes.
- Many bugs have been resolved for SVG rendering and CSS layout. In addition, general bugfixes have been made to font and text handling, form fields, signing and validation, and more.
📦 Other Stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our [GitHub](https://github.com/itext/) you can find a ton of useful up-to-date samples in the following repos:
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 4 more
✨ New features
- Implement Text \- Advanced Fonts
- SVG Text text-decoration
- Clipping paths on text
- Support ‘marker-mid’ property
- Support underlined text, dashed lines
- Pass markers from \<g\> element to its children
- Support display none and visibility hidden (except text)
📦 Improvements
- Table performance improvements
- Typography usage in SVG
- Support relative sized SVG in img and object HTML elements
- Support ‘direction’ property
- Text position improvements
- Add default fonts to BasicFontProvider for SVG
- Check childLength calculations with several fonts
- Text Whitespace handling
- + 11 more
🐛 Bug fixes
- BIDI is not correct when converting SVG
- \<polygon\>: tops of figures are cut
- Fix percent width\&height resolving of top level SVG when it is used from html
- Improve relative values support
- Support color related style attribute and values for SVG image
- Division by zero in AbstractBranchSvgNodeRenderer\#calculateAndApplyViewBox results in NPE at
- PdfFormXObject\#calculateBBoxMultipliedByMatrix level
- SVG transformation matrix applied incorrectly
- + 14 more
📦 Contributors
- We’d like to shout out the following contributors for this anniversary release:
- Core team
- Eugene Bochilo
- Dmitry Chubrick
- Angelina Pavlovets
- Alexandr Pliushchou
- Vitali Prudnikovich
- Dmitry Radchuk
- + 22 more
🐛 Bug Fixes and Miscellaneous
- We fixed an edge-case bug in Certificate Revocation List validation. When a CRL response existed, but its issuer was neither trusted, nor self-signed, it could result in a stack overflow error.
- In addition, a fix was made to SVG rendering to honor `dy` attributes in parent text attributes.
📦 Other Stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our [GitHub](https://github.com/itext/) you can find a ton of useful up-to-date samples in the following repos:
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 4 more
✨ New features
- Support ISO/TS 32004:2024 \- Integrity protection in encrypted documents in PDF 2.0 (PDF MAC)
- Support ISO/TS 32003:2023 \- AES-GCM in PDF 2.0
- Finalized validation module
- Develop API to get used layers in a page
📦 Improvements
- Support RSASSA-PSS encryption in BC fips mode on .NET
- PDF/UA and signing
- SignatureValidator doesn't work with encrypted documents
- Support linearized PDF files in PdfRevisionReader
- When rebuilding xref, log more detailed info
- Support single signature validation
🐛 Bug fixes
- Improve API of RegexBasedLocationExtractionStrategy
- Valid CRL having verifiable issuer results in StackOverflow
- SVG dy attribute not honoured
📦 **Better Handling of Broken PDFs**
- Errors in cross-reference (xref) tables are a common reason for corrupted PDF documents, and iText will now provide more detailed log information when xref tables need to be rebuilt.
🐛 **Bug fixes and miscellaneous**
- A discrepancy in the Java and .NET implementations of RSASSA-PSS support was found where the algorithm parameters for .NET were being ignored, leading to an incorrect signature. This is now fixed.
- Finally, we upgraded our testing framework from JUnit 4 to JUnit 5, and adapted our automated tests.
📦 Other stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our GitHub you can find a ton of useful up-to-date samples in the following repos:
- Java
- [https://github.com/itext/itext-publications-examples-java](https://github.com/itext/itext-publications-examples-java)
- [https://github.com/itext/itext-publications-book-java](https://github.com/itext/itext-publications-book-java)
- [https://github.com/itext/itext-publications-signing-examples-java](https://github.com/itext/itext-publications-signing-examples-java)
- [https://github.com/itext/itext-publications-signatures-java](https://github.com/itext/itext-publications-signatures-java)
- [https://github.com/itext/itext-publications-highlevel-java](https://github.com/itext/itext-publications-highlevel-java)
- [https://github.com/itext/itext-publications-jumpstart-java](https://github.com/itext/itext-publications-jumpstart-java)
- + 3 more
✨ New features
- Dedicated high-level validation API
- Support multiple CRL distribution points per certificate
- Support revision comparison according to DocMDP standard
- Support revision comparison according to FieldMDP standard
📦 Improvements
- General improvements to handling and repair of broken or defective PDFs
🐛 Bug fixes
- RSASSA-PSS parameters are ignored in .NET
📦 GraalVM Native Image Support
- As you can see on https://www.graalvm.org/native-image/libraries-and-frameworks/, the iText Core libraries are listed as tested with this technology.
- Resource Efficiency: They are cheaper to run, since they use a fraction of the resources required by a Java Virtual Machine.
- Fast Startup: Native Image executables start in milliseconds.
- Immediate Peak Performance: They deliver peak performance immediately, with no warmup.
- Efficient Deployment: Native executables can be packaged into lightweight container images for fast and efficient deployment.
- Reduced Attack Surface: Since they only include the code required at runtime, native executables present a reduced attack surface.
- As you can imagine, this opens up a world of possibilities for iText applications and we’re looking forward to seeing what you can do with it. So, if you develop anything cool, let us know!
📝 Read and Roll Back Document Revisions
- We’ve added some functionality in the `kernel` and `sign` modules which enable iText to parse and gather the revisions to a signed document, and roll back to a previous version if necessary.
📦 Other stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our GitHub you can find a ton of useful up-to-date samples in the following repos:
- Java
- https://github.com/itext/itext-publications-examples-java
- https://github.com/itext/itext-publications-book-java
- https://github.com/itext/itext-publications-signing-examples-java
- https://github.com/itext/itext-publications-signatures-java
- https://github.com/itext/itext-publications-highlevel-java
- https://github.com/itext/itext-publications-jumpstart-java
- + 3 more
✨ New features
- Introduce continuous GraalVM Native Image support
- Additional PDF/UA creation APIs and checks
- Implemented IAccessibleElement on form fields
- Improve OCSPVerifier logic
- Add functionality to parse different document revisions
📦 Improvements
- Correct tagging for interactive form fields
- Update bouncy castle version to 1.78
🐛 Bug fixes
- Fix ListBoxField infinite loop
- Fix Font changing after special character
- Fixed not selecting an appropriate font if the character is neither first nor significant
- Tagged PDF: fix underline handling
📦 Other stuff
- Don’t forget that in addition to the resources on our Knowledge Base, on our GitHub you can find a ton of useful up-to-date samples in the following repos:
- Java
- https://github.com/itext/itext-publications-examples-java
- https://github.com/itext/itext-publications-book-java
- https://github.com/itext/itext-publications-signing-examples-java
- https://github.com/itext/itext-publications-signatures-java
- https://github.com/itext/itext-publications-highlevel-java
- https://github.com/itext/itext-publications-jumpstart-java
- + 3 more
✨ New features
- Finalized PAdES Signing high-level API
- Two-step/asynchronous signing
- Improved logic for missing certificates in chain
- Introduced support for PDF/UA-2
📦 Improvements
- SVG: Support stroke-dasharray attribute and CSS property
- Update bouncy castle FIPS version to 1.0.2.4 on Java
- Customize signature orientation
- Pages counter works incorrectly when keep_together property value changed during first layout
🐛 Bug fixes
- Text extraction issue if ToUnicode cmap contains not default codespace ranges
- Text extraction produces invalid text
- Problem with creating incremental updates to hybrid-reference files
The iText 7 Core 7.2.6 release is a maintenance release for iText 7.2.x which includes some recent CVE mitigations and backports from 8.0.x releases. It addresses two CVE issues ([CVE-2023-6299](https://nvd.nist.gov/vuln/detail/CVE-2023-6299), [CVE-2023-33201](https://nvd.nist.gov/vuln/detail/CVE-2023-33201)) which were fixed in the release of iText Core 8.0.2. We've also backported the bouncy castle update to 1.75 version.
The iText 7 Core 7.1.19 release is a maintenance release for iText 7.1.x which includes some recent CVE mitigations and backports from 8.0.x releases. It addresses two CVE issues ([CVE-2023-6299](https://nvd.nist.gov/vuln/detail/CVE-2023-6299), [CVE-2023-33201](https://nvd.nist.gov/vuln/detail/CVE-2023-33201)) which were fixed in the release of iText Core 8.0.2. We've also backported the bouncy castle update to 1.75 version.
📦 PDF/A-4 support
- Plus, it simplifies the handling of digital signatures. Which leads us nicely into:
✨ New Features ##
- PDF/A-4 family support
- Introduced higher level signing API
- High-level API for annotation flattening
📦 Improvements ##
- Create default implementation for IExternalSignatureContainer
- Signature appearance improvements
🐛 Bug Fixes ##
- KeepTogether property set on table might lead to infinite loop
- PDF with Missing Dict Causes Exception
- Incorrect processing of table cells with large rowspan occupying more than one page
- Row span doesn't carry the Cell color to next page
✨ New Features
- Algorithm agnostic signing/validation
- Support for flex-wrap: wrap property and value
- Add ability to customize form related implementations
📦 Improvements
- Improved PdfFormField regeneration handling
- Several improvements to font-asian module
🐛 Bug Fixes
- Fixes for incorrect checkbox handling
- Flex item with nested floating element processed incorrectly
- PdfPageFormCopier improvements tagging issue
✨ New features
- RSASSA-PSS support
- Add support for recently published ISO extensions to digital signing
- Add support for FIPS 140-2 compliant Bouncy Castle module
📦 Improvements
- Improve Checkbox behavior on Adobe Acrobat for PDF/A documents
- Support for TIF images with CCITT T.4 compression
🐛 Bugs
- Text extraction with non-identity CMaps occasionally produces wrongly decoded output
Happy 2023 everyone! Thanks to our regular quarterly release schedule, the start of a new year also means you can expect a new release of your favorite open-source PDF library: iText Core 7.2.5! That's not all though, since if you read our blog you'll know that a brand-new version of iText is in the works. **iText 8 is coming**, and our development team are hard at work adding new features and revising the API to make it even more intuitive for developers. You can learn about some of the things we have planned in our release blog, but customers can get a sneak-peak by checking out the [8.0 snapshots from our Artifactory](https://repo.itextsupport.com/ui/repos/tree/General/snapshot). Things could still break or change in the API before release though, so be warned! As for iText Core 7.2.5 though we've still got plenty of neat stuff to talk about, so let's get right into it. A change in the way documents are opened means you should see a significant performance increase when opening or processing PDFs. In addition, we’ve improved Core’s resilience when dealing with PDFs with incorrect or malformed cross reference (xref) tables. Previous versions would already do a pretty good job of rebuilding invalid xrefs when opening a document. However, issues could still be encountered when a trailer containing references to an object was located before the actual object’s location, for example in linearized PDFs with corrupted xrefs. Cases like these should now be resolved. The wrapping of text elements inside Paragraph objects has been improved to fix problems with spaces at the beginning or end of lines. See the example linked below for more information. Support for TIFF images has been updated and extended to include more CCITT compression types. Images using the [T.4](https://www.itu.int/rec/T-REC-T.4-200307-I/en) compression standard are now supported in Core. Finally, a bug relating to merging documents has been resolved. In previous versions, layers with identical names would be discarded when merging with [useSmartMode()](https://api.itextpdf.com/iText7/java/7.2.5/com/itextpdf/kernel/pdf/WriterProperties.html#useSmartMode--), even when the layers were assigned to different pages in the document.
The iText 7 Core 7.1.18 release is a maintenance release for iText 7.1.x which includes some recent CVE mitigations and backports from 7.2.x releases. It addresses two CVE issues ([CVE-2022-24196](https://nvd.nist.gov/vuln/detail/CVE-2022-24196), [CVE-2022-24197](https://nvd.nist.gov/vuln/detail/CVE-2022-24197)) which were fixed in the release of [iText 7 Core 7.2.2](https://kb.itextpdf.com/home/it7kb/releases/release-itext-core-7-2-2). In addition, we've also backported a fix from our [7.2.1](https://kb.itextpdf.com/home/it7kb/releases/release-itext-core-7-2-1) release which fixes improper nesting of canvas operators when converting SVG to PDF by supporting q/Q Operators inside BT/ET text blocks and objects.
📦 Improvements
- Updated jackson-databind dependency to 2.13.4
- PDF/A: Add check for Default Color Space
- Implement chainable API to neutralize tagging on specific layout elements
- Implement PDF Type 0 (Sampled) Functions (chapter 7.10.2 of 32000-1_2008)
- In the method ImagePdfBytesInfo.decodeTiffAndPngBytes when the colorspace is a separation color space don't throw an exception but recalculate the image pixels to the alternate colorspace of the separation color
- Update CMap files in font-asian package
🐛 Bugs
- Smart mode copying merges GoTo actions with different explicit destinations into a single PDF object
- PdfDocument.copyPagesTo was creating corrupt PDFs when there was a button widget whose action is to jump to another page within the same document
- When merging using UseSmartMode() layers with identical names were discarded
- Result of text extraction differs from the original document text for CJK fonts (Identity-H/V encoding)
- table.createRendererSubTree() is producing an incorrect height calculation for the occupied area BBox. If we set the cell height to the calculated value, then text is being clipped on the final output
📦 Improvements
- Android Support
- Save XMP metadata in canonical format for PDF/A documents
- Implement Pdf Type 2 function (Exponential Interpolation) Functions
- Implement Pdf Type 3 (Stitching) Functions
- Indirect ref in PdfStream issues: implement the first solution mentioned during the refinement
- Update several 3rd party dependencies to their most recent version
🐛 Bugs
- SVG: support exponent notation for numbers with capital E
- Fix NPE on CopyPagesTo
- Issue with flushing PDF stream with indirect reference in /Filter
- Fix infinite loop when reading a PdfDocument
- Fix the NPE which is thrown when table cell content is clipped
📦 Improvements
- Updated some Java dependencies (Bouncy Castle 1.70, Logback 1.2.10, slf4j 1.7.33)
🐛 Bugs
- Fixed [CFF](https://adobe-type-tools.github.io/font-tech-notes/pdfs/5176.CFF.pdf) font-parsing logic
- CVE fixes
- CVE-2022-24196 - out-of-memory error via the component readStreamBytesRaw
- CVE-2022-24197 - stack-based buffer overflow via the component ByteBuffer.append
📦 Improvements
- SVG: Support default value for <path> 'd" attribute
- Process Outlines using explicit hierarchy
- Support of copying empty tags
🐛 Bugs
- Outlines structure parsing: infinite loop while merging with outlines
- SVG. Support of q/Q Operators inside BT/ET text block/object
- Set PubKeySecurityHandler output stream with DER encoding format
- OcgPropertiesCopier: StackOverflowError when merging documents with OCGs if a resource has cycle reference
🐛 Bugs
- Security bugfix for vulnerability in GhostScript
💥 Breaking Changes
- Removed deprecated methods from API
✨ New Features
- Unified License Mechanism
- Introduce interface of typography logic and stub implementation at the layout level
📦 Improvements
- Case insensitive SVG tags
- Jsoup 1.14.1
- Throw specific errors when Outline Dictionary breaks PDF specs rules
🐛 Bugs
- Streams remain open in case of exception in PdfDocument/PdfReader constructors
- PdfPageFormCopier. multiple widget source field can`t be added to AcroForm when there is a name conflict.
- Infinity loop in ParagraphRenderer
- Prevent empty producer line logic
- No list symbol indention for "Right to left" text
- Layout: Cell with big rowspan causes infinite loop
✨ Features
- SVG. Customizable TextLeafSvgNodeRenderer
- Support for encryption embedded files only
📦 Improvements
- Improve Bezier curve approximation for rounded borders
- Improve performance of Metadata parsing
- Support ICCBased color space
- Refactor preClose() in PdfSigner
🐛 Bugs
- Streams remain open when Exception thrown
- Support Type3 fonts extraction, when glyphs have non-standard names
💥 Breaking changes
- removing deprecated methods from the layout module
📦 Improvements
- SVG: added support for M/m operators followed by a pair of coordinates
- support for Type3 fonts with non-standard glyph names
- support justify-content and align-items
- better PDF/A Conformance exception text
- ignore invalid catalogue version on document load
- Improve exception message when removing a page from a document with invalid outlines
- BouncyCastle version has been updated from 1.67 to 1.68
🐛 Bugs
- layout: cells with percent width change column width after overflow
- add null check for producer string
✨ New Features
- SVG: Support `<pattern>` element
- Support of form fields border styles (Beveled, Underline and Inset)
📦 Improvements
- SVG: add support of font-relative units for the font-size property in a text element
- Allow OTF language records to be fetched by tag
- Support word-wrap and word-break properties
🐛 Bugs
- Expand colored background on the overflowed part of span
- SVG stroke-width doesn't work in `<use>` tags
- Signed short number overflows in readCoverageFormat()
- Page-break-inside: avoid not being taken into account for floating DIVs
✨ New Features
- Support DCT filter for image bytes decoding
- Support JPXDecode filter for image bytes decoding
- SVG: support symbol element
📦 Improvements
- Wordwrapping: support proper processing of preceding inlineBlock or ImageRenderer
- PDF/A: page transparency check
- PDF/A: "Implementation limits" requirement check
- Refactor MemoryLimitsAwareHandler
- Merging keeps OCG dictionary
- Handling of the PDF document with outlines which don't have correct Parent entry
🐛 Bugs
- TrueTypeFont with standard base font is not parsed from PDF correctly
- NPE on empty letter spacing declaration
- Potential security vulnerability in XMP Metadata parsing
✨ New Features
- Expose image identification API in io module
- Add possibility to remove items from outline tree
- Initial support of linearGradient in SVG and in CSS
📦 Improvements
- itext7-dotnet PR [#8](https://github.com/itext/itext7-dotnet/pull/8): Fix behaviour on systems with alternative minus sign characters (Ported to Java)
- itext7 PR #42: Malformed cross-reference stream fixed
- Process large table's split correctly
- itext7 PR #40: If line.start <=0 then continue replacing whitespaces otherwise it is a GlyphLine which has been created from existing one
🐛 Bugs
- Digital Signatures: annotation dictionary incorrectly updated when signing a pre-signed document
- Incorrect appearance for choice fields after the setValue call
- Glyph bbox is calculated incorrectly for type 3 fonts in case font matrix has 1 as multiplier when parsing content stream
- Improve the performance of the replaceSpecialWhitespaceGlyphs method
- layout: KEEP_TOGETHER works incorrectly with floating elements
- Pdf/A compliance checker incorrectly throws exception when a /Configs entry is not present in the /OCProperties dictionary
- SVG: Incorrect default resource resolving
- SVG: Fix Preserve AspectRatio attribute
- + 3 more
✨ New Features
- Improve creation and(or) merging of outlines for documents created in pdfHtml
- Basic implementation of orphan/widow control
📦 Improvements
- itext7-dotnet PR [#6](https://github.com/itext/itext7-dotnet/pull/6) (and i7n-pdfsweep PR [#1](https://github.com/itext/i7n-pdfsweep/pull/1)): Fix missing index and newlines in cleanup regexes ([thank you vemoo!](https://github.com/vemoo))
- itext7 PR [#44](https://github.com/itext/itext7/pull/44): Fix null pointer in PdfAcroForm ([thank you craftmaster2190!](https://github.com/craftmaster2190))
- itext7-dotnet PR [#4](https://github.com/itext/itext7-dotnet/pull/4): Path transformation to userspace ([thank you Moneema14](https://github.com/Moneema14) for the inspiration!)
- While checking whether a cell with a fixed height should be split, float are compared without any epsilon value, which may cause issues because of float precision inaccuracy
🐛 Bugs
- Make fringe attribute in xfdf squre and circle annotations optional
- Several bugs in processing of /TI for choice fields
- setValue method works incorrectly for a choice form field
- NotoSerifKhmer is rendered poorly
- GposLookupType5: mark to ligature positioning results in duplicating the mark
- Fix issue with Khmer text being incorrectly formatted
- Adding a PNG to pdf creates unopenable pdf document
- The FillOpacity is not set correctly on the GraphicsState of TextRenderInfo
✨ New Features
- Allow individual page loading when reading
- Implement scheduledCheck analog for iText Core
- Update BouncyCastle dependency to 1.64
- SVG: Feature: Markers, initial support
📦 Improvements
- Document PdfReader#setMemorySavingMode
🐛 Bugs
- When filling unmerged fields iText doesn't distinguish field and widget dictionaries
- Digital Signatures: annotation dictionary incorrectly updated when signing a pre-signed document
- Leading spaces are trimmed in form field appearances
- Adding a field to an existing acroform fails when using the PdfDocument append mode.
- Opening, setting tagged and closing an already tagged pdf rewrites the parenttree dictionary
- Problem with PDF/A end page event
- Fix SignUtils class to handle the case when a certificate doesn't have unsupported critical extensions
- svg: set default stroke width to 1 px value
📦 Tasks
- Make sure that all iTextCore tests extend ExtendedITextTest
- Reorganize samples-internal tests: FormFieldTest
- Reorganize samples-internal tests: FormFieldFlatteningTest
- xfdf: move xfdf message constants to XfdfException class
- Add test category to some itextcore tests
- Deprecate IdelOutputStream
- Reorganize samples-internal tests: InlineImageExtractionTest
- Avoid reading page dictionaries in ParentTreeHandler.registerMcr()
- + 19 more
