diff --git a/README.md b/README.md index 47f28341a1..225188eeb7 100644 --- a/README.md +++ b/README.md @@ -97,64 +97,73 @@ This is a small subset of examples to get you started. For more advanced example Some of the output PDF files will be incorrectly displayed by the GitHub previewer, so be sure to download them to see the correct results. -| Description | Link | -|--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Basic layout** | | -| Change text properties | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/ParagraphTextWithStyle.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/layout/cmp_paragraphTextWithStyle.pdf) | -| Creating a simple table | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/tables/SimpleTable9.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/tables/cmp_simple_table9.pdf) | -| Add an image to a PDF document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/images/MultipleImages.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/images/cmp_multiple_images.pdf) | -| Create a list | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/objects/NestedLists.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/objects/cmp_nested_list.pdf) | -| Add a watermark | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/Watermarking.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_watermarkings.pdf) | -| Add links to navigate within a document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/annotations/AddLinkAnnotation5.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/annotations/cmp_add_link_annotation5.pdf) | -| Create a popup annotation | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/annotations/MovePopup.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/annotations/cmp_move_popup.pdf) | -| Change font | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/ParagraphTextWithStyle.java) | -| Add form fields | [Java](https://kb.itextpdf.com/home/it7kb/examples/forms-in-itext-core-8-0-0) | -|
| | -| **General document settings** | | -| Change page size and margin | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/PageSizeAndMargins.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/layout/cmp_pageSizeAndMargins.pdf) | -| Write PDF to byte array instead of to disk | [Java](https://stackoverflow.com/a/67411657/10015628) | -| Change page rotation | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/PageRotation.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_page_rotation.pdf) | -| Add header and footer | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/TextFooter.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_text_footer.pdf) | -| Merge documents | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/merge/AddCover1.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/merge/cmp_add_cover.pdf) | -| Flatten annotations | [Java](https://kb.itextpdf.com/home/it7kb/examples/high-level-annotation-flattening) | -|
| | -| **PDF/UA, PDF/A** | | -| Create PDF/UA document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfua/PdfUA.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/pdfua/cmp_pdf_ua.pdf) | -| Create PDF/A-3 document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfa/PdfA3.java) | -| Create PDF/A-4 document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfa/PdfA4.java) | -| Create WTPDF document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfua/Wtpdf.java) | -| Create ZUGFeRD/Factur-X document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/zugferd/BasicSample.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/zugferd/cmp_invoice_with_zugferd.pdf) | -|
| | -| **FIPS** | | -| Enable FIPS | [Java](https://kb.itextpdf.com/home/it7kb/releases/release-itext-core-8-0-0/breaking-changes-for-itext-core-8-0-0/bouncy-castle-changes) | -| FIPS SHA3 example | [Java](https://kb.itextpdf.com/home/it7kb/examples/fips-sha3-examples-for-itext-core-8-0-0) | -|
| | -| **SVG** | | -| Convert SVG to a PDF | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdf.java) | -| Convert SVG to a PDF using layout | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToLayoutImage.java) | -| Convert SVG as string to PDF | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgStringToPdf.java) | -| Convert SVG to a PdfPage | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdfPage.java) | -| Convert SVG as XObject | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToXObject.java) | -| Convert SVG to a PDF with pdfCalligraph | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdfWithPdfCalligraph.java) | -|
| | -| **Convert HTML and CSS to PDF** | [Link to repo](https://github.com/itext/i7j-pdfhtml) | -| Convert simple HTML doc to PDF | [Java](https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-converting-html-to-pdf-with-pdfhtml) | -|
| | -| **Secure redaction of content** | [Link to repo](https://github.com/itext/i7j-pdfsweep) | -| Redacting content | [Java](https://kb.itextpdf.com/home/it7kb/examples/removing-content-with-pdfsweep) | -| Redact based on regex | [Java](https://itextpdf.com/products/pdf-redaction-pdfsweep) | -|
| | -| **Support complex writing systems** | [Link to docs](https://itextpdf.com/products/pdfcalligraph) | -| Add Arabic text | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/typography/arabic/ArabicWordSpacing.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/typography/cmp_ArabicWordSpacing.pdf) | -|
| | -| **Optimizing PDFs** | [Link to docs](https://itextpdf.com/products/compress-pdf-pdfoptimizer) | -| Reduce size of PDF | [Java](https://itextpdf.com/products/compress-pdf-pdfoptimizer) | -|
| | -| **XFA flattening** | [Link to docs](https://itextpdf.com/products/flatten-pdf-pdfxfa) | -| Flatten an XFA document | [Java](https://itextpdf.com/products/flatten-pdf-pdfxfa) | -|
| | -| **RUPS** | [Link to repo](https://github.com/itext/i7j-rups) | -| Debug a PDF | [Java](https://github.com/itext/i7j-rups/releases/latest) | +| Description | Link | +|---------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Basic layout** | | +| Change text properties | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/ParagraphTextWithStyle.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/layout/cmp_paragraphTextWithStyle.pdf) | +| Creating a simple table | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/tables/SimpleTable9.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/tables/cmp_simple_table9.pdf) | +| Add an image to a PDF document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/images/MultipleImages.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/images/cmp_multiple_images.pdf) | +| Create a list | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/objects/NestedLists.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/objects/cmp_nested_list.pdf) | +| Add a watermark | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/Watermarking.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_watermarkings.pdf) | +| Add links to navigate within a document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/annotations/AddLinkAnnotation5.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/annotations/cmp_add_link_annotation5.pdf) | +| Create a popup annotation | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/annotations/MovePopup.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/annotations/cmp_move_popup.pdf) | +| Change font | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/ParagraphTextWithStyle.java) | +| Add form fields | [Java](https://kb.itextpdf.com/home/it7kb/examples/forms-in-itext-core-8-0-0) | +|
| | +| **General document settings** | | +| Change page size and margin | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/layout/PageSizeAndMargins.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/layout/cmp_pageSizeAndMargins.pdf) | +| Write PDF to byte array instead of to disk | [Java](https://stackoverflow.com/a/67411657/10015628) | +| Change page rotation | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/PageRotation.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_page_rotation.pdf) | +| Add header and footer | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/events/TextFooter.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/events/cmp_text_footer.pdf) | +| Merge documents | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/merge/AddCover1.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/merge/cmp_add_cover.pdf) | +| Flatten annotations | [Java](https://kb.itextpdf.com/home/it7kb/examples/high-level-annotation-flattening) | +|
| | +| **PDF/UA, PDF/A** | | +| Create PDF/UA document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfua/PdfUA.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/pdfua/cmp_pdf_ua.pdf) | +| Create PDF/A-3 document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfa/PdfA3.java) | +| Create PDF/A-4 document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfa/PdfA4.java) | +| Create WTPDF document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/pdfua/Wtpdf.java) | +| Create ZUGFeRD/Factur-X document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/zugferd/BasicSample.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/zugferd/cmp_invoice_with_zugferd.pdf) | +|
| | +| **Digital signatures** | | +| Sign PDF document | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/SignatureExample.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/signatures/cmp_signExample.pdf) | +| Customize signature appearance | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/appearance), [PDFs](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/signatures/appearance) | +| Sign PDF document with PaDES Profile | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/pades), [PDFs](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/signatures/pades) | +| Two-phase signing | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/twophase), [PDFs](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/signatures/twophase) | +| Signature validation | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/validation) | +| Signing using PQC algorithms (experimental) | [Java](https://github.com/itext/itext-publications-examples-java/blob/develop/src/main/java/com/itextpdf/samples/sandbox/signatures/pqc), [PDFs](https://github.com/XodoDocs/itext-publications-examples-java/blob/develop/cmpfiles/sandbox/signatures/pqc) | +| Custom HTML tag for signature | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/signatures/signaturetag/ConvertToPdfAndSign.java), [HTML](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/resources/signatures/signaturetag/ConvertToPdfAndSign/htmlWithSignatureTag.html), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/signatures/signaturetag/ConvertToPdfAndSign/cmp_signedPdfAfterConvert.pdf) | +|
| | +| **FIPS** | | +| Enable FIPS | [Java](https://kb.itextpdf.com/home/it7kb/releases/release-itext-core-8-0-0/breaking-changes-for-itext-core-8-0-0/bouncy-castle-changes) | +| FIPS SHA3 example | [Java](https://kb.itextpdf.com/home/it7kb/examples/fips-sha3-examples-for-itext-core-8-0-0) | +|
| | +| **SVG** | | +| Convert SVG to a PDF | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdf.java) | +| Convert SVG to a PDF using layout | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToLayoutImage.java) | +| Convert SVG as string to PDF | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgStringToPdf.java) | +| Convert SVG to a PdfPage | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdfPage.java) | +| Convert SVG as XObject | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToXObject.java) | +| Convert SVG to a PDF with pdfCalligraph | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/svg/ConvertSvgToPdfWithPdfCalligraph.java) | +|
| | +| **Convert HTML and CSS to PDF** | [Link to repo](https://github.com/itext/i7j-pdfhtml) | +| Convert simple HTML doc to PDF | [Java](https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-converting-html-to-pdf-with-pdfhtml) | +|
| | +| **Secure redaction of content** | [Link to repo](https://github.com/itext/i7j-pdfsweep) | +| Redacting content | [Java](https://kb.itextpdf.com/home/it7kb/examples/removing-content-with-pdfsweep) | +| Redact based on regex | [Java](https://itextpdf.com/products/pdf-redaction-pdfsweep) | +|
| | +| **Support complex writing systems** | [Link to docs](https://itextpdf.com/products/pdfcalligraph) | +| Add Arabic text | [Java](https://github.com/itext/itext-publications-examples-java/blob/master/src/main/java/com/itextpdf/samples/sandbox/typography/arabic/ArabicWordSpacing.java), [PDF](https://github.com/itext/itext-publications-examples-java/blob/master/cmpfiles/sandbox/typography/cmp_ArabicWordSpacing.pdf) | +|
| | +| **Optimizing PDFs** | [Link to docs](https://itextpdf.com/products/compress-pdf-pdfoptimizer) | +| Reduce size of PDF | [Java](https://itextpdf.com/products/compress-pdf-pdfoptimizer) | +|
| | +| **XFA flattening** | [Link to docs](https://itextpdf.com/products/flatten-pdf-pdfxfa) | +| Flatten an XFA document | [Java](https://itextpdf.com/products/flatten-pdf-pdfxfa) | +|
| | +| **RUPS** | [Link to repo](https://github.com/itext/i7j-rups) | +| Debug a PDF | [Java](https://github.com/itext/i7j-rups/releases/latest) | ### FAQs, tutorials, etc. ### diff --git a/barcodes/pom.xml b/barcodes/pom.xml index 6048a2e0e0..2b2e281fba 100644 --- a/barcodes/pom.xml +++ b/barcodes/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT barcodes diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode128.java b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode128.java index a82940ffcf..c347afc24c 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode128.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode128.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode1D.java b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode1D.java index a2008ad6da..52ac2a036f 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode1D.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode1D.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode2D.java b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode2D.java index 7a808b12f0..6032f6e9e8 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode2D.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode2D.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode39.java b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode39.java index 720595e881..a896e39c3a 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/Barcode39.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/Barcode39.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeCodabar.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeCodabar.java index df008ee4a8..c1b2d6ea3b 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeCodabar.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeCodabar.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeDataMatrix.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeDataMatrix.java index f3440ba092..ca22faf28a 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeDataMatrix.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeDataMatrix.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEAN.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEAN.java index 81e50fb9dd..68ab791f3e 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEAN.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEAN.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEANSUPP.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEANSUPP.java index 53d4d84213..c0702cb7b4 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEANSUPP.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeEANSUPP.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeInter25.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeInter25.java index 7f4b5591b9..5cd80dd78c 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeInter25.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeInter25.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeMSI.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeMSI.java index d7c4761827..dd88afa860 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeMSI.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeMSI.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePDF417.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePDF417.java index 63df39a3a2..a7c6feb933 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePDF417.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePDF417.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePostnet.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePostnet.java index 5930f510c0..a6ca7f5a42 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePostnet.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodePostnet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeQRCode.java b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeQRCode.java index 2936fda221..bec2f5ef4e 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeQRCode.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/BarcodeQRCode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/DmParams.java b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/DmParams.java index 1de90022d1..cbecd1ae7b 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/DmParams.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/DmParams.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/Placement.java b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/Placement.java index 6a7f840850..de625f33c6 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/Placement.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/Placement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/ReedSolomon.java b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/ReedSolomon.java index 4851b4ff20..e1a252d808 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/ReedSolomon.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/dmcode/ReedSolomon.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/BarcodesExceptionMessageConstant.java b/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/BarcodesExceptionMessageConstant.java index fb6e370c68..8cdc5d3471 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/BarcodesExceptionMessageConstant.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/BarcodesExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/WriterException.java b/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/WriterException.java index b63d04dbb4..305ce64117 100644 --- a/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/WriterException.java +++ b/barcodes/src/main/java/com/itextpdf/barcodes/exceptions/WriterException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/sharpenconfig/java/com/itextpdf/barcodes/SharpenConfigMapping.java b/barcodes/src/sharpenconfig/java/com/itextpdf/barcodes/SharpenConfigMapping.java index d5e44b4831..47fe2e9a65 100644 --- a/barcodes/src/sharpenconfig/java/com/itextpdf/barcodes/SharpenConfigMapping.java +++ b/barcodes/src/sharpenconfig/java/com/itextpdf/barcodes/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/Barcode128Test.java b/barcodes/src/test/java/com/itextpdf/barcodes/Barcode128Test.java index 34fca3534a..d949226f55 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/Barcode128Test.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/Barcode128Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/Barcode39Test.java b/barcodes/src/test/java/com/itextpdf/barcodes/Barcode39Test.java index 241ab74935..a0e0372e53 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/Barcode39Test.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/Barcode39Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeCodabarTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeCodabarTest.java index efb139f199..7d66d0f7ab 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeCodabarTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeCodabarTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeDataMatrixTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeDataMatrixTest.java index ece5a7e4d2..72ef5ade1b 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeDataMatrixTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeDataMatrixTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANTest.java index d558ad677f..47824ce982 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANUnitTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANUnitTest.java index 24389afffc..25c42a0301 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANUnitTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeEANUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeInter25Test.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeInter25Test.java index f86a528b19..e2a31f75f6 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeInter25Test.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeInter25Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMSITest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMSITest.java index 76b8c522e3..b31097a0b2 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMSITest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMSITest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMultiThreadingTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMultiThreadingTest.java index b9c53c87e3..da0ce5d509 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMultiThreadingTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeMultiThreadingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417Test.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417Test.java index 75e7359c7f..a5c5ac8f37 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417Test.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417UnitTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417UnitTest.java index 95492a1290..8ecf1c4798 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417UnitTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePDF417UnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePostnetTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePostnetTest.java index ea355c9db4..312855fc35 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePostnetTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodePostnetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeQRCodeTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeQRCodeTest.java index 1e50e29584..2ea0efffa0 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeQRCodeTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeQRCodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeUnitTest.java b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeUnitTest.java index 8b72d3bab1..a4a52e0742 100644 --- a/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeUnitTest.java +++ b/barcodes/src/test/java/com/itextpdf/barcodes/BarcodeUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/pom.xml b/bouncy-castle-adapter/pom.xml index ba73ec7ca7..9a01a7b368 100644 --- a/bouncy-castle-adapter/pom.xml +++ b/bouncy-castle-adapter/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT bouncy-castle-adapter diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleFactory.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleFactory.java index 5428d64cd7..48bf317637 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleFactory.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -229,6 +229,7 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.openssl.IPEMParser; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJcaPEMKeyConverter; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJceOpenSSLPKCS8DecryptorProviderBuilder; +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculator; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculatorProvider; import com.itextpdf.commons.bouncycastle.operator.jcajce.IJcaContentSignerBuilder; @@ -1639,6 +1640,16 @@ public IRespID createRespID(IX500Name x500Name) { return new RespIDBC(x500Name); } + /** + * {@inheritDoc} + */ + @Override + public IRespID createRespID(Certificate certificate) + throws AbstractOperatorCreationException, AbstractOCSPException { + return new RespIDBC( + (SubjectPublicKeyInfoBC) createSubjectPublicKeyInfo(certificate.getPublicKey().getEncoded())); + } + /** * {@inheritDoc} */ @@ -1752,7 +1763,8 @@ public IX509ExtensionUtils createX509ExtensionUtils(IDigestCalculator digestCalc @Override public ISubjectPublicKeyInfo createSubjectPublicKeyInfo(Object object) { return new SubjectPublicKeyInfoBC(object instanceof ASN1EncodableBC ? - ((ASN1EncodableBC) object).getEncodable() : object); + ((ASN1EncodableBC) object).getEncodable() : + object instanceof PublicKey ? ((PublicKey) object).getEncoded() : object); } /** diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleTestConstantsFactory.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleTestConstantsFactory.java index f409fa0215..a2f3431ffe 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleTestConstantsFactory.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/BouncyCastleTestConstantsFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1BitStringBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1BitStringBC.java index 60a27ba644..b18812a4d4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1BitStringBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1BitStringBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -63,4 +63,12 @@ public String getString() { public int intValue() { return getASN1BitString().intValue(); } + + /** + * {@inheritDoc} + */ + @Override + public byte[] getBytes() { + return getASN1BitString().getBytes(); + } } diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableBC.java index b23c8ab137..d1401a3520 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableVectorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableVectorBC.java index ebec3ecfcd..785ffc586f 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableVectorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodableVectorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodingBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodingBC.java index 2a9b3f0d57..f588c8f909 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodingBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EncodingBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EnumeratedBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EnumeratedBC.java index e6b45afa76..00aba38079 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EnumeratedBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1EnumeratedBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1GeneralizedTimeBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1GeneralizedTimeBC.java index dbbfde4ae1..2087ea6e6f 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1GeneralizedTimeBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1GeneralizedTimeBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1InputStreamBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1InputStreamBC.java index 06c40653db..fe78e7353e 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1InputStreamBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1InputStreamBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1IntegerBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1IntegerBC.java index 319f180be8..22e91af5ff 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1IntegerBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1IntegerBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1ObjectIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1ObjectIdentifierBC.java index 16cb4cea11..25916d24d9 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1ObjectIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1ObjectIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OctetStringBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OctetStringBC.java index d53a7cd0a5..52ec8d846d 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OctetStringBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OctetStringBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OutputStreamBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OutputStreamBC.java index eeb0c7a452..e10f3cebef 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OutputStreamBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1OutputStreamBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1PrimitiveBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1PrimitiveBC.java index 21ace1f074..bdb5a7fb7d 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1PrimitiveBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1PrimitiveBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SequenceBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SequenceBC.java index e72500b920..281175b4c0 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SequenceBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SequenceBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SetBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SetBC.java index e1f92b6b6a..477c414c0d 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SetBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1SetBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1StringBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1StringBC.java index 893b1c8823..961961d07d 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1StringBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1StringBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1TaggedObjectBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1TaggedObjectBC.java index 06b416d169..a9e3750aa1 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1TaggedObjectBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1TaggedObjectBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1UTCTimeBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1UTCTimeBC.java index 90eb12192f..7b6bd701f1 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1UTCTimeBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ASN1UTCTimeBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERIA5StringBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERIA5StringBC.java index 9e6a09fed7..9b84660613 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERIA5StringBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERIA5StringBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERNullBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERNullBC.java index b2fb3882cd..70b04c3c2b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERNullBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERNullBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DEROctetStringBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DEROctetStringBC.java index 054fbc448a..295496face 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DEROctetStringBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DEROctetStringBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSequenceBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSequenceBC.java index 2031028ca0..621b083208 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSequenceBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSequenceBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSetBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSetBC.java index 28892cacd9..60c020f28e 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSetBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERSetBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERTaggedObjectBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERTaggedObjectBC.java index a02458404d..988935ef83 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERTaggedObjectBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/DERTaggedObjectBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cmp/PKIFailureInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cmp/PKIFailureInfoBC.java index 5bf6f46148..4cf4db5af0 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cmp/PKIFailureInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cmp/PKIFailureInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeBC.java index bec0d9960b..63e1cb9530 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeTableBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeTableBC.java index dbee14c368..65e4a88211 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeTableBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/AttributeTableBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/ContentInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/ContentInfoBC.java index ead07a9b64..429cd3e44b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/ContentInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/ContentInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EncryptedContentInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EncryptedContentInfoBC.java index 5b833f8793..99b05db1e4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EncryptedContentInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EncryptedContentInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EnvelopedDataBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EnvelopedDataBC.java index e212b88fed..97d517f762 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EnvelopedDataBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/EnvelopedDataBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/IssuerAndSerialNumberBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/IssuerAndSerialNumberBC.java index fae70166b3..87cc765e16 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/IssuerAndSerialNumberBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/IssuerAndSerialNumberBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/KeyTransRecipientInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/KeyTransRecipientInfoBC.java index e3facd7ddd..0a5af80949 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/KeyTransRecipientInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/KeyTransRecipientInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/OriginatorInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/OriginatorInfoBC.java index 6bf33ac487..92b1465391 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/OriginatorInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/OriginatorInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientIdentifierBC.java index 7dc3bd73dc..9d5e04f643 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientInfoBC.java index 988f411afa..7474c5c971 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/cms/RecipientInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/OtherHashAlgAndValueBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/OtherHashAlgAndValueBC.java index fb22928ffe..bf265470d8 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/OtherHashAlgAndValueBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/OtherHashAlgAndValueBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SigPolicyQualifierInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SigPolicyQualifierInfoBC.java index b7241ff211..0267d74d60 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SigPolicyQualifierInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SigPolicyQualifierInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdBC.java index 2a5e1b1454..4259645d42 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdentifierBC.java index c8d5c58f82..2bd6d92acd 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/esf/SignaturePolicyIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDBC.java index c96d8cf8c4..143905a711 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDv2BC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDv2BC.java index 2189be7ecd..2ed1c0d976 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDv2BC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/ESSCertIDv2BC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateBC.java index 4224ed2e4a..882dce12e6 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateV2BC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateV2BC.java index 9ba5b675cc..2ff81db2fc 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateV2BC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ess/SigningCertificateV2BC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/BasicOCSPResponseBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/BasicOCSPResponseBC.java index 837cd2d255..4f7a3b5331 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/BasicOCSPResponseBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/BasicOCSPResponseBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPObjectIdentifiersBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPObjectIdentifiersBC.java index f1f779e17b..9ad2a74be3 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPObjectIdentifiersBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPObjectIdentifiersBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseBC.java index a440573518..34b35d8c62 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseStatusBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseStatusBC.java index 77122678e2..652278e88a 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseStatusBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/OCSPResponseStatusBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/ResponseBytesBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/ResponseBytesBC.java index e0f418d5ad..a8d3685df2 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/ResponseBytesBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/ocsp/ResponseBytesBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PKCSObjectIdentifiersBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PKCSObjectIdentifiersBC.java index 9f2a1e2bb2..bc66958e7a 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PKCSObjectIdentifiersBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PKCSObjectIdentifiersBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PrivateKeyInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PrivateKeyInfoBC.java index b6427e5f66..5f1ff9a1d1 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PrivateKeyInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/PrivateKeyInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/RSASSAPSSParamsBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/RSASSAPSSParamsBC.java index 70e246885e..8c51e73688 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/RSASSAPSSParamsBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/pcks/RSASSAPSSParamsBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/MessageImprintBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/MessageImprintBC.java index cbee59612b..9a5c7f6cb4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/MessageImprintBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/MessageImprintBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/TSTInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/TSTInfoBC.java index ef1852ac92..159afa528e 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/TSTInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/tsp/TSTInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/util/ASN1DumpBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/util/ASN1DumpBC.java index 88d660c433..ba95bf7fc3 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/util/ASN1DumpBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/util/ASN1DumpBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x500/X500NameBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x500/X500NameBC.java index 94381d0370..655fca9ad4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x500/X500NameBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x500/X500NameBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AlgorithmIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AlgorithmIdentifierBC.java index 658429c9d9..fad0492723 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AlgorithmIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AlgorithmIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AuthorityKeyIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AuthorityKeyIdentifierBC.java index 1d3fdd92f2..dac2686ec9 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AuthorityKeyIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/AuthorityKeyIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/BasicConstraintsBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/BasicConstraintsBC.java index 318497f2d1..68a4867232 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/BasicConstraintsBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/BasicConstraintsBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLDistPointBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLDistPointBC.java index d3d9743b98..fa695d2811 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLDistPointBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLDistPointBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLReasonBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLReasonBC.java index 515a84707c..0f659b1698 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLReasonBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/CRLReasonBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointBC.java index 82d0cdb4aa..203abbeea3 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointNameBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointNameBC.java index b2ea70c9d9..380cafd929 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointNameBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/DistributionPointNameBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtendedKeyUsageBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtendedKeyUsageBC.java index 33170db887..3676abe110 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtendedKeyUsageBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtendedKeyUsageBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionBC.java index fbbdf1d36f..3e11c59a0b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionsBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionsBC.java index 5131b0f1e1..00d00992b6 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionsBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ExtensionsBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNameBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNameBC.java index 1bc21eb4ec..67fe6ecf23 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNameBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNameBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNamesBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNamesBC.java index 98f66d66aa..0c60e619a5 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNamesBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/GeneralNamesBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/IssuingDistributionPointBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/IssuingDistributionPointBC.java index bd275aa7ae..c2236e472b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/IssuingDistributionPointBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/IssuingDistributionPointBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyPurposeIdBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyPurposeIdBC.java index 8b0a040ff5..73d12845a4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyPurposeIdBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyPurposeIdBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyUsageBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyUsageBC.java index 34ce268e43..d243388053 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyUsageBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/KeyUsageBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ReasonFlagsBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ReasonFlagsBC.java index d5265bd715..7935c0a062 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ReasonFlagsBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/ReasonFlagsBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectKeyIdentifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectKeyIdentifierBC.java index 45d8ff0fe7..321906f77f 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectKeyIdentifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectKeyIdentifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectPublicKeyInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectPublicKeyInfoBC.java index fc5e03fb8b..b971658adf 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectPublicKeyInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/SubjectPublicKeyInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,7 +22,9 @@ This file is part of the iText (R) project. */ package com.itextpdf.bouncycastle.asn1.x509; +import com.itextpdf.bouncycastle.asn1.ASN1BitStringBC; import com.itextpdf.bouncycastle.asn1.ASN1EncodableBC; +import com.itextpdf.commons.bouncycastle.asn1.IASN1BitString; import com.itextpdf.commons.bouncycastle.asn1.x509.IAlgorithmIdentifier; import com.itextpdf.commons.bouncycastle.asn1.x509.ISubjectPublicKeyInfo; @@ -66,4 +68,11 @@ public SubjectPublicKeyInfo getSubjectPublicKeyInfo() { public IAlgorithmIdentifier getAlgorithm() { return new AlgorithmIdentifierBC(getSubjectPublicKeyInfo().getAlgorithm()); } + + /** + * {@inheritDoc} + */ + public IASN1BitString getPublicKeyData() { + return new ASN1BitStringBC(getSubjectPublicKeyInfo().getPublicKeyData()); + } } diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TBSCertificateBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TBSCertificateBC.java index e9413c807c..a643538686 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TBSCertificateBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TBSCertificateBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TimeBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TimeBC.java index 2cf265834e..23152cfe58 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TimeBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/TimeBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/qualified/QCStatementBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/qualified/QCStatementBC.java index 17ffb6ccba..621c6c6ac4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/qualified/QCStatementBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/asn1/x509/qualified/QCStatementBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/CertIOExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/CertIOExceptionBC.java index 2a3eb05835..1b864fd7bc 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/CertIOExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/CertIOExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CRLHolderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CRLHolderBC.java index e9254de7ae..09041a86a4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CRLHolderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CRLHolderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CertificateHolderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CertificateHolderBC.java index a967d8036d..53469d4f1e 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CertificateHolderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509CertificateHolderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509ExtensionUtilsBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509ExtensionUtilsBC.java index e3b07ab1df..ad37395e10 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509ExtensionUtilsBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509ExtensionUtilsBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509v2CRLBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509v2CRLBuilderBC.java index 209378b97d..d244e4ad9c 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509v2CRLBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/X509v2CRLBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaCertStoreBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaCertStoreBC.java index 23f808a5cd..d422ac201c 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaCertStoreBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaCertStoreBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateConverterBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateConverterBC.java index b18196bc62..f80540b3d4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateConverterBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateConverterBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateHolderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateHolderBC.java index a54c2ef4a3..0e4eb3c8c1 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateHolderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509CertificateHolderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilderBC.java index 63445fb0c8..66bbb2aa61 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBC.java index 3599fc4ebb..2cc4d9569d 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBuilderBC.java index d5446b05fc..066fb6700b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/BasicOCSPRespBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateIDBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateIDBC.java index 5d4a407acb..9ae0cfab00 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateIDBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateIDBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateStatusBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateStatusBC.java index b30e127b9f..d073a82282 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateStatusBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/CertificateStatusBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPExceptionBC.java index bf89f34ab0..b762011f6b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBC.java index 7f6836e839..170d455f93 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBuilderBC.java index 5929eb7f8c..d7c2d4ca78 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPReqBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBC.java index d810a0d3b3..cdc2d22da7 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBuilderBC.java index 40c44a9a58..1d2d78f80c 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/OCSPRespBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ReqBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ReqBC.java index efb7900266..8e77b906fe 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ReqBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ReqBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RespIDBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RespIDBC.java index 0488e80396..914c75c78b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RespIDBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RespIDBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,12 +23,21 @@ This file is part of the iText (R) project. package com.itextpdf.bouncycastle.cert.ocsp; import com.itextpdf.bouncycastle.asn1.x500.X500NameBC; +import com.itextpdf.bouncycastle.asn1.x509.SubjectPublicKeyInfoBC; +import com.itextpdf.bouncycastle.operator.OperatorCreationExceptionBC; import com.itextpdf.commons.bouncycastle.asn1.x500.IX500Name; +import com.itextpdf.commons.bouncycastle.cert.ocsp.AbstractOCSPException; import com.itextpdf.commons.bouncycastle.cert.ocsp.IRespID; import com.itextpdf.commons.bouncycastle.cert.ocsp.IResponderID; import java.util.Objects; + +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; +import org.bouncycastle.cert.ocsp.CertificateID; +import org.bouncycastle.cert.ocsp.OCSPException; import org.bouncycastle.cert.ocsp.RespID; +import org.bouncycastle.operator.OperatorCreationException; +import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; /** * Wrapper class for {@link RespID}. @@ -54,6 +63,26 @@ public RespIDBC(IX500Name x500Name) { this(new RespID(((X500NameBC) x500Name).getX500Name())); } + /** + * Creates new wrapper instance for {@link RespID}. + * + * @param subjectPublicKeyInfo {@link org.bouncycastle.asn1.x509.SubjectPublicKeyInfo} wrapper + * + * @throws AbstractOCSPException in case of {@link OCSPException} + * @throws AbstractOperatorCreationException in case of {@link OperatorCreationException} + */ + public RespIDBC(SubjectPublicKeyInfoBC subjectPublicKeyInfo) throws AbstractOCSPException, + AbstractOperatorCreationException { + try { + this.respID = new RespID(subjectPublicKeyInfo.getSubjectPublicKeyInfo(), + new JcaDigestCalculatorProviderBuilder().build().get(CertificateID.HASH_SHA1)); + } catch (OCSPException e) { + throw new OCSPExceptionBC(e); + } catch (OperatorCreationException e) { + throw new OperatorCreationExceptionBC(e); + } + } + /** * Gets actual org.bouncycastle object being wrapped. * diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ResponderIDBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ResponderIDBC.java index 4a8ca3fdf7..a718ecc5bf 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ResponderIDBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/ResponderIDBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,6 +51,14 @@ public IX500Name getName() { return new X500NameBC(responderID.getName()); } + /** + * {@inheritDoc} + */ + @Override + public byte[] getKeyHash() { + return responderID.getKeyHash(); + } + /** * Gets actual org.bouncycastle object being wrapped. * diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RevokedStatusBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RevokedStatusBC.java index a80b5481f3..9aa90678e3 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RevokedStatusBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/RevokedStatusBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/SingleRespBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/SingleRespBC.java index 512b0149e2..683faa37a2 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/SingleRespBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/SingleRespBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/UnknownStatusBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/UnknownStatusBC.java index 9a34ea8087..37e072b5c0 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/UnknownStatusBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cert/ocsp/UnknownStatusBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSEnvelopedDataBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSEnvelopedDataBC.java index ecc8bc9863..59d0c66af4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSEnvelopedDataBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSEnvelopedDataBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSExceptionBC.java index 4f4e3d53b5..86af9435cc 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/CMSExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientBC.java index 575658db2e..e43e8a2602 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientIdBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientIdBC.java index 6ef212d2c5..f18cd58567 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientIdBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientIdBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationBC.java index 039567d0af..a7a3d7eb2b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationStoreBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationStoreBC.java index a71ceda805..2afbd70d50 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationStoreBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/RecipientInformationStoreBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInfoGeneratorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInfoGeneratorBC.java index 32b73f590d..e9d9ab94ae 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInfoGeneratorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInfoGeneratorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInformationVerifierBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInformationVerifierBC.java index b121430242..a7337cea66 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInformationVerifierBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/SignerInformationVerifierBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilderBC.java index 20d704da66..89da3ce270 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBC.java index 1619550f1b..687e348e7c 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipientBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipientBC.java index 7b6cead694..5a402fc6e2 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipientBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipientBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipientBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipientBC.java index 2ee90a34b1..a95493b285 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipientBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipientBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/crypto/modes/GCMBlockCipherBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/crypto/modes/GCMBlockCipherBC.java index 20a3627279..02c95a4ef7 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/crypto/modes/GCMBlockCipherBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/crypto/modes/GCMBlockCipherBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMExceptionBC.java index da2a469d61..ff53d19298 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMParserBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMParserBC.java index ec2da4c9d3..93b29f8955 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMParserBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/PEMParserBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JcaPEMKeyConverterBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JcaPEMKeyConverterBC.java index 1ac47cbf52..c45a420042 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JcaPEMKeyConverterBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JcaPEMKeyConverterBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBC.java index ad5aa61142..9b7a281611 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentSignerBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentSignerBC.java index 659ecd922e..cb5eba9a68 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentSignerBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentSignerBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentVerifierProviderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentVerifierProviderBC.java index 4cdfb16848..e761eb6168 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentVerifierProviderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/ContentVerifierProviderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorBC.java index 9d259d45da..9e9fbd58de 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorProviderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorProviderBC.java index c6928801d5..5c13553bce 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorProviderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/DigestCalculatorProviderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/InputDecryptorProviderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/InputDecryptorProviderBC.java index 643eeb2c26..6fbc9082a4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/InputDecryptorProviderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/InputDecryptorProviderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/OperatorCreationExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/OperatorCreationExceptionBC.java index 165f214f39..5a46b037ef 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/OperatorCreationExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/OperatorCreationExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentSignerBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentSignerBuilderBC.java index 2656fb7871..0418611e4c 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentSignerBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentSignerBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilderBC.java index 55b3226b9e..cbd38a769b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilderBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilderBC.java index 128942964d..eeb3383fc9 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilderBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilderBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBC.java index f2305872c1..3e57a303e4 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCSExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCSExceptionBC.java index efca14edd7..100027ded9 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCSExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/pkcs/PKCSExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TSPExceptionBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TSPExceptionBC.java index 00babb6e83..c21e7ac962 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TSPExceptionBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TSPExceptionBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestBC.java index 7ddd7337c9..1c933f0247 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestGeneratorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestGeneratorBC.java index 5edc4ea855..5f8b338e29 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestGeneratorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampRequestGeneratorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseBC.java index c4b0298dc4..8b0d08735a 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseGeneratorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseGeneratorBC.java index bccc1531d2..84f3431a93 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseGeneratorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampResponseGeneratorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenBC.java index 2498bf795f..2da8d5560b 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenGeneratorBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenGeneratorBC.java index deb1d6f0d1..47ffeb6886 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenGeneratorBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenGeneratorBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenInfoBC.java b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenInfoBC.java index 400eb076e2..bd37e205b7 100644 --- a/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenInfoBC.java +++ b/bouncy-castle-adapter/src/main/java/com/itextpdf/bouncycastle/tsp/TimeStampTokenInfoBC.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastle/SharpenConfigMapping.java b/bouncy-castle-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastle/SharpenConfigMapping.java index 4774c67194..4eb75dc509 100644 --- a/bouncy-castle-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastle/SharpenConfigMapping.java +++ b/bouncy-castle-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastle/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-connector/pom.xml b/bouncy-castle-connector/pom.xml index a8738d0a0d..ac144bd098 100644 --- a/bouncy-castle-connector/pom.xml +++ b/bouncy-castle-connector/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT bouncy-castle-connector diff --git a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleDefaultFactory.java b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleDefaultFactory.java index 6c5a630b08..1ee6a434b1 100644 --- a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleDefaultFactory.java +++ b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleDefaultFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -122,6 +122,7 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.openssl.IPEMParser; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJcaPEMKeyConverter; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJceOpenSSLPKCS8DecryptorProviderBuilder; +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculator; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculatorProvider; import com.itextpdf.commons.bouncycastle.operator.jcajce.IJcaContentSignerBuilder; @@ -854,6 +855,12 @@ public IRespID createRespID(IX500Name x500Name) { throw new UnsupportedOperationException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); } + @Override + public IRespID createRespID(Certificate certificate) throws AbstractOCSPException, + AbstractOperatorCreationException { + throw new UnsupportedOperationException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); + } + @Override public IBasicOCSPRespBuilder createBasicOCSPRespBuilder(IRespID respID) { throw new UnsupportedOperationException(BouncyCastleLogMessageConstant.BOUNCY_CASTLE_DEPENDENCY_MUST_PRESENT); diff --git a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleFactoryCreator.java b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleFactoryCreator.java index c9f6a54ef1..4bd36e9346 100644 --- a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleFactoryCreator.java +++ b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/BouncyCastleFactoryCreator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/logs/BouncyCastleLogMessageConstant.java b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/logs/BouncyCastleLogMessageConstant.java index 7718603090..eed6eac153 100644 --- a/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/logs/BouncyCastleLogMessageConstant.java +++ b/bouncy-castle-connector/src/main/java/com/itextpdf/bouncycastleconnector/logs/BouncyCastleLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-connector/src/sharpenconfig/java/com/itextpdf/bouncycastleconnector/SharpenConfigMapping.java b/bouncy-castle-connector/src/sharpenconfig/java/com/itextpdf/bouncycastleconnector/SharpenConfigMapping.java index 2c6f23c0c7..2f37d1cd0f 100644 --- a/bouncy-castle-connector/src/sharpenconfig/java/com/itextpdf/bouncycastleconnector/SharpenConfigMapping.java +++ b/bouncy-castle-connector/src/sharpenconfig/java/com/itextpdf/bouncycastleconnector/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/pom.xml b/bouncy-castle-fips-adapter/pom.xml index 8e5fa41e51..c6a2a77cdf 100644 --- a/bouncy-castle-fips-adapter/pom.xml +++ b/bouncy-castle-fips-adapter/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT bouncy-castle-fips-adapter diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java index 2973728583..4d7692f54d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -230,6 +230,7 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.openssl.IPEMParser; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJcaPEMKeyConverter; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJceOpenSSLPKCS8DecryptorProviderBuilder; +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculator; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculatorProvider; import com.itextpdf.commons.bouncycastle.operator.jcajce.IJcaContentSignerBuilder; @@ -1637,6 +1638,16 @@ public IRespID createRespID(IX500Name x500Name) { return new RespIDBCFips(x500Name); } + /** + * {@inheritDoc} + */ + @Override + public IRespID createRespID(Certificate certificate) throws AbstractOCSPException, + AbstractOperatorCreationException { + return new RespIDBCFips( + (SubjectPublicKeyInfoBCFips) createSubjectPublicKeyInfo(certificate.getPublicKey().getEncoded())); + } + /** * {@inheritDoc} */ @@ -1750,7 +1761,8 @@ public IX509ExtensionUtils createX509ExtensionUtils(IDigestCalculator digestCalc @Override public ISubjectPublicKeyInfo createSubjectPublicKeyInfo(Object object) { return new SubjectPublicKeyInfoBCFips(object instanceof ASN1EncodableBCFips ? - ((ASN1EncodableBCFips) object).getEncodable() : object); + ((ASN1EncodableBCFips) object).getEncodable() : + object instanceof PublicKey ? ((PublicKey) object).getEncoded() : object); } /** diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java index 578c0dd7d4..558f5af780 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/BouncyCastleFipsTestConstantsFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1BitStringBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1BitStringBCFips.java index d0a2222a3e..89948c9eca 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1BitStringBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1BitStringBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -63,4 +63,12 @@ public String getString() { public int intValue() { return getASN1BitString().intValue(); } + + /** + * {@inheritDoc} + */ + @Override + public byte[] getBytes() { + return getASN1BitString().getBytes(); + } } diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableBCFips.java index 4e18dde4bf..2614fa7185 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableVectorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableVectorBCFips.java index 691e771f41..d27a3a2d55 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableVectorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodableVectorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodingBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodingBCFips.java index 3ef0409b67..86224c81a6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodingBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EncodingBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EnumeratedBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EnumeratedBCFips.java index b960fbd51a..6183bf1374 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EnumeratedBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1EnumeratedBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1GeneralizedTimeBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1GeneralizedTimeBCFips.java index c84860acaf..211a67251c 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1GeneralizedTimeBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1GeneralizedTimeBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1InputStreamBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1InputStreamBCFips.java index dc935294c7..165b56688e 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1InputStreamBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1InputStreamBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1IntegerBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1IntegerBCFips.java index 721fa7a259..1fd291c644 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1IntegerBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1IntegerBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1ObjectIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1ObjectIdentifierBCFips.java index 97c3a6fa77..1f7adfa13e 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1ObjectIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1ObjectIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OctetStringBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OctetStringBCFips.java index fb2237a929..86a22ddbed 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OctetStringBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OctetStringBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OutputStreamBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OutputStreamBCFips.java index f5f6205fbd..d05b1c90fc 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OutputStreamBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1OutputStreamBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1PrimitiveBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1PrimitiveBCFips.java index 941924d2de..fc83d8110a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1PrimitiveBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1PrimitiveBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SequenceBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SequenceBCFips.java index 83ad4ea765..87e642093f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SequenceBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SequenceBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SetBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SetBCFips.java index b473aa7da9..d6b80918b5 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SetBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1SetBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1StringBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1StringBCFips.java index acfad289e9..5fdb00cfba 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1StringBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1StringBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1TaggedObjectBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1TaggedObjectBCFips.java index 5d9ac4b6ed..753172c929 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1TaggedObjectBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1TaggedObjectBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1UTCTimeBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1UTCTimeBCFips.java index 8c5d687ad3..020b6f3f90 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1UTCTimeBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ASN1UTCTimeBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERIA5StringBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERIA5StringBCFips.java index 8f0d076a3a..b47e6f9e4f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERIA5StringBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERIA5StringBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERNullBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERNullBCFips.java index dfcb9a5d04..ff11dc83ca 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERNullBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERNullBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DEROctetStringBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DEROctetStringBCFips.java index deb3623459..c1bc4a373d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DEROctetStringBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DEROctetStringBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSequenceBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSequenceBCFips.java index a2e529c2c0..0745e8660d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSequenceBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSequenceBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSetBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSetBCFips.java index b28617ced9..f90e4de76b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSetBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERSetBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERTaggedObjectBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERTaggedObjectBCFips.java index 8be5418e65..69ffbe31fa 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERTaggedObjectBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/DERTaggedObjectBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cmp/PKIFailureInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cmp/PKIFailureInfoBCFips.java index 2e08658136..1db6246d9d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cmp/PKIFailureInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cmp/PKIFailureInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeBCFips.java index a88feaeff4..ffa4c328c7 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeTableBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeTableBCFips.java index 378a107367..4424d79ff0 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeTableBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/AttributeTableBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/ContentInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/ContentInfoBCFips.java index 93702d76a2..ab502c58b7 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/ContentInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/ContentInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EncryptedContentInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EncryptedContentInfoBCFips.java index 15066e6703..ae68c9d1ee 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EncryptedContentInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EncryptedContentInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EnvelopedDataBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EnvelopedDataBCFips.java index a0848780ac..964eb9e5c1 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EnvelopedDataBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/EnvelopedDataBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/IssuerAndSerialNumberBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/IssuerAndSerialNumberBCFips.java index b0640f511d..30959bdb8d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/IssuerAndSerialNumberBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/IssuerAndSerialNumberBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/KeyTransRecipientInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/KeyTransRecipientInfoBCFips.java index bccd6dd012..8a52bd28b2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/KeyTransRecipientInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/KeyTransRecipientInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/OriginatorInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/OriginatorInfoBCFips.java index 49f9825ad0..4bfbd62abc 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/OriginatorInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/OriginatorInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientIdentifierBCFips.java index 581fc69238..2d462c0a3c 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientInfoBCFips.java index c7cd877c62..dff81f95f6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/cms/RecipientInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/OtherHashAlgAndValueBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/OtherHashAlgAndValueBCFips.java index 48f24485e6..d5f7641eb6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/OtherHashAlgAndValueBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/OtherHashAlgAndValueBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SigPolicyQualifierInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SigPolicyQualifierInfoBCFips.java index 8ee660d954..2b0c80f220 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SigPolicyQualifierInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SigPolicyQualifierInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdBCFips.java index 0c8dd5b564..2d223ed2b2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdentifierBCFips.java index 438a307761..d399a31f71 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/esf/SignaturePolicyIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDBCFips.java index 5015a41e09..f5554f7148 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDv2BCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDv2BCFips.java index 3483112e3d..80d2d3f107 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDv2BCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/ESSCertIDv2BCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateBCFips.java index 0cedf9f13c..c18dc8df37 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateV2BCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateV2BCFips.java index 92bbe83e4d..2cb579f3c1 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateV2BCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ess/SigningCertificateV2BCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/BasicOCSPResponseBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/BasicOCSPResponseBCFips.java index 6816a8384e..3c06b8fb01 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/BasicOCSPResponseBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/BasicOCSPResponseBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPObjectIdentifiersBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPObjectIdentifiersBCFips.java index 8672bd1752..20182f0278 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPObjectIdentifiersBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPObjectIdentifiersBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseBCFips.java index 2cadeaac4e..82cca3e5af 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseStatusBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseStatusBCFips.java index f6a8538d8c..b27e8f6340 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseStatusBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/OCSPResponseStatusBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/ResponseBytesBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/ResponseBytesBCFips.java index 9528a2c352..b8f86c499a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/ResponseBytesBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/ocsp/ResponseBytesBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PKCSObjectIdentifiersBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PKCSObjectIdentifiersBCFips.java index 5b4bfe4f8a..b7bce8894a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PKCSObjectIdentifiersBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PKCSObjectIdentifiersBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PrivateKeyInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PrivateKeyInfoBCFips.java index 2699b522bc..1c71cadc55 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PrivateKeyInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/PrivateKeyInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/RSASSAPSSParamsBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/RSASSAPSSParamsBCFips.java index 12ba8f53e4..43c7ce4821 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/RSASSAPSSParamsBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/pcks/RSASSAPSSParamsBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/MessageImprintBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/MessageImprintBCFips.java index ab4df8d571..2534d4e28f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/MessageImprintBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/MessageImprintBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/TSTInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/TSTInfoBCFips.java index e11951bdf5..7414e40e3a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/TSTInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/tsp/TSTInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/util/ASN1DumpBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/util/ASN1DumpBCFips.java index 392c0940e0..6fd66de0ee 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/util/ASN1DumpBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/util/ASN1DumpBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x500/X500NameBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x500/X500NameBCFips.java index 7bf0139f61..ac222f34c2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x500/X500NameBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x500/X500NameBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AlgorithmIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AlgorithmIdentifierBCFips.java index 19c4fddd6b..a92d5376cb 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AlgorithmIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AlgorithmIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AuthorityKeyIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AuthorityKeyIdentifierBCFips.java index 5ec1316e8c..582f77b563 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AuthorityKeyIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/AuthorityKeyIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/BasicConstraintsBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/BasicConstraintsBCFips.java index ac1548dd47..24223ee41a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/BasicConstraintsBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/BasicConstraintsBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLDistPointBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLDistPointBCFips.java index 35aaa6261a..4db7219053 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLDistPointBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLDistPointBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLReasonBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLReasonBCFips.java index 6f303dd109..654df61ce1 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLReasonBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/CRLReasonBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointBCFips.java index 57777e2ffb..386f832dac 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointNameBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointNameBCFips.java index 45ad753431..89b7e28675 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointNameBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/DistributionPointNameBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtendedKeyUsageBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtendedKeyUsageBCFips.java index b431ab1ec7..25766b1169 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtendedKeyUsageBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtendedKeyUsageBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionBCFips.java index 152d611464..70e626b0e2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionsBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionsBCFips.java index 00d9637b02..c76abaf045 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionsBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ExtensionsBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNameBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNameBCFips.java index 2d62a6cc76..7b0ee5c01a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNameBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNameBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNamesBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNamesBCFips.java index b6d5dfd983..22929e1501 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNamesBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/GeneralNamesBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/IssuingDistributionPointBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/IssuingDistributionPointBCFips.java index 56c7349ed8..c1afe50565 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/IssuingDistributionPointBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/IssuingDistributionPointBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyPurposeIdBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyPurposeIdBCFips.java index c126317fb2..9a383b9937 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyPurposeIdBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyPurposeIdBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyUsageBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyUsageBCFips.java index d96df4bce0..8da4bec3c6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyUsageBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/KeyUsageBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ReasonFlagsBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ReasonFlagsBCFips.java index 3e2fde0e23..3ae06498e8 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ReasonFlagsBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/ReasonFlagsBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectKeyIdentifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectKeyIdentifierBCFips.java index 3718c733e8..1061d9063b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectKeyIdentifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectKeyIdentifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectPublicKeyInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectPublicKeyInfoBCFips.java index 08ea9f873b..2d4046a60b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectPublicKeyInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/SubjectPublicKeyInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,7 +22,9 @@ This file is part of the iText (R) project. */ package com.itextpdf.bouncycastlefips.asn1.x509; +import com.itextpdf.bouncycastlefips.asn1.ASN1BitStringBCFips; import com.itextpdf.bouncycastlefips.asn1.ASN1EncodableBCFips; +import com.itextpdf.commons.bouncycastle.asn1.IASN1BitString; import com.itextpdf.commons.bouncycastle.asn1.x509.IAlgorithmIdentifier; import com.itextpdf.commons.bouncycastle.asn1.x509.ISubjectPublicKeyInfo; @@ -66,4 +68,11 @@ public SubjectPublicKeyInfo getSubjectPublicKeyInfo() { public IAlgorithmIdentifier getAlgorithm() { return new AlgorithmIdentifierBCFips(getSubjectPublicKeyInfo().getAlgorithm()); } + + /** + * {@inheritDoc} + */ + public IASN1BitString getPublicKeyData() { + return new ASN1BitStringBCFips(getSubjectPublicKeyInfo().getPublicKeyData()); + } } diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TBSCertificateBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TBSCertificateBCFips.java index 654de53516..7a533858b6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TBSCertificateBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TBSCertificateBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TimeBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TimeBCFips.java index f00b7e1323..4d075d2f07 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TimeBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/TimeBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/qualified/QCStatementBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/qualified/QCStatementBCFips.java index aafc1de74a..52a744f2c2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/qualified/QCStatementBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/asn1/x509/qualified/QCStatementBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/CertIOExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/CertIOExceptionBCFips.java index d8314f4823..82083e27d7 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/CertIOExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/CertIOExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CRLHolderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CRLHolderBCFips.java index 3d8285799e..c5a2e32a42 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CRLHolderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CRLHolderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CertificateHolderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CertificateHolderBCFips.java index 82cdedd9e5..25793ac47f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CertificateHolderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509CertificateHolderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509ExtensionUtilsBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509ExtensionUtilsBCFips.java index 7b397e9820..d435a646f9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509ExtensionUtilsBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509ExtensionUtilsBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509v2CRLBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509v2CRLBuilderBCFips.java index e83146eff7..2d9ef783e8 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509v2CRLBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/X509v2CRLBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaCertStoreBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaCertStoreBCFips.java index ff84491da5..3e19e55d04 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaCertStoreBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaCertStoreBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateConverterBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateConverterBCFips.java index 21d6b6f8bc..47529b3b20 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateConverterBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateConverterBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateHolderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateHolderBCFips.java index 5bc3ffeaa1..9236e5b4a0 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateHolderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509CertificateHolderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509v3CertificateBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509v3CertificateBuilderBCFips.java index a3ee386837..ffb4bb4d4e 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509v3CertificateBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/jcajce/JcaX509v3CertificateBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBCFips.java index 5f9300dad2..0f6a77bcf8 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBuilderBCFips.java index 459ef9a9af..c7185a8062 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/BasicOCSPRespBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateIDBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateIDBCFips.java index a298410738..f7fb459db9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateIDBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateIDBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateStatusBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateStatusBCFips.java index 724c73dc59..c1850b793f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateStatusBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/CertificateStatusBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPExceptionBCFips.java index a7aea9ae06..d52c59e983 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBCFips.java index efb0a1ba41..fe1b397989 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBuilderBCFips.java index 5289bfa995..3f50ac5e94 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPReqBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBCFips.java index f0bf886cd8..51983f02ab 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBuilderBCFips.java index 2eab44b913..b6a01f09c4 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/OCSPRespBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ReqBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ReqBCFips.java index 54485c4fa6..aa4744d7dd 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ReqBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ReqBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RespIDBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RespIDBCFips.java index 8d21904f05..25d51b83f9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RespIDBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RespIDBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,12 +23,21 @@ This file is part of the iText (R) project. package com.itextpdf.bouncycastlefips.cert.ocsp; import com.itextpdf.bouncycastlefips.asn1.x500.X500NameBCFips; +import com.itextpdf.bouncycastlefips.asn1.x509.SubjectPublicKeyInfoBCFips; +import com.itextpdf.bouncycastlefips.operator.OperatorCreationExceptionBCFips; import com.itextpdf.commons.bouncycastle.asn1.x500.IX500Name; +import com.itextpdf.commons.bouncycastle.cert.ocsp.AbstractOCSPException; import com.itextpdf.commons.bouncycastle.cert.ocsp.IRespID; import com.itextpdf.commons.bouncycastle.cert.ocsp.IResponderID; import java.util.Objects; + +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; +import org.bouncycastle.cert.ocsp.CertificateID; +import org.bouncycastle.cert.ocsp.OCSPException; import org.bouncycastle.cert.ocsp.RespID; +import org.bouncycastle.operator.OperatorCreationException; +import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; /** * Wrapper class for {@link RespID}. @@ -54,6 +63,26 @@ public RespIDBCFips(IX500Name x500Name) { this(new RespID(((X500NameBCFips) x500Name).getX500Name())); } + /** + * Creates new wrapper instance for {@link RespID}. + * + * @param subjectPublicKeyInfo {@link org.bouncycastle.asn1.x509.SubjectPublicKeyInfo} wrapper + * + * @throws AbstractOCSPException in case of {@link OCSPException} + * @throws AbstractOperatorCreationException in case of {@link OperatorCreationException} + */ + public RespIDBCFips(SubjectPublicKeyInfoBCFips subjectPublicKeyInfo) throws AbstractOCSPException, + AbstractOperatorCreationException { + try { + this.respID = new RespID(subjectPublicKeyInfo.getSubjectPublicKeyInfo(), + new JcaDigestCalculatorProviderBuilder().build().get(CertificateID.HASH_SHA1)); + } catch (OCSPException e) { + throw new OCSPExceptionBCFips(e); + } catch (OperatorCreationException e) { + throw new OperatorCreationExceptionBCFips(e); + } + } + /** * {@inheritDoc} */ diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ResponderIDBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ResponderIDBCFips.java index 3a76e7e2d3..b823374ecb 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ResponderIDBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/ResponderIDBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,6 +51,14 @@ public IX500Name getName() { return new X500NameBCFips(responderID.getName()); } + /** + * {@inheritDoc} + */ + @Override + public byte[] getKeyHash() { + return responderID.getKeyHash(); + } + /** * Gets actual org.bouncycastle object being wrapped. * diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RevokedStatusBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RevokedStatusBCFips.java index b5dff84561..6adbd01983 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RevokedStatusBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/RevokedStatusBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/SingleRespBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/SingleRespBCFips.java index 153bea686e..40fc9617a7 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/SingleRespBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/SingleRespBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/UnknownStatusBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/UnknownStatusBCFips.java index 90754b9fdf..71723b9fe0 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/UnknownStatusBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cert/ocsp/UnknownStatusBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSEnvelopedDataBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSEnvelopedDataBCFips.java index 972d038de1..beeee7d0ac 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSEnvelopedDataBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSEnvelopedDataBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSExceptionBCFips.java index 8e97bef1c7..139f1cc239 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/CMSExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientBCFips.java index a1d6391938..0cbf82ef9b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientIdBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientIdBCFips.java index 2438dc97b5..fbb759cdb1 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientIdBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientIdBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationBCFips.java index aecd14ea0d..e7d526933d 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationStoreBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationStoreBCFips.java index 16186ba6f4..5a11101509 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationStoreBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/RecipientInformationStoreBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInfoGeneratorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInfoGeneratorBCFips.java index 9c701534ea..9a4b824ba3 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInfoGeneratorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInfoGeneratorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInformationVerifierBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInformationVerifierBCFips.java index 552d6ec386..aa746d050a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInformationVerifierBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/SignerInformationVerifierBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSignerInfoGeneratorBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSignerInfoGeneratorBuilderBCFips.java index cc60f3df58..90e851fee9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSignerInfoGeneratorBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSignerInfoGeneratorBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBCFips.java index 8bcc1fd3ae..291636c1b4 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JcaSimpleSignerInfoVerifierBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyAgreeEnvelopedRecipientBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyAgreeEnvelopedRecipientBCFips.java index 55f46a2cd6..c2cdeed86b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyAgreeEnvelopedRecipientBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyAgreeEnvelopedRecipientBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyTransEnvelopedRecipientBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyTransEnvelopedRecipientBCFips.java index f8cf4071f9..b97146b69a 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyTransEnvelopedRecipientBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/cms/jcajce/JceKeyTransEnvelopedRecipientBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/fips/FipsUnapprovedOperationErrorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/fips/FipsUnapprovedOperationErrorBCFips.java index 3cfbe47d85..9e9377bb35 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/fips/FipsUnapprovedOperationErrorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/fips/FipsUnapprovedOperationErrorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/modes/GCMBlockCipherBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/modes/GCMBlockCipherBCFips.java index c750306b2d..f7525a1fdf 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/modes/GCMBlockCipherBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/crypto/modes/GCMBlockCipherBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMExceptionBCFips.java index 1bdd0d211a..dceb3692f6 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMParserBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMParserBCFips.java index 8ecf4551b4..0e042410d0 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMParserBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/PEMParserBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JcaPEMKeyConverterBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JcaPEMKeyConverterBCFips.java index b8aed32bef..9e774a0911 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JcaPEMKeyConverterBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JcaPEMKeyConverterBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBCFips.java index 0dbc61164b..bf9fc17da9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentSignerBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentSignerBCFips.java index 48b6520e63..040316eb47 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentSignerBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentSignerBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentVerifierProviderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentVerifierProviderBCFips.java index 1659f9d1cb..d46bdfa6f9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentVerifierProviderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/ContentVerifierProviderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorBCFips.java index acf093efae..c2e82b8520 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorProviderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorProviderBCFips.java index 01083a1707..d27c04e648 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorProviderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/DigestCalculatorProviderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/InputDecryptorProviderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/InputDecryptorProviderBCFips.java index c8f09649f8..7654c06fa2 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/InputDecryptorProviderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/InputDecryptorProviderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/OperatorCreationExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/OperatorCreationExceptionBCFips.java index 0cad0f9d64..bd301e2b5f 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/OperatorCreationExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/OperatorCreationExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentSignerBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentSignerBuilderBCFips.java index 74c063e570..87ddd7a69b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentSignerBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentSignerBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentVerifierProviderBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentVerifierProviderBuilderBCFips.java index eb66e11b8f..b274eea13e 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentVerifierProviderBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaContentVerifierProviderBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaDigestCalculatorProviderBuilderBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaDigestCalculatorProviderBuilderBCFips.java index 607cad1249..e257e18b8b 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaDigestCalculatorProviderBuilderBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/operator/jcajce/JcaDigestCalculatorProviderBuilderBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCS8EncryptedPrivateKeyInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCS8EncryptedPrivateKeyInfoBCFips.java index ee2829a1a8..0781efe9e9 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCS8EncryptedPrivateKeyInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCS8EncryptedPrivateKeyInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCSExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCSExceptionBCFips.java index 317f9dc601..b25d5320bf 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCSExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/pkcs/PKCSExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TSPExceptionBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TSPExceptionBCFips.java index ae73815c81..f917a73159 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TSPExceptionBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TSPExceptionBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestBCFips.java index c40fe478fc..708213e4f5 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestGeneratorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestGeneratorBCFips.java index 2b05884ab4..b4b61ac643 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestGeneratorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampRequestGeneratorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseBCFips.java index db4f430a8f..cbce82e4cf 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseGeneratorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseGeneratorBCFips.java index f92a9f66fa..1c5f515496 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseGeneratorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampResponseGeneratorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenBCFips.java index be4b076eca..24b58bebfa 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenGeneratorBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenGeneratorBCFips.java index 68edf2e4c5..b2f6d02f2e 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenGeneratorBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenGeneratorBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenInfoBCFips.java b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenInfoBCFips.java index 0a68b21a67..964f5c66e3 100644 --- a/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenInfoBCFips.java +++ b/bouncy-castle-fips-adapter/src/main/java/com/itextpdf/bouncycastlefips/tsp/TimeStampTokenInfoBCFips.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/bouncy-castle-fips-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastlefips/SharpenConfigMapping.java b/bouncy-castle-fips-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastlefips/SharpenConfigMapping.java index 359c43dfe9..9723312a40 100644 --- a/bouncy-castle-fips-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastlefips/SharpenConfigMapping.java +++ b/bouncy-castle-fips-adapter/src/sharpenconfig/java/com/itextpdf/bouncycastlefips/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/brotli-compressor/pom.xml b/brotli-compressor/pom.xml index b7a61a77eb..aa459c08a4 100644 --- a/brotli-compressor/pom.xml +++ b/brotli-compressor/pom.xml @@ -4,7 +4,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT brotli-compressor @@ -44,6 +44,24 @@ ${project.version} test + + com.itextpdf + forms + ${project.version} + test + + + com.itextpdf + sign + ${project.version} + test + + + com.itextpdf + bouncy-castle-adapter + ${project.version} + test + diff --git a/brotli-compressor/sharpenconfig/java/com/itextpdf/brotlicompressor/SharpenConfigMapping.java b/brotli-compressor/sharpenconfig/java/com/itextpdf/brotlicompressor/SharpenConfigMapping.java index 00a00ac1bc..da538938db 100644 --- a/brotli-compressor/sharpenconfig/java/com/itextpdf/brotlicompressor/SharpenConfigMapping.java +++ b/brotli-compressor/sharpenconfig/java/com/itextpdf/brotlicompressor/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliOutputStream.java b/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliOutputStream.java index b710fb0558..15c3127d87 100644 --- a/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliOutputStream.java +++ b/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategy.java b/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategy.java index 3996456433..0f3f7440b6 100644 --- a/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategy.java +++ b/brotli-compressor/src/main/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliOutputStreamTest.java b/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliOutputStreamTest.java index a580f03ae6..8203cf15e7 100644 --- a/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliOutputStreamTest.java +++ b/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliOutputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategyTest.java b/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategyTest.java index 565e563b92..3cbd9b1d8d 100644 --- a/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategyTest.java +++ b/brotli-compressor/src/test/java/com/itextpdf/brotlicompressor/BrotliStreamCompressionStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,11 +22,28 @@ This file is part of the iText (R) project. */ package com.itextpdf.brotlicompressor; +import com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator; +import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; +import com.itextpdf.commons.utils.FileUtil; import com.itextpdf.commons.utils.SystemUtil; +import com.itextpdf.forms.PdfAcroForm; +import com.itextpdf.forms.fields.ChoiceFormFieldBuilder; +import com.itextpdf.forms.fields.PdfButtonFormField; +import com.itextpdf.forms.fields.PdfChoiceFormField; +import com.itextpdf.forms.fields.PdfFormAnnotation; +import com.itextpdf.forms.fields.PdfFormCreator; +import com.itextpdf.forms.fields.PdfFormField; +import com.itextpdf.forms.fields.PdfTextFormField; +import com.itextpdf.forms.fields.PushButtonFormFieldBuilder; +import com.itextpdf.forms.fields.RadioFormFieldBuilder; +import com.itextpdf.forms.fields.SignatureFormFieldBuilder; +import com.itextpdf.forms.fields.TextFormFieldBuilder; import com.itextpdf.io.image.ImageData; import com.itextpdf.io.image.ImageDataFactory; import com.itextpdf.io.source.ByteArrayOutputStream; import com.itextpdf.io.source.IFinishable; +import com.itextpdf.kernel.colors.ColorConstants; +import com.itextpdf.kernel.crypto.DigestAlgorithms; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.CompressionConstants; @@ -44,21 +61,36 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.StampingProperties; +import com.itextpdf.kernel.pdf.WriterProperties; +import com.itextpdf.kernel.pdf.annot.PdfAnnotation; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.filespec.PdfFileSpec; import com.itextpdf.kernel.pdf.filters.BrotliFilter; import com.itextpdf.kernel.utils.CompareTool; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Table; +import com.itextpdf.signatures.AccessPermissions; +import com.itextpdf.signatures.BouncyCastleDigest; +import com.itextpdf.signatures.IExternalSignature; +import com.itextpdf.signatures.PdfPKCS7; +import com.itextpdf.signatures.PdfSigner; +import com.itextpdf.signatures.PrivateKeySignature; +import com.itextpdf.signatures.SignatureUtil; +import com.itextpdf.signatures.SignerProperties; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.TestUtil; import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; +import java.security.KeyStore; +import java.security.PrivateKey; +import java.security.Provider; +import java.security.cert.Certificate; import java.util.HashMap; import java.util.Map; import java.util.function.Consumer; @@ -78,6 +110,8 @@ public class BrotliStreamCompressionStrategyTest extends ExtendedITextTest { private static final String testString = "The quick brown fox jumps over the lazy dog. " + "And accented words like naïve, façade, and piñata help validate Unicode handling"; private static final int streamCount = 10; + private static final IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator.getFactory(); + private static final Provider PROVIDER = FACTORY.getProvider(); @BeforeAll public static void setUp() { @@ -115,6 +149,35 @@ public void basicBrotliContentStreamTest() throws IOException, InterruptedExcept }), fileName); } + @Test + public void brotliContentStreamFullCompressionTest() throws IOException { + String resultPath = DESTINATION_FOLDER + "brotliCSFullComp.pdf"; + DocumentProperties props = createBrotliProperties(); + + try (PdfDocument pdfDoc = new PdfDocument( + new PdfWriter(resultPath, new WriterProperties().setFullCompressionMode(true)), props)) { + PdfPage page = pdfDoc.addNewPage(); + PdfStream pdfStream = new PdfStream(testString.getBytes(StandardCharsets.UTF_8), + CompressionConstants.BEST_COMPRESSION); + pdfStream.makeIndirect(pdfDoc); + PdfArray contents = new PdfArray(); + contents.add(pdfStream.getIndirectReference()); + page.getPdfObject().put(PdfName.Contents, contents); + } + + try (PdfDocument resDoc = new PdfDocument(new PdfReader(resultPath), props)) { + int numberOfPages = resDoc.getNumberOfPages(); + Assertions.assertEquals(1, numberOfPages); + + PdfPage firstPage = resDoc.getFirstPage(); + PdfStream firstContentStream = firstPage.getFirstContentStream(); + Assertions.assertEquals(testString, new String(firstContentStream.getBytes(), StandardCharsets.UTF_8)); + + Assertions.assertEquals(PdfName.BrotliDecode, firstContentStream.getAsName(PdfName.Filter)); + + } + } + @Test public void addBrotliStreamsToFlateStampingModeTest() throws IOException { String resultPath = DESTINATION_FOLDER + "stampedBrotliStreams.pdf"; @@ -484,6 +547,164 @@ public void brotliInlineImagesProhibitedTest() throws IOException, InterruptedEx }, fileName); } + @Test + public void textFieldBrotliTest() throws Exception { + String fileName = "textField.pdf"; + runTest(pdfDoc -> { + PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); + Rectangle rect = new Rectangle(210, 490, 150, 22); + PdfTextFormField field = new TextFormFieldBuilder(pdfDoc, "fieldName") + .setWidgetRectangle(rect).createText(); + field.setValue("test value"); + form.addField(field); + + }, fileName); + } + + @Test + public void choiceFieldBrotliTest() throws Exception { + String fileName = "choiceField.pdf"; + runTest(pdfDoc -> { + PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); + + Rectangle rect = new Rectangle(210, 490, 150, 20); + + String[] options = new String[] {"Val 1", "Val 2", "Val 3"}; + PdfChoiceFormField choice = new ChoiceFormFieldBuilder(pdfDoc, "choiceField") + .setWidgetRectangle(rect).setOptions(options).createComboBox(); + choice.setValue("Val 1", true); + + form.addField(choice); + + }, fileName); + } + + @Test + public void radioButtonBrotliTest() throws Exception { + String fileName = "radioButton.pdf"; + runTest(pdfDoc -> { + PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); + + Rectangle rect1 = new Rectangle(36, 700, 20, 20); + + String formFieldName = "TestFieldName"; + RadioFormFieldBuilder builder = new RadioFormFieldBuilder(pdfDoc, formFieldName); + PdfButtonFormField group = builder.createRadioGroup(); + group.setValue("radio value", true); + + group.addKid(builder.createRadioButton("1", rect1)); + + form.addField(group); + + }, fileName); + } + + @Test + public void pushButtonBrotliTest() throws Exception { + String fileName = "pushButton.pdf"; + runTest(pdfDoc -> { + PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); + String itext = "itextpdf"; + + PdfButtonFormField button = new PushButtonFormFieldBuilder(pdfDoc, itext) + .setWidgetRectangle(new Rectangle(36, 500, 200, 200)).setCaption(itext) + .createPushButton(); + button.setFontSize(0); + button.setValue(itext); + + button.getFirstFormAnnotation() + .setBorderWidth(10).setBorderColor(ColorConstants.GREEN).setBackgroundColor(ColorConstants.GRAY) + .setVisibility(PdfFormAnnotation.VISIBLE); + + form.addField(button); + + }, fileName); + } + + @Test + public void simpleSignatureDocumentBrotliTest() throws Exception { + String fileName = "signatureUnsignedBrotli.pdf"; + runTest(pdfDoc -> { + PdfFormField formField = new SignatureFormFieldBuilder(pdfDoc, "fieldName").createSignature(); + PdfAcroForm acroForm = PdfFormCreator.getAcroForm(pdfDoc, true); + acroForm.addField(formField); + + }, fileName); + } + + @Test + public void signedSimpleDocumentBrotliTest() throws Exception { + String unsigned = DESTINATION_FOLDER + "unsigned.pdf"; + String signed = DESTINATION_FOLDER + "signedDocumentBrotli.pdf"; + + char[] password = "testpassphrase".toCharArray(); + + KeyStore ks = KeyStore.getInstance("pkcs12", PROVIDER.getName()); + try (InputStream ksStream = Files.newInputStream(Paths.get(SOURCE_FOLDER + "certificate.p12"))) { + ks.load(ksStream, password); + } + String alias = ks.aliases().nextElement(); + PrivateKey pk = (PrivateKey) ks.getKey(alias, password); + Certificate[] chain = ks.getCertificateChain(alias); + + try (PdfDocument pdfDoc = new PdfDocument( + new PdfWriter(unsigned, + new WriterProperties() + .setCompressionLevel(CompressionConstants.DEFAULT_COMPRESSION)), + createBrotliProperties())) { + + pdfDoc.getDiContainer().register(IStreamCompressionStrategy.class, new BrotliStreamCompressionStrategy()); + pdfDoc.addNewPage(); + } + + StampingProperties props = new StampingProperties().useAppendMode(); + props.registerDependency( + IStreamCompressionStrategy.class, + new BrotliStreamCompressionStrategy()); + + PdfSigner signer = new PdfSigner( + new PdfReader(unsigned), + FileUtil.getFileOutputStream(signed), + props + ); + + signer.setSignerProperties( + new SignerProperties() + .setFieldName("Signature1") + .setPageNumber(1) + .setPageRect(new Rectangle(36, 648, 200, 100)) + .setCertificationLevel(AccessPermissions.UNSPECIFIED) + ); + + IExternalSignature signature = new PrivateKeySignature( + pk, + DigestAlgorithms.SHA256, + FACTORY.getProviderName() + ); + + signer.signDetached( + new BouncyCastleDigest(), + signature, + chain, + null, + null, + null, + 0, + PdfSigner.CryptoStandard.CADES + ); + + try (PdfDocument pdfDoc = new PdfDocument(new PdfReader(signed))) { + PdfAnnotation signatureAnnot = pdfDoc.getPage(1).getAnnotations().get(0); + PdfDictionary signatureObject = signatureAnnot.getPdfObject(); + Assertions.assertEquals(PdfName.Widget, signatureAnnot.getSubtype()); + Assertions.assertEquals(new PdfString("Signature1"), signatureAnnot.getTitle()); + Assertions.assertEquals(PdfName.Sig, signatureObject.getAsName(PdfName.FT)); + SignatureUtil sigUtil = new SignatureUtil(pdfDoc); + PdfPKCS7 signature1 = sigUtil.readSignatureData("Signature1"); + Assertions.assertTrue(signature1.verifySignatureIntegrityAndAuthenticity()); + } + } + @Test public void comparePdfStreamsTest() throws IOException { // Create PDF with Brotli compression @@ -729,4 +950,4 @@ private static Map getEmbeddedFiles(PdfDocument pdfDoc) { return result; } -} \ No newline at end of file +} diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/certificate.p12 b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/certificate.p12 new file mode 100644 index 0000000000..4f6fa43c53 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/certificate.p12 differ diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_choiceField.pdf b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_choiceField.pdf new file mode 100644 index 0000000000..03a9dc17d4 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_choiceField.pdf differ diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_pushButton.pdf b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_pushButton.pdf new file mode 100644 index 0000000000..384b65e139 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_pushButton.pdf differ diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_radioButton.pdf b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_radioButton.pdf new file mode 100644 index 0000000000..c79f6ad686 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_radioButton.pdf differ diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_signatureUnsignedBrotli.pdf b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_signatureUnsignedBrotli.pdf new file mode 100644 index 0000000000..318b9524b7 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_signatureUnsignedBrotli.pdf differ diff --git a/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_textField.pdf b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_textField.pdf new file mode 100644 index 0000000000..02d1b4b728 Binary files /dev/null and b/brotli-compressor/src/test/resources/com/itextpdf/brotli-compressor/BrotliStreamCompressionStrategyTest/cmp_textField.pdf differ diff --git a/commons/pom.xml b/commons/pom.xml index 07e4e05186..eee4838ca5 100644 --- a/commons/pom.xml +++ b/commons/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT commons @@ -28,7 +28,6 @@ com.fasterxml.jackson.core jackson-databind ${jackson.core.version} - true diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandler.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandler.java index 9a7c735397..842fa9cb67 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandler.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedITextEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedITextEvent.java index c443959269..2e65c198c3 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedITextEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractContextBasedITextEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractEventWrapper.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractEventWrapper.java index 691b6ea078..347a34702e 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractEventWrapper.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractEventWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextConfigurationEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextConfigurationEvent.java index c580852f57..10870ecba3 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextConfigurationEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextConfigurationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextEvent.java index 1b6214712f..9d961d04ed 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractITextEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductITextEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductITextEvent.java index 686470273b..be22a47edd 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductITextEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductITextEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductProcessITextEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductProcessITextEvent.java index 2743bfbcea..2b84afc98a 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductProcessITextEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractProductProcessITextEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsAggregator.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsAggregator.java index cef4cb622b..69fc9144f4 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsAggregator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsEvent.java index 470a664b93..23194065d8 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/AbstractStatisticsEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/EventManager.java b/commons/src/main/java/com/itextpdf/commons/actions/EventManager.java index dff1ae4f70..0ac39e2cd0 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/EventManager.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/EventManager.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/IEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/IEvent.java index c4379be585..88e17dfca5 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/IEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/IEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/IEventHandler.java b/commons/src/main/java/com/itextpdf/commons/actions/IEventHandler.java index 8069b3687f..8b43d3d8cd 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/IEventHandler.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/IEventHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/NamespaceConstant.java b/commons/src/main/java/com/itextpdf/commons/actions/NamespaceConstant.java index c6b104ba7f..c71721c922 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/NamespaceConstant.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/NamespaceConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/ProductEventHandler.java b/commons/src/main/java/com/itextpdf/commons/actions/ProductEventHandler.java index 5704aed08f..c9d0201370 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/ProductEventHandler.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/ProductEventHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/ProductNameConstant.java b/commons/src/main/java/com/itextpdf/commons/actions/ProductNameConstant.java index c1f7a6b1a1..485cddca40 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/ProductNameConstant.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/ProductNameConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeper.java b/commons/src/main/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeper.java index 5809a7861a..aa3fde6a5c 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeper.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmEvent.java index 8fe8f7b21a..dbb66d8494 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmedEventWrapper.java b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmedEventWrapper.java index 8824410026..9da41579b0 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmedEventWrapper.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/ConfirmedEventWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/EventConfirmationType.java b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/EventConfirmationType.java index d0597f3331..16aae80a9c 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/confirmations/EventConfirmationType.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/confirmations/EventConfirmationType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/AbstractContextManagerConfigurationEvent.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/AbstractContextManagerConfigurationEvent.java index b7db277c64..8af8734b48 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/AbstractContextManagerConfigurationEvent.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/AbstractContextManagerConfigurationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/ContextManager.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/ContextManager.java index 375b7a61a4..d7107bcd03 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/ContextManager.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/ContextManager.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/GenericContext.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/GenericContext.java index c255fd0484..1527ad45de 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/GenericContext.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/GenericContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/IContext.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/IContext.java index 5a92b41b0b..e066a8e297 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/IContext.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/IContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/IMetaInfo.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/IMetaInfo.java index d1d840c5d9..6bb8aa6f74 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/IMetaInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/IMetaInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/contexts/UnknownContext.java b/commons/src/main/java/com/itextpdf/commons/actions/contexts/UnknownContext.java index 85d0243965..8a99cfb344 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/contexts/UnknownContext.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/contexts/UnknownContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/data/CommonsProductData.java b/commons/src/main/java/com/itextpdf/commons/actions/data/CommonsProductData.java index 50bc5a3fbc..842151ea45 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/data/CommonsProductData.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/data/CommonsProductData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -28,10 +28,10 @@ This file is part of the iText (R) project. public final class CommonsProductData { static final String COMMONS_PUBLIC_PRODUCT_NAME = "Commons"; static final String COMMONS_PRODUCT_NAME = "commons"; - static final String COMMONS_VERSION = "9.5.0"; + static final String COMMONS_VERSION = "9.6.0-SNAPSHOT"; static final String MINIMAL_COMPATIBLE_LICENSEKEY_VERSION = "4.1.0"; static final int COMMONS_COPYRIGHT_SINCE = 2000; - static final int COMMONS_COPYRIGHT_TO = 2025; + static final int COMMONS_COPYRIGHT_TO = 2026; private static final ProductData COMMONS_PRODUCT_DATA = new ProductData(COMMONS_PUBLIC_PRODUCT_NAME, COMMONS_PRODUCT_NAME, COMMONS_VERSION, MINIMAL_COMPATIBLE_LICENSEKEY_VERSION, COMMONS_COPYRIGHT_SINCE, diff --git a/commons/src/main/java/com/itextpdf/commons/actions/data/ProductData.java b/commons/src/main/java/com/itextpdf/commons/actions/data/ProductData.java index e619a67bee..8a148e879f 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/data/ProductData.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/data/ProductData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/AbstractITextProductEventProcessor.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/AbstractITextProductEventProcessor.java index 6fc61a197a..29da0b9cc2 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/AbstractITextProductEventProcessor.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/AbstractITextProductEventProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessor.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessor.java index 3af286bae9..60a0eeba32 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessor.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactory.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactory.java index 4a1d8092d6..472329cd93 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactory.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/IProductProcessorFactory.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/IProductProcessorFactory.java index 2999b1c035..07945dcb3d 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/IProductProcessorFactory.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/IProductProcessorFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/ITextProductEventProcessor.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/ITextProductEventProcessor.java index 6a049b76c2..a68483ea25 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/ITextProductEventProcessor.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/ITextProductEventProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessor.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessor.java index 832d22edf8..246437d5b6 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessor.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactory.java b/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactory.java index b443282dc9..aaa2738506 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactory.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/AbstractFormattedPlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/AbstractFormattedPlaceholderPopulator.java index 1711831d16..5647fb9ccf 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/AbstractFormattedPlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/AbstractFormattedPlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulator.java index 6aadf75557..9e14ad15fb 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulator.java index d743b1b6d4..57ce5aac37 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulator.java index 5c6609a90e..7c791f967a 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/IPlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/IPlaceholderPopulator.java index b201698535..7d6d15a1b8 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/IPlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/IPlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/ProducerBuilder.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/ProducerBuilder.java index b1771582c3..3322f2f26b 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/ProducerBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/ProducerBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulator.java b/commons/src/main/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulator.java index 3a9bb20b30..81a8e5c0c1 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulator.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/sequence/AbstractIdentifiableElement.java b/commons/src/main/java/com/itextpdf/commons/actions/sequence/AbstractIdentifiableElement.java index b307261bbf..e2acbb40bc 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/sequence/AbstractIdentifiableElement.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/sequence/AbstractIdentifiableElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceId.java b/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceId.java index de355345d9..eff62d2d2c 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceId.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceId.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceIdManager.java b/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceIdManager.java index 88f8bfe9d7..ba8d75bcad 100644 --- a/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceIdManager.java +++ b/commons/src/main/java/com/itextpdf/commons/actions/sequence/SequenceIdManager.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleFactory.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleFactory.java index 7540a68b4d..f694a8ba59 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleFactory.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -120,6 +120,7 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.openssl.IPEMParser; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJcaPEMKeyConverter; import com.itextpdf.commons.bouncycastle.openssl.jcajce.IJceOpenSSLPKCS8DecryptorProviderBuilder; +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculator; import com.itextpdf.commons.bouncycastle.operator.IDigestCalculatorProvider; import com.itextpdf.commons.bouncycastle.operator.jcajce.IJcaContentSignerBuilder; @@ -1421,6 +1422,19 @@ ITimeStampTokenGenerator createTimeStampTokenGenerator(ISignerInfoGenerator siGe */ IRespID createRespID(IX500Name x500Name); + /** + * Creates resp ID wrapper from Subject Public Key Info wrapper. + * + * @param certificate {@link Certificate} from which resp ID wrapper will be created + * + * @return created resp ID wrapper + * + * @throws AbstractOCSPException in case of OCSPException being thrown + * @throws AbstractOperatorCreationException in case of OperatorCreationException being thrown + */ + IRespID createRespID(Certificate certificate) throws AbstractOCSPException, + AbstractOperatorCreationException; + /** * Create basic OCSP Resp builder wrapper from resp ID wrapper. * diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleTestConstantsFactory.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleTestConstantsFactory.java index 2a33443d57..560578d577 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleTestConstantsFactory.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/IBouncyCastleTestConstantsFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/SecurityProviderProxy.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/SecurityProviderProxy.java index 2cedbe853a..1702d6b958 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/SecurityProviderProxy.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/SecurityProviderProxy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1BitString.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1BitString.java index 78add13160..b0830d0775 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1BitString.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1BitString.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,4 +33,11 @@ public interface IASN1BitString extends IASN1Primitive, IASN1String { * @return int value of the wrapped ASN1BitString. */ int intValue(); + + /** + * Call actual {@code getBytes} method for the wrapped ASN1BitString object. + * + * @return bytes of the wrapped ASN1BitString. + */ + byte[] getBytes(); } diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encodable.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encodable.java index 64664da0d0..e74c8d8a4e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encodable.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encodable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1EncodableVector.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1EncodableVector.java index a859bd55d0..a07d99d0ba 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1EncodableVector.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1EncodableVector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encoding.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encoding.java index b55d3bcd51..ec0a9ecb54 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encoding.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Encoding.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Enumerated.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Enumerated.java index 7bdcc0e9fa..0a8a2ff249 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Enumerated.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Enumerated.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1GeneralizedTime.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1GeneralizedTime.java index efcd99f0fd..6f14c24707 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1GeneralizedTime.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1GeneralizedTime.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1InputStream.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1InputStream.java index 370980d8bc..19f1335a60 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1InputStream.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1InputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Integer.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Integer.java index 48f3baaa5f..dc7ad38294 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Integer.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Integer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1ObjectIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1ObjectIdentifier.java index d7f5cf6465..dbeaf67936 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1ObjectIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1ObjectIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OctetString.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OctetString.java index 4f9a27b51f..e0e47ccb50 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OctetString.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OctetString.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OutputStream.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OutputStream.java index 5b36aeb0d7..0914d7428f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OutputStream.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1OutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Primitive.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Primitive.java index 32b2a5b4d8..2ac70155b8 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Primitive.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Primitive.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Sequence.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Sequence.java index d69dd35ed8..138818b295 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Sequence.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Sequence.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Set.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Set.java index b7a66bd88f..08f78f7e6f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Set.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1Set.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1String.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1String.java index 6c978e7b77..693a2c03f9 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1String.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1String.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1TaggedObject.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1TaggedObject.java index 53ab8f1a04..67fb882929 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1TaggedObject.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1TaggedObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1UTCTime.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1UTCTime.java index e4cb324296..fb888a1fb7 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1UTCTime.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IASN1UTCTime.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERIA5String.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERIA5String.java index 4a0eb09a80..9f2fafb5f3 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERIA5String.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERIA5String.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERNull.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERNull.java index f7e573fae1..fad1306893 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERNull.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERNull.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDEROctetString.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDEROctetString.java index 13c832b08e..f79534acfb 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDEROctetString.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDEROctetString.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSequence.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSequence.java index 7d2e1710a0..9b87027154 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSequence.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSequence.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSet.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSet.java index eba39791f6..02ab45c4aa 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSet.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERSet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERTaggedObject.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERTaggedObject.java index b6925538a6..f894b09e79 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERTaggedObject.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/IDERTaggedObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cmp/IPKIFailureInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cmp/IPKIFailureInfo.java index f789b78450..73d533e31c 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cmp/IPKIFailureInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cmp/IPKIFailureInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttribute.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttribute.java index 05546abbef..702620a865 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttribute.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttribute.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttributeTable.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttributeTable.java index 2ced06bca2..df8da40763 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttributeTable.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IAttributeTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IContentInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IContentInfo.java index d28c112210..aa68c71917 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IContentInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IContentInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEncryptedContentInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEncryptedContentInfo.java index 31cecc7699..69f3277aed 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEncryptedContentInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEncryptedContentInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEnvelopedData.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEnvelopedData.java index 36c371dbcf..1c6c92567d 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEnvelopedData.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IEnvelopedData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IIssuerAndSerialNumber.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IIssuerAndSerialNumber.java index 5c777a958c..2d55032eec 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IIssuerAndSerialNumber.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IIssuerAndSerialNumber.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IKeyTransRecipientInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IKeyTransRecipientInfo.java index c68a00eec6..c64f039004 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IKeyTransRecipientInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IKeyTransRecipientInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IOriginatorInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IOriginatorInfo.java index 8030a7d5f3..af5e99cc01 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IOriginatorInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IOriginatorInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientIdentifier.java index 7f7f143c27..b0d8652214 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientInfo.java index 1b418547b5..08150847d8 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/cms/IRecipientInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/IOtherHashAlgAndValue.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/IOtherHashAlgAndValue.java index c717162964..472dd6914d 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/IOtherHashAlgAndValue.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/IOtherHashAlgAndValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISigPolicyQualifierInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISigPolicyQualifierInfo.java index cc5208e490..cedfea5fa7 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISigPolicyQualifierInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISigPolicyQualifierInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyId.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyId.java index 7cbf3db385..74fe1f89bb 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyId.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyId.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyIdentifier.java index 67b7666acc..abb4d2e859 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/esf/ISignaturePolicyIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertID.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertID.java index 929463a1bc..b94421b498 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertID.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertID.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertIDv2.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertIDv2.java index 08fc67e088..3cdd017804 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertIDv2.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/IESSCertIDv2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificate.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificate.java index cdf21b93ac..5f558ac7f4 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificate.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificate.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificateV2.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificateV2.java index 7e97c823be..4d8b02ac2f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificateV2.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ess/ISigningCertificateV2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IBasicOCSPResponse.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IBasicOCSPResponse.java index fd37d23c53..896d3d3168 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IBasicOCSPResponse.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IBasicOCSPResponse.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPObjectIdentifiers.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPObjectIdentifiers.java index c840fef726..76c346bcc1 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPObjectIdentifiers.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPObjectIdentifiers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponse.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponse.java index f51f09adce..06a7798e58 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponse.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponse.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponseStatus.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponseStatus.java index ba5da41db7..bc7860652c 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponseStatus.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IOCSPResponseStatus.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IResponseBytes.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IResponseBytes.java index f903db10f4..d4768b0a94 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IResponseBytes.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/ocsp/IResponseBytes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPKCSObjectIdentifiers.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPKCSObjectIdentifiers.java index d8396a155d..38dafc433f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPKCSObjectIdentifiers.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPKCSObjectIdentifiers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPrivateKeyInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPrivateKeyInfo.java index 3ba9a410a6..a31b9ddfdb 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPrivateKeyInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IPrivateKeyInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IRSASSAPSSParams.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IRSASSAPSSParams.java index fee18dcbdd..4db3e6928a 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IRSASSAPSSParams.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/pkcs/IRSASSAPSSParams.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/IMessageImprint.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/IMessageImprint.java index 81b9c5c3e9..910cf7c4c7 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/IMessageImprint.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/IMessageImprint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/ITSTInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/ITSTInfo.java index d630250ec6..5b7e9c896b 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/ITSTInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/tsp/ITSTInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/util/IASN1Dump.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/util/IASN1Dump.java index afd56370e0..f42067d1ec 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/util/IASN1Dump.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/util/IASN1Dump.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x500/IX500Name.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x500/IX500Name.java index 74ecc57d5c..4edf1e5e53 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x500/IX500Name.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x500/IX500Name.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAlgorithmIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAlgorithmIdentifier.java index 167b48e15a..6ab49f0a78 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAlgorithmIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAlgorithmIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAuthorityKeyIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAuthorityKeyIdentifier.java index 07403898ce..cc3f80ef27 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAuthorityKeyIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IAuthorityKeyIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IBasicConstraints.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IBasicConstraints.java index 4204a5b401..1cf40c459d 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IBasicConstraints.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IBasicConstraints.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLDistPoint.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLDistPoint.java index a9b8ebe298..09c0d7174e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLDistPoint.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLDistPoint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLReason.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLReason.java index abfd5291cc..c37f9c8251 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLReason.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ICRLReason.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPoint.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPoint.java index b0cc073e5e..2abdb47e5e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPoint.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPoint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPointName.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPointName.java index 112b4fd813..eda070b37d 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPointName.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IDistributionPointName.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtendedKeyUsage.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtendedKeyUsage.java index 9ac2094971..a3f5ec1c33 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtendedKeyUsage.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtendedKeyUsage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtension.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtension.java index 26f4702d56..62d7221dc8 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtension.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtensions.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtensions.java index 805a053e24..fb8b35ddd1 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtensions.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IExtensions.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralName.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralName.java index 12a6fb59af..53b07987d1 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralName.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralName.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralNames.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralNames.java index ec2f9f252e..ddaa9208d2 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralNames.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IGeneralNames.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IIssuingDistributionPoint.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IIssuingDistributionPoint.java index 01d6d12fb9..d9f0e15800 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IIssuingDistributionPoint.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IIssuingDistributionPoint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyPurposeId.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyPurposeId.java index c7abc6046c..a92cdf537b 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyPurposeId.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyPurposeId.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyUsage.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyUsage.java index 70d61763b9..4da5df3bc7 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyUsage.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IKeyUsage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IReasonFlags.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IReasonFlags.java index 9a4d6b1d33..344f3a1439 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IReasonFlags.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/IReasonFlags.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectKeyIdentifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectKeyIdentifier.java index 13b494a3cb..63f8f3c585 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectKeyIdentifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectKeyIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectPublicKeyInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectPublicKeyInfo.java index cff96ce52f..04882f2928 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectPublicKeyInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ISubjectPublicKeyInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,7 @@ This file is part of the iText (R) project. */ package com.itextpdf.commons.bouncycastle.asn1.x509; +import com.itextpdf.commons.bouncycastle.asn1.IASN1BitString; import com.itextpdf.commons.bouncycastle.asn1.IASN1Encodable; /** @@ -35,4 +36,11 @@ public interface ISubjectPublicKeyInfo extends IASN1Encodable { * @return {@link IAlgorithmIdentifier} wrapped AlgorithmIdentifier. */ IAlgorithmIdentifier getAlgorithm(); + + /** + * Calls actual {@code getPublicKeyData} method for the wrapped SubjectPublicKeyInfo object. + * + * @return {@link IASN1BitString} wrapped ASN1 Bit String representing public key data. + */ + IASN1BitString getPublicKeyData(); } diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITBSCertificate.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITBSCertificate.java index 58f5a035a1..cff1c51e7f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITBSCertificate.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITBSCertificate.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITime.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITime.java index f918a93d7b..aa1b708d9e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITime.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/ITime.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/qualified/IQCStatement.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/qualified/IQCStatement.java index fad17119e8..e14fa45351 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/qualified/IQCStatement.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/asn1/x509/qualified/IQCStatement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/AbstractCertIOException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/AbstractCertIOException.java index 54372e6f5d..5f10a8f980 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/AbstractCertIOException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/AbstractCertIOException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CRLHolder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CRLHolder.java index 5ae45d5127..e23c60992e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CRLHolder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CRLHolder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CertificateHolder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CertificateHolder.java index 0c6d32b8f0..4ad175f627 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CertificateHolder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509CertificateHolder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509ExtensionUtils.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509ExtensionUtils.java index 85e3dc4d30..079604dd19 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509ExtensionUtils.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509ExtensionUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509v2CRLBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509v2CRLBuilder.java index b9ed60e791..50101e1be3 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509v2CRLBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/IX509v2CRLBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaCertStore.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaCertStore.java index 265ce95ffa..609ba1850f 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaCertStore.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaCertStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateConverter.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateConverter.java index 3c677e3b5e..ceec5bdbf3 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateConverter.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateHolder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateHolder.java index 6e55dbd834..e4e13e4724 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateHolder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509CertificateHolder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509v3CertificateBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509v3CertificateBuilder.java index 3ac6c034da..88b99a0846 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509v3CertificateBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/jcajce/IJcaX509v3CertificateBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/AbstractOCSPException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/AbstractOCSPException.java index d8c3716bb8..9b642252f3 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/AbstractOCSPException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/AbstractOCSPException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPResp.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPResp.java index ffd3d46b79..9bdca35add 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPResp.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPResp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPRespBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPRespBuilder.java index 22da3d55ef..aaaa950dc7 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPRespBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IBasicOCSPRespBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateID.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateID.java index e886019b7c..fe6f16ec25 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateID.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateID.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateStatus.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateStatus.java index 08f69a7937..e2ea3970b6 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateStatus.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ICertificateStatus.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReq.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReq.java index 7b1fe59684..5efa366fda 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReq.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReq.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReqBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReqBuilder.java index a2d609fe67..856cb0e4bb 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReqBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPReqBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPResp.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPResp.java index 7ad3efc42a..9ed1c2d0bb 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPResp.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPResp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPRespBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPRespBuilder.java index d6ebb930d5..5ef0453c95 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPRespBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IOCSPRespBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IReq.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IReq.java index 9b03f917bd..7da4350141 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IReq.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IReq.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRespID.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRespID.java index d9b75cd419..78fe4feee1 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRespID.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRespID.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IResponderID.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IResponderID.java index 01c29e4aee..166d4212de 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IResponderID.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IResponderID.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,7 +32,14 @@ public interface IResponderID { /** * Calls actual {@code getName} method for the wrapped BasicOCSPResp object. * - * @return wrapped X500NAme. + * @return wrapped X500NAme */ IX500Name getName(); + + /** + * Calls actual {@code getKeyHash} method for the wrapped BasicOCSPResp object. + * + * @return {@code byte[]} representing corresponding key hash + */ + byte[] getKeyHash(); } diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRevokedStatus.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRevokedStatus.java index da3f1b0857..b1ac87182d 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRevokedStatus.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IRevokedStatus.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ISingleResp.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ISingleResp.java index c83c32f889..643060c839 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ISingleResp.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/ISingleResp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IUnknownStatus.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IUnknownStatus.java index 5d198bc3e5..d4a4ca1be2 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IUnknownStatus.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cert/ocsp/IUnknownStatus.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/AbstractCMSException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/AbstractCMSException.java index b824fface8..d34daee767 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/AbstractCMSException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/AbstractCMSException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ICMSEnvelopedData.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ICMSEnvelopedData.java index 9ecc6b71a7..1ec5d8a805 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ICMSEnvelopedData.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ICMSEnvelopedData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipient.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipient.java index dfc02e65d8..c6ada7107e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipient.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientId.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientId.java index 2bc8cadd56..20f52de410 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientId.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientId.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformation.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformation.java index 900f870e3a..bdbcd4f6dc 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformation.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformationStore.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformationStore.java index 39f554cbaf..8624fe843c 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformationStore.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/IRecipientInformationStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInfoGenerator.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInfoGenerator.java index 14477ad8cc..abe6bd9223 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInfoGenerator.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInfoGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInformationVerifier.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInformationVerifier.java index 984cebfa77..365534b0e0 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInformationVerifier.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/ISignerInformationVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSignerInfoGeneratorBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSignerInfoGeneratorBuilder.java index 938bb13ad0..1be25c74fa 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSignerInfoGeneratorBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSignerInfoGeneratorBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSimpleSignerInfoVerifierBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSimpleSignerInfoVerifierBuilder.java index eb65e10777..60309955de 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSimpleSignerInfoVerifierBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJcaSimpleSignerInfoVerifierBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyAgreeEnvelopedRecipient.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyAgreeEnvelopedRecipient.java index 17e65b4629..2dc772ddf6 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyAgreeEnvelopedRecipient.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyAgreeEnvelopedRecipient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyTransEnvelopedRecipient.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyTransEnvelopedRecipient.java index cbb7762942..a3aed12033 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyTransEnvelopedRecipient.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/cms/jcajce/IJceKeyTransEnvelopedRecipient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/fips/AbstractFipsUnapprovedOperationError.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/fips/AbstractFipsUnapprovedOperationError.java index 4e7bf523ce..a6de31f356 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/fips/AbstractFipsUnapprovedOperationError.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/fips/AbstractFipsUnapprovedOperationError.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/modes/IGCMBlockCipher.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/modes/IGCMBlockCipher.java index de7e5b3d3e..890ad15b80 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/modes/IGCMBlockCipher.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/crypto/modes/IGCMBlockCipher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/AbstractPEMException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/AbstractPEMException.java index acb6e9af9f..3813140013 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/AbstractPEMException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/AbstractPEMException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/IPEMParser.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/IPEMParser.java index 35d2eb5baa..c2e2b0028b 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/IPEMParser.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/IPEMParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJcaPEMKeyConverter.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJcaPEMKeyConverter.java index 5e37db3500..2eacbe71d0 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJcaPEMKeyConverter.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJcaPEMKeyConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJceOpenSSLPKCS8DecryptorProviderBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJceOpenSSLPKCS8DecryptorProviderBuilder.java index f3ea48aae6..d2978fcf78 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJceOpenSSLPKCS8DecryptorProviderBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/openssl/jcajce/IJceOpenSSLPKCS8DecryptorProviderBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/AbstractOperatorCreationException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/AbstractOperatorCreationException.java index 677ce4cd8f..8b661b5c59 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/AbstractOperatorCreationException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/AbstractOperatorCreationException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentSigner.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentSigner.java index 0eda1767ee..2ece98a0da 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentSigner.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentSigner.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentVerifierProvider.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentVerifierProvider.java index 19432e8100..6785e08f0a 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentVerifierProvider.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IContentVerifierProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculator.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculator.java index 99af4faf59..3459c9f26a 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculator.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculatorProvider.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculatorProvider.java index 6328ec5b14..153fe06145 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculatorProvider.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IDigestCalculatorProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IInputDecryptorProvider.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IInputDecryptorProvider.java index b3d28a725c..2c0e572712 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IInputDecryptorProvider.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/IInputDecryptorProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentSignerBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentSignerBuilder.java index 8a461774f5..6ca0b5a730 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentSignerBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentSignerBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentVerifierProviderBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentVerifierProviderBuilder.java index ade30835fb..f6d78eef22 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentVerifierProviderBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaContentVerifierProviderBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaDigestCalculatorProviderBuilder.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaDigestCalculatorProviderBuilder.java index 8ebf008c92..eb93ab4226 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaDigestCalculatorProviderBuilder.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/operator/jcajce/IJcaDigestCalculatorProviderBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/AbstractPKCSException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/AbstractPKCSException.java index c644cc37d5..65f44476ed 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/AbstractPKCSException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/AbstractPKCSException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/IPKCS8EncryptedPrivateKeyInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/IPKCS8EncryptedPrivateKeyInfo.java index 9361ea3372..abd7a75d6c 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/IPKCS8EncryptedPrivateKeyInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/pkcs/IPKCS8EncryptedPrivateKeyInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/AbstractTSPException.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/AbstractTSPException.java index ec0849c51a..4a8c0f2e64 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/AbstractTSPException.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/AbstractTSPException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequest.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequest.java index c3e3992a60..fca7a468e1 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequest.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequestGenerator.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequestGenerator.java index b85b19a404..a19b1d984a 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequestGenerator.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampRequestGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponse.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponse.java index 1cd7d4904f..f7d1633da6 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponse.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponse.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponseGenerator.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponseGenerator.java index c9ba877145..61a8488c9e 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponseGenerator.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampResponseGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampToken.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampToken.java index 7e6f303b18..4a47ace4f9 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampToken.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampToken.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenGenerator.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenGenerator.java index 3d484f7316..6d723f54c6 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenGenerator.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenInfo.java b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenInfo.java index 13b0162352..fcee5f0248 100644 --- a/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/bouncycastle/tsp/ITimeStampTokenInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/BiMap.java b/commons/src/main/java/com/itextpdf/commons/datastructures/BiMap.java index 3e26b885c8..b0bc2aa8e6 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/BiMap.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/BiMap.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentHashSet.java b/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentHashSet.java index 0d91845a18..0aecc5d110 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentHashSet.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentHashSet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -85,7 +85,7 @@ public Iterator iterator() { */ @Override public Object[] toArray() { - throw new UnsupportedOperationException(CommonsExceptionMessageConstant.UNSUPPORTED_OPERATION); + return set.toArray(); } /** diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentWeakMap.java b/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentWeakMap.java index 837e60eecb..4f30c14e19 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentWeakMap.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/ConcurrentWeakMap.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/ISimpleList.java b/commons/src/main/java/com/itextpdf/commons/datastructures/ISimpleList.java index 5846beb753..b1411463c3 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/ISimpleList.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/ISimpleList.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/NullUnlimitedList.java b/commons/src/main/java/com/itextpdf/commons/datastructures/NullUnlimitedList.java index 68bf231359..c8ca074c88 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/NullUnlimitedList.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/NullUnlimitedList.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/NullableContainer.java b/commons/src/main/java/com/itextpdf/commons/datastructures/NullableContainer.java index 93dc58dbe1..97f7bc9d43 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/NullableContainer.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/NullableContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/SimpleArrayList.java b/commons/src/main/java/com/itextpdf/commons/datastructures/SimpleArrayList.java index 1e9b0ebad6..d9dba07bf4 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/SimpleArrayList.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/SimpleArrayList.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/datastructures/Tuple2.java b/commons/src/main/java/com/itextpdf/commons/datastructures/Tuple2.java index 7c4e5d7aa4..d79df50515 100644 --- a/commons/src/main/java/com/itextpdf/commons/datastructures/Tuple2.java +++ b/commons/src/main/java/com/itextpdf/commons/datastructures/Tuple2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/exceptions/AggregatedException.java b/commons/src/main/java/com/itextpdf/commons/exceptions/AggregatedException.java index 0c83a12137..4fdfd905d6 100644 --- a/commons/src/main/java/com/itextpdf/commons/exceptions/AggregatedException.java +++ b/commons/src/main/java/com/itextpdf/commons/exceptions/AggregatedException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/exceptions/CommonsExceptionMessageConstant.java b/commons/src/main/java/com/itextpdf/commons/exceptions/CommonsExceptionMessageConstant.java index f2a3ca525b..cee68d7a28 100644 --- a/commons/src/main/java/com/itextpdf/commons/exceptions/CommonsExceptionMessageConstant.java +++ b/commons/src/main/java/com/itextpdf/commons/exceptions/CommonsExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/exceptions/ITextException.java b/commons/src/main/java/com/itextpdf/commons/exceptions/ITextException.java index e89d58fab8..6f4866397e 100644 --- a/commons/src/main/java/com/itextpdf/commons/exceptions/ITextException.java +++ b/commons/src/main/java/com/itextpdf/commons/exceptions/ITextException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/exceptions/ProductEventHandlerRepeatException.java b/commons/src/main/java/com/itextpdf/commons/exceptions/ProductEventHandlerRepeatException.java index b852bd6350..b54b677c91 100644 --- a/commons/src/main/java/com/itextpdf/commons/exceptions/ProductEventHandlerRepeatException.java +++ b/commons/src/main/java/com/itextpdf/commons/exceptions/ProductEventHandlerRepeatException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/exceptions/UnknownProductException.java b/commons/src/main/java/com/itextpdf/commons/exceptions/UnknownProductException.java index cb5f37f002..e97fff1087 100644 --- a/commons/src/main/java/com/itextpdf/commons/exceptions/UnknownProductException.java +++ b/commons/src/main/java/com/itextpdf/commons/exceptions/UnknownProductException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/IJsonSerializable.java b/commons/src/main/java/com/itextpdf/commons/json/IJsonSerializable.java new file mode 100644 index 0000000000..0074b3c018 --- /dev/null +++ b/commons/src/main/java/com/itextpdf/commons/json/IJsonSerializable.java @@ -0,0 +1,35 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.commons.json; + +/** + * Interface which marks classes serializable to JSON AST. + */ +public interface IJsonSerializable { + /** + * Serializes object to JSON AST. + * + * @return {@link JsonValue} serialized object + */ + JsonValue toJson(); +} diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonArray.java b/commons/src/main/java/com/itextpdf/commons/json/JsonArray.java index 1905168a8a..d158212c7d 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonArray.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonArray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonBoolean.java b/commons/src/main/java/com/itextpdf/commons/json/JsonBoolean.java index d2e31e5f01..dc7ba2265b 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonBoolean.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonBoolean.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonNull.java b/commons/src/main/java/com/itextpdf/commons/json/JsonNull.java index ac0306dd38..bc4ce1b84e 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonNull.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonNull.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonNumber.java b/commons/src/main/java/com/itextpdf/commons/json/JsonNumber.java index 0839fd352c..e5e9c42883 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonNumber.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonNumber.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonObject.java b/commons/src/main/java/com/itextpdf/commons/json/JsonObject.java index 1768c624c5..cae60e2398 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonObject.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -59,6 +59,17 @@ public Map getFields() { return new LinkedHashMap<>(fields); } + /** + * Gets particular json object field. + * + * @param fieldName {@link String} name of the field + * + * @return field as {@link JsonValue} + */ + public JsonValue getField(String fieldName) { + return fields.get(fieldName); + } + /** * Adds a new field into json object. * diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonString.java b/commons/src/main/java/com/itextpdf/commons/json/JsonString.java index 30e1669019..c936be72a2 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonString.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonString.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonValue.java b/commons/src/main/java/com/itextpdf/commons/json/JsonValue.java index 095daae5fd..69d11ed4e1 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonValue.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonValueConverter.java b/commons/src/main/java/com/itextpdf/commons/json/JsonValueConverter.java index 4828314506..17dfdc2589 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonValueConverter.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonValueConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonValueDeserializer.java b/commons/src/main/java/com/itextpdf/commons/json/JsonValueDeserializer.java index cb0a058aeb..157fb04bc6 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonValueDeserializer.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonValueDeserializer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/json/JsonValueSerializer.java b/commons/src/main/java/com/itextpdf/commons/json/JsonValueSerializer.java index dd73e24ec2..4e962c5588 100644 --- a/commons/src/main/java/com/itextpdf/commons/json/JsonValueSerializer.java +++ b/commons/src/main/java/com/itextpdf/commons/json/JsonValueSerializer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/logs/CommonsLogMessageConstant.java b/commons/src/main/java/com/itextpdf/commons/logs/CommonsLogMessageConstant.java index b9580561d2..36e5fd09dd 100644 --- a/commons/src/main/java/com/itextpdf/commons/logs/CommonsLogMessageConstant.java +++ b/commons/src/main/java/com/itextpdf/commons/logs/CommonsLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/Action.java b/commons/src/main/java/com/itextpdf/commons/utils/Action.java index f3728bbfe5..2f76b69678 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/Action.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/Action.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/DIContainer.java b/commons/src/main/java/com/itextpdf/commons/utils/DIContainer.java index c8492602fa..87b51fac48 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/DIContainer.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/DIContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/DIContainerConfigurations.java b/commons/src/main/java/com/itextpdf/commons/utils/DIContainerConfigurations.java index 8237a57b99..511f112226 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/DIContainerConfigurations.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/DIContainerConfigurations.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/DateTimeUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/DateTimeUtil.java index 31386c9785..2a8da6c0f7 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/DateTimeUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/DateTimeUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -28,6 +28,7 @@ This file is part of the iText (R) project. import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -58,6 +59,17 @@ public static double getUtcMillisFromEpoch(Calendar calendar) { return calendar.getTimeInMillis(); } + /** + * Gets the {@link LocalDateTime} from UTC seconds from the epoch. + * + * @param epochSecond the UTC milliseconds from the epoch + * + * @return local time from UTC seconds + */ + public static LocalDateTime ofEpochSecondUTC(long epochSecond) { + return LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneOffset.UTC); + } + /** * Gets the date as {@link Calendar}. * @@ -94,6 +106,16 @@ public static Date getCurrentTimeDate() { return new Date(); } + + /** + * Gets local current time consistently. + * + * @return {@link LocalDateTime} at which it was allocated, measured to the nearest millisecond + */ + public static LocalDateTime getLocalDateTime() { + return LocalDateTime.now(); + } + /** * Adds the specified amount of days to the given calendar field. * @@ -202,6 +224,30 @@ public static Date parse(String date, String format) { } } + /** + * Parses date with specified format into {@link LocalDateTime}. + * + * @param date {@link String} date to parse + * @param format {@link String} parsing format + * + * @return {@link LocalDateTime} parsed date + */ + public static LocalDateTime parseToLocalDateTime(String date, String format) { + return DateTimeFormatter.ofPattern(format).parse(date, LocalDateTime::from); + } + + /** + * Parses {@link LocalDateTime} local date time according to specified format. + * + * @param dateTime {@link LocalDateTime} to parse + * @param format {@link String} parsing format + * + * @return parse date time as {@link String} + */ + public static String parseLocalDateTime(LocalDateTime dateTime, String format) { + return dateTime.format(DateTimeFormatter.ofPattern(format)); + } + /** * Format passing date with default yyyy-MM-dd pattern. * @@ -278,6 +324,18 @@ public static Date createUtcDateTime(int year, int month, int day, int hour, int return calendar.getTime(); } + /** + * Serialize time using format YYYY-MM-DDTHH-MM-SS + * + * @param dateTime local time to be converted + * + * @return serialized time + */ + public static String serializeDateToISO8601(LocalDateTime dateTime) { + return String.format("%04d-%02d-%02dT%02d:%02d:%02d", dateTime.getYear(), dateTime.getMonthValue(), + dateTime.getDayOfMonth(), dateTime.getHour(), dateTime.getMinute(), dateTime.getSecond()); + } + private static DateFormat initParserSDF(String pattern) { final SimpleDateFormat parserSDF = new SimpleDateFormat(pattern); parserSDF.setCalendar(new GregorianCalendar()); diff --git a/commons/src/main/java/com/itextpdf/commons/utils/EncodingUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/EncodingUtil.java index ef5cfbdb09..0bb600ac9f 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/EncodingUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/EncodingUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/FileUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/FileUtil.java index be01b47789..815c737a02 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/FileUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/FileUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/IOThrowingAction.java b/commons/src/main/java/com/itextpdf/commons/utils/IOThrowingAction.java index 6ab5466d70..8ce513afbd 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/IOThrowingAction.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/IOThrowingAction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/JsonUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/JsonUtil.java index 19ba460b4c..84b91b63f0 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/JsonUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/JsonUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/MapUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/MapUtil.java index 857a223a20..f57557ca54 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/MapUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/MapUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/MessageFormatUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/MessageFormatUtil.java index a9f0562524..317254c25b 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/MessageFormatUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/MessageFormatUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -40,6 +40,8 @@ private MessageFormatUtil() { * Indexed arguments can be referred with {index}, * to escape curly braces you have to double them. * + * Warning!: Do not use this method in a performance sensitive context. + * *

* Only basic escaping is allowed, single quotes in a set of curly braces are not supported and * multiple escaped braces in a row are also not supported diff --git a/commons/src/main/java/com/itextpdf/commons/utils/MultiThreadingUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/MultiThreadingUtil.java index 8fa8af495d..f5a9f56718 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/MultiThreadingUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/MultiThreadingUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/Pair.java b/commons/src/main/java/com/itextpdf/commons/utils/Pair.java index 59ead35d91..63bf4474b9 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/Pair.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/Pair.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/PlaceHolderTextUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/PlaceHolderTextUtil.java index e65391ba09..b0afd7aa36 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/PlaceHolderTextUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/PlaceHolderTextUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/ProcessInfo.java b/commons/src/main/java/com/itextpdf/commons/utils/ProcessInfo.java index d182de9b96..e2fb982358 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/ProcessInfo.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/ProcessInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/RuntimeUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/RuntimeUtil.java index b88cedae67..f41fbacce7 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/RuntimeUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/RuntimeUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/StringNormalizer.java b/commons/src/main/java/com/itextpdf/commons/utils/StringNormalizer.java index 19f5b0a680..0321525008 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/StringNormalizer.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/StringNormalizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/StringSplitUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/StringSplitUtil.java index 2c27f2b1b6..77ee6c290c 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/StringSplitUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/StringSplitUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/SystemUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/SystemUtil.java index cedee2e53e..4fe7c91785 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/SystemUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/SystemUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/ThrowingAction.java b/commons/src/main/java/com/itextpdf/commons/utils/ThrowingAction.java index 49553abd1b..2b4bf5f470 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/ThrowingAction.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/ThrowingAction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/ThrowingSupplier.java b/commons/src/main/java/com/itextpdf/commons/utils/ThrowingSupplier.java index 459c2f6bfd..125e9e782e 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/ThrowingSupplier.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/ThrowingSupplier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/TimerUtil.java b/commons/src/main/java/com/itextpdf/commons/utils/TimerUtil.java index a2287e619d..12f79aab89 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/TimerUtil.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/TimerUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/ZipFileReader.java b/commons/src/main/java/com/itextpdf/commons/utils/ZipFileReader.java index c7fd112f32..89ecc0c7b4 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/ZipFileReader.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/ZipFileReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/main/java/com/itextpdf/commons/utils/ZipFileWriter.java b/commons/src/main/java/com/itextpdf/commons/utils/ZipFileWriter.java index ada7e3e623..6a3fe931ad 100644 --- a/commons/src/main/java/com/itextpdf/commons/utils/ZipFileWriter.java +++ b/commons/src/main/java/com/itextpdf/commons/utils/ZipFileWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/sharpenconfig/java/com/itextpdf/commons/BCWrappersConfigurationUtils.java b/commons/src/sharpenconfig/java/com/itextpdf/commons/BCWrappersConfigurationUtils.java index 2e26d3a51a..922b32c319 100644 --- a/commons/src/sharpenconfig/java/com/itextpdf/commons/BCWrappersConfigurationUtils.java +++ b/commons/src/sharpenconfig/java/com/itextpdf/commons/BCWrappersConfigurationUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/sharpenconfig/java/com/itextpdf/commons/SharpenConfigMapping.java b/commons/src/sharpenconfig/java/com/itextpdf/commons/SharpenConfigMapping.java index f1de4b68b1..8548efddcd 100644 --- a/commons/src/sharpenconfig/java/com/itextpdf/commons/SharpenConfigMapping.java +++ b/commons/src/sharpenconfig/java/com/itextpdf/commons/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -150,6 +150,7 @@ public void applyMappingConfiguration(MappingConfigurator configurator) { configurator.mapMethod("com.itextpdf.commons.utils.DateTimeUtil.addDaysToDate", "AddDays"); configurator.mapMethod("com.itextpdf.commons.utils.DateTimeUtil.addYearsToDate", "AddYears"); configurator.mapMethod("com.itextpdf.commons.utils.DateTimeUtil.getCurrentTimeDate", "GetCurrentUtcTime"); + configurator.mapMethod("com.itextpdf.commons.utils.DateTimeUtil.getLocalDateTime", "GetCurrentTime"); configurator.mapMethod("java.time.LocalDateTime.of", "iText.Commons.Utils.DateTimeUtil.CreateDateTime"); configurator.mapMethod("java.nio.file.Files.newInputStream", "iText.Commons.Utils.FileUtil.GetInputStreamForFile"); diff --git a/commons/src/sharpenconfig/java/com/itextpdf/commons/UseBCWrappersModuleOption.java b/commons/src/sharpenconfig/java/com/itextpdf/commons/UseBCWrappersModuleOption.java index 0e3a7348b6..487618da38 100644 --- a/commons/src/sharpenconfig/java/com/itextpdf/commons/UseBCWrappersModuleOption.java +++ b/commons/src/sharpenconfig/java/com/itextpdf/commons/UseBCWrappersModuleOption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandlerTest.java b/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandlerTest.java index 0f253e1ce5..40b13ceb1e 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandlerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedEventHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedITextEventTest.java b/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedITextEventTest.java index d978887335..4d84aad462 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedITextEventTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/AbstractContextBasedITextEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/AbstractITextConfigurationEventTest.java b/commons/src/test/java/com/itextpdf/commons/actions/AbstractITextConfigurationEventTest.java index 24fcb02235..a77594f7f9 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/AbstractITextConfigurationEventTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/AbstractITextConfigurationEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/AbstractProductITextEventTest.java b/commons/src/test/java/com/itextpdf/commons/actions/AbstractProductITextEventTest.java index 7bcec5396d..89d6d7c83d 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/AbstractProductITextEventTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/AbstractProductITextEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/AbstractStatisticsEventTest.java b/commons/src/test/java/com/itextpdf/commons/actions/AbstractStatisticsEventTest.java index 72d256be9c..ce226dc8e0 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/AbstractStatisticsEventTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/AbstractStatisticsEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/EventManagerTest.java b/commons/src/test/java/com/itextpdf/commons/actions/EventManagerTest.java index 2bcb5027cd..098c206892 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/EventManagerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/EventManagerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerIntegrationTest.java b/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerIntegrationTest.java index 4a995844bf..f8d75e9f7b 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerIntegrationTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerTest.java b/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerTest.java index c0ced4bb3c..5e0d18c4e4 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/ProductEventHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeperTest.java b/commons/src/test/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeperTest.java index c086e1110c..c7efdaa320 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeperTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/ProductProcessorFactoryKeeperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/confirmations/ConfirmEventTest.java b/commons/src/test/java/com/itextpdf/commons/actions/confirmations/ConfirmEventTest.java index 0c639454b8..a87438a72d 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/confirmations/ConfirmEventTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/confirmations/ConfirmEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/contexts/ContextManagerTest.java b/commons/src/test/java/com/itextpdf/commons/actions/contexts/ContextManagerTest.java index 5920ceea5d..c8c80924da 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/contexts/ContextManagerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/contexts/ContextManagerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/data/CommonsProductDataTest.java b/commons/src/test/java/com/itextpdf/commons/actions/data/CommonsProductDataTest.java index e046db4d9d..17afcb3ef3 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/data/CommonsProductDataTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/data/CommonsProductDataTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/data/ProductDataTest.java b/commons/src/test/java/com/itextpdf/commons/actions/data/ProductDataTest.java index ca84f68228..4dcf68df66 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/data/ProductDataTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/data/ProductDataTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessorTest.java index 2358797041..ba6b9df441 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultITextProductEventProcessorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactoryTest.java b/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactoryTest.java index 78784c0795..f4fce85201 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactoryTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/processors/DefaultProductProcessorFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessorTest.java index 327a7375e1..8a22ed24cb 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplITextProductEventProcessorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactoryTest.java b/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactoryTest.java index 1c8524d43f..efc5b5382f 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactoryTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/processors/UnderAgplProductProcessorFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulatorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulatorTest.java index 1251c9a25b..7ebde533dc 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulatorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightSincePlaceholderPopulatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulatorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulatorTest.java index 0257ee666d..3bd70b6f4e 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulatorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/producer/CopyrightToPlaceholderPopulatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulatorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulatorTest.java index 489cfa683b..214e506a7d 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulatorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/producer/CurrentDatePlaceholderPopulatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/producer/ProducerBuilderTest.java b/commons/src/test/java/com/itextpdf/commons/actions/producer/ProducerBuilderTest.java index f7834ea644..7797ea8c7b 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/producer/ProducerBuilderTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/producer/ProducerBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulatorTest.java b/commons/src/test/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulatorTest.java index 8cd8c5d783..444db16dd5 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulatorTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/producer/UsedProductsPlaceholderPopulatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdManagerTest.java b/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdManagerTest.java index 475edcf035..e0afc01992 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdManagerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdManagerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdTest.java b/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdTest.java index 5a5087760f..ee625c491c 100644 --- a/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdTest.java +++ b/commons/src/test/java/com/itextpdf/commons/actions/sequence/SequenceIdTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/BiMapTest.java b/commons/src/test/java/com/itextpdf/commons/datastructures/BiMapTest.java index 772c643a1c..1e35e2d421 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/BiMapTest.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/BiMapTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentHashSetTest.java b/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentHashSetTest.java index a56fd4e036..0901dfc5e3 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentHashSetTest.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentHashSetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -152,4 +152,16 @@ public void hashCodeTest() { anotherSet.add("2"); Assertions.assertNotEquals(set.hashCode(), anotherSet.hashCode()); } -} \ No newline at end of file + + @Test + public void toArrayTest() { + ConcurrentHashSet set = new ConcurrentHashSet<>(); + set.add("1"); + set.add("2"); + + Object[] arr = set.toArray(); + Assertions.assertEquals(2, arr.length); + Assertions.assertTrue(arr[0].equals("1") || arr[0].equals("2")); + Assertions.assertTrue(arr[1].equals("1") || arr[1].equals("2")); + } +} diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentWeakMapTest.java b/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentWeakMapTest.java index 2108ea1444..c74ca6dcaa 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentWeakMapTest.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/ConcurrentWeakMapTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/Tuple2Test.java b/commons/src/test/java/com/itextpdf/commons/datastructures/Tuple2Test.java index e2f6257ceb..ac0742e3dc 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/Tuple2Test.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/Tuple2Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/portable/NullUnlimitedListTest.java b/commons/src/test/java/com/itextpdf/commons/datastructures/portable/NullUnlimitedListTest.java index 108323dfbc..df37a0164c 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/portable/NullUnlimitedListTest.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/portable/NullUnlimitedListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -236,4 +236,4 @@ public void executeActions(List>> actionList) { } -} \ No newline at end of file +} diff --git a/commons/src/test/java/com/itextpdf/commons/datastructures/portable/SimpleArrayListTest.java b/commons/src/test/java/com/itextpdf/commons/datastructures/portable/SimpleArrayListTest.java index c2fd3602a6..47961486ee 100644 --- a/commons/src/test/java/com/itextpdf/commons/datastructures/portable/SimpleArrayListTest.java +++ b/commons/src/test/java/com/itextpdf/commons/datastructures/portable/SimpleArrayListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -113,4 +113,4 @@ public void isEmpty() { list.add(1); assertFalse(list.isEmpty()); } -} \ No newline at end of file +} diff --git a/commons/src/test/java/com/itextpdf/commons/ecosystem/ITextTestEvent.java b/commons/src/test/java/com/itextpdf/commons/ecosystem/ITextTestEvent.java index 2c2571ca0b..421c61b8a3 100644 --- a/commons/src/test/java/com/itextpdf/commons/ecosystem/ITextTestEvent.java +++ b/commons/src/test/java/com/itextpdf/commons/ecosystem/ITextTestEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/ecosystem/TestConfigurationEvent.java b/commons/src/test/java/com/itextpdf/commons/ecosystem/TestConfigurationEvent.java index a0e9b7a272..5eeb32184d 100644 --- a/commons/src/test/java/com/itextpdf/commons/ecosystem/TestConfigurationEvent.java +++ b/commons/src/test/java/com/itextpdf/commons/ecosystem/TestConfigurationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/ecosystem/TestMetaInfo.java b/commons/src/test/java/com/itextpdf/commons/ecosystem/TestMetaInfo.java index 987422ab02..42d3637742 100644 --- a/commons/src/test/java/com/itextpdf/commons/ecosystem/TestMetaInfo.java +++ b/commons/src/test/java/com/itextpdf/commons/ecosystem/TestMetaInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/exceptions/AggregatedExceptionTest.java b/commons/src/test/java/com/itextpdf/commons/exceptions/AggregatedExceptionTest.java index 9cab431631..e03ccb5dd0 100644 --- a/commons/src/test/java/com/itextpdf/commons/exceptions/AggregatedExceptionTest.java +++ b/commons/src/test/java/com/itextpdf/commons/exceptions/AggregatedExceptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/exceptions/ITextExceptionTest.java b/commons/src/test/java/com/itextpdf/commons/exceptions/ITextExceptionTest.java index 8f71c97a90..8e6cd353c0 100644 --- a/commons/src/test/java/com/itextpdf/commons/exceptions/ITextExceptionTest.java +++ b/commons/src/test/java/com/itextpdf/commons/exceptions/ITextExceptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/json/JsonTest.java b/commons/src/test/java/com/itextpdf/commons/json/JsonTest.java index 0a4b7e8b3f..a0f9b5bb6c 100644 --- a/commons/src/test/java/com/itextpdf/commons/json/JsonTest.java +++ b/commons/src/test/java/com/itextpdf/commons/json/JsonTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/Base64Test.java b/commons/src/test/java/com/itextpdf/commons/utils/Base64Test.java index 93ce56e56b..4e39a3ad4c 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/Base64Test.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/Base64Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/DIContainerTest.java b/commons/src/test/java/com/itextpdf/commons/utils/DIContainerTest.java index b049c1ab1b..94002d4e21 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/DIContainerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/DIContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/DateTimeUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/DateTimeUtilTest.java index 3a4deba0c4..560408a88c 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/DateTimeUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/DateTimeUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,6 +24,7 @@ This file is part of the iText (R) project. import com.itextpdf.test.ExtendedITextTest; +import java.time.LocalDateTime; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -122,4 +123,35 @@ public void addYearNegativeValueTest () { Assertions.assertEquals(1997, newDate.getYear()); } + + @Test + public void serializeDateToISO8601Test () { + LocalDateTime localDateTime = LocalDateTime.of(2000, 1, 11, 12, 13, 14); + String actualString = DateTimeUtil.serializeDateToISO8601(localDateTime); + Assertions.assertEquals("2000-01-11T12:13:14", actualString); + } + + @Test + public void ofEpochSecondUTCTest () { + //actual time 2001-09-09T01:46:40 + long timeInSeconds = 1000000000; + LocalDateTime actualTime = DateTimeUtil.ofEpochSecondUTC(timeInSeconds); + Assertions.assertEquals(2001, actualTime.getYear()); + Assertions.assertEquals(9, actualTime.getMonthValue()); + Assertions.assertEquals(9, actualTime.getDayOfMonth()); + Assertions.assertEquals(1, actualTime.getHour()); + Assertions.assertEquals(46, actualTime.getMinute()); + Assertions.assertEquals(40, actualTime.getSecond()); + } + + @Test + public void getLocalDateTimeTest () throws InterruptedException { + LocalDateTime expectedTime = LocalDateTime.now(); + Thread.sleep(10); + LocalDateTime actualTime = DateTimeUtil.getLocalDateTime(); + Assertions.assertEquals(expectedTime.getYear(), actualTime.getYear()); + Assertions.assertEquals(expectedTime.getMonth(), actualTime.getMonth()); + Assertions.assertEquals(expectedTime.getDayOfMonth(), actualTime.getDayOfMonth()); + Assertions.assertTrue(expectedTime.isBefore(actualTime)); + } } diff --git a/commons/src/test/java/com/itextpdf/commons/utils/FileUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/FileUtilTest.java index 74b8a2af28..4701a45144 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/FileUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/FileUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -72,4 +72,4 @@ public void getFileOutputStreamTest() throws IOException { byte[] resultBytes = Files.readAllBytes(Paths.get(filePath)); Assertions.assertEquals(text, new String(resultBytes, StandardCharsets.UTF_8)); } -} \ No newline at end of file +} diff --git a/commons/src/test/java/com/itextpdf/commons/utils/JsonUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/JsonUtilTest.java index b61c554567..b7231898ac 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/JsonUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/JsonUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/MapUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/MapUtilTest.java index 6b6e93ea8f..fcc2c87a6b 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/MapUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/MapUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/MessageFormatUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/MessageFormatUtilTest.java index 65d3bcd0f1..71d57a1e1a 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/MessageFormatUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/MessageFormatUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/MultiThreadingUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/MultiThreadingUtilTest.java index fa193e1da5..31f2557b4e 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/MultiThreadingUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/MultiThreadingUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,4 +44,4 @@ public void simpleTest() { assertNotNull(result); assertNotNull(result.get(0)); } -} \ No newline at end of file +} diff --git a/commons/src/test/java/com/itextpdf/commons/utils/PlaceHolderTextUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/PlaceHolderTextUtilTest.java index e8d225d5d3..246168c790 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/PlaceHolderTextUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/PlaceHolderTextUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/ProcessInfoTest.java b/commons/src/test/java/com/itextpdf/commons/utils/ProcessInfoTest.java index 598ac2d1b4..d91755b0e1 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/ProcessInfoTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/ProcessInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/RuntimeUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/RuntimeUtilTest.java index dccae48068..9770041432 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/RuntimeUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/RuntimeUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -46,4 +46,4 @@ void isClassNotLoaded() { "The NonExistentClass should not be loaded" ); } -} \ No newline at end of file +} diff --git a/commons/src/test/java/com/itextpdf/commons/utils/StringNormalizerTest.java b/commons/src/test/java/com/itextpdf/commons/utils/StringNormalizerTest.java index 56fea18f5a..2c8416c148 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/StringNormalizerTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/StringNormalizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/StringUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/StringUtilTest.java index 1efa13b487..ca6eda51ce 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/StringUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/StringUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/SystemUtilTest.java b/commons/src/test/java/com/itextpdf/commons/utils/SystemUtilTest.java index 79b707be4f..53f9cca5bd 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/SystemUtilTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/SystemUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/ZipFileReaderTest.java b/commons/src/test/java/com/itextpdf/commons/utils/ZipFileReaderTest.java index dbbb48d6d5..5d4dea173f 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/ZipFileReaderTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/ZipFileReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/commons/src/test/java/com/itextpdf/commons/utils/ZipFileWriterTest.java b/commons/src/test/java/com/itextpdf/commons/utils/ZipFileWriterTest.java index 533f2f3656..b26dee2dec 100644 --- a/commons/src/test/java/com/itextpdf/commons/utils/ZipFileWriterTest.java +++ b/commons/src/test/java/com/itextpdf/commons/utils/ZipFileWriterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/font-asian/pom.xml b/font-asian/pom.xml index c8703c770f..69b6c251ac 100644 --- a/font-asian/pom.xml +++ b/font-asian/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT font-asian diff --git a/forms/pom.xml b/forms/pom.xml index e0c786d40c..1be8f97f2f 100644 --- a/forms/pom.xml +++ b/forms/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT forms diff --git a/forms/src/main/java/com/itextpdf/forms/FormDefaultAccessibilityProperties.java b/forms/src/main/java/com/itextpdf/forms/FormDefaultAccessibilityProperties.java index 6a43a86695..99a9d2da64 100644 --- a/forms/src/main/java/com/itextpdf/forms/FormDefaultAccessibilityProperties.java +++ b/forms/src/main/java/com/itextpdf/forms/FormDefaultAccessibilityProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/PdfAcroForm.java b/forms/src/main/java/com/itextpdf/forms/PdfAcroForm.java index 52b84a27ab..1430e5ca86 100644 --- a/forms/src/main/java/com/itextpdf/forms/PdfAcroForm.java +++ b/forms/src/main/java/com/itextpdf/forms/PdfAcroForm.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/PdfPageFormCopier.java b/forms/src/main/java/com/itextpdf/forms/PdfPageFormCopier.java index 272ec5a589..fa1aa547cd 100644 --- a/forms/src/main/java/com/itextpdf/forms/PdfPageFormCopier.java +++ b/forms/src/main/java/com/itextpdf/forms/PdfPageFormCopier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/PdfSigFieldLock.java b/forms/src/main/java/com/itextpdf/forms/PdfSigFieldLock.java index 8fae74674c..ff89256615 100644 --- a/forms/src/main/java/com/itextpdf/forms/PdfSigFieldLock.java +++ b/forms/src/main/java/com/itextpdf/forms/PdfSigFieldLock.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/exceptions/AttributeNotFoundException.java b/forms/src/main/java/com/itextpdf/forms/exceptions/AttributeNotFoundException.java index b41e28f65c..1011fe537b 100644 --- a/forms/src/main/java/com/itextpdf/forms/exceptions/AttributeNotFoundException.java +++ b/forms/src/main/java/com/itextpdf/forms/exceptions/AttributeNotFoundException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/exceptions/FormsExceptionMessageConstant.java b/forms/src/main/java/com/itextpdf/forms/exceptions/FormsExceptionMessageConstant.java index 54e411b0d3..1431d7e09e 100644 --- a/forms/src/main/java/com/itextpdf/forms/exceptions/FormsExceptionMessageConstant.java +++ b/forms/src/main/java/com/itextpdf/forms/exceptions/FormsExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/exceptions/XfdfException.java b/forms/src/main/java/com/itextpdf/forms/exceptions/XfdfException.java index 32cf46694c..87c90c8a8f 100644 --- a/forms/src/main/java/com/itextpdf/forms/exceptions/XfdfException.java +++ b/forms/src/main/java/com/itextpdf/forms/exceptions/XfdfException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/AbstractPdfFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/AbstractPdfFormField.java index d4aeb8f506..777563364a 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/AbstractPdfFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/AbstractPdfFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilder.java index b3114be018..04528841ca 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilder.java index 38eb3f6a41..78c5838c84 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/FormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/FormFieldBuilder.java index 57a38f0e62..8e6152e684 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/FormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/FormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainer.java b/forms/src/main/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainer.java index 26ba04c997..cf36b16504 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainer.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilder.java index f7f9eea024..ec81b13ff3 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java index d6d5fc2034..06148ddcc9 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfButtonFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java index 410684d5df..55b081b87c 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfChoiceFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotation.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotation.java index 4e049cc168..2ecb2a8d8f 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotation.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotationUtil.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotationUtil.java index 1f0c252eee..2e1940452b 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotationUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormAnnotationUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormCreator.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormCreator.java index 2a0034ceb8..8694df6fc2 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormCreator.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormCreator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFactory.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFactory.java index 35406777a2..39768822ef 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFactory.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java index be4cac9404..0ffc5a4c56 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -96,17 +96,17 @@ public class PdfFormField extends AbstractPdfFormField { public static final int FF_PASSWORD = makeFieldFlag(14); /** - * The ReadOnly flag, which specifies whether or not the field can be changed. + * The ReadOnly flag, which specifies whether the field can be changed. */ public static final int FF_READ_ONLY = makeFieldFlag(1); /** - * The Required flag, which specifies whether or not the field must be filled in. + * The Required flag, which specifies whether the field must be filled in. */ public static final int FF_REQUIRED = makeFieldFlag(2); /** - * The NoExport flag, which specifies whether or not exporting is forbidden. + * The NoExport flag, which specifies whether exporting is forbidden. */ public static final int FF_NO_EXPORT = makeFieldFlag(3); @@ -115,7 +115,6 @@ public class PdfFormField extends AbstractPdfFormField { */ private static final Set FORM_FIELD_KEYS = new HashSet<>(); - private static final Logger LOGGER = LoggerFactory.getLogger(PdfFormField.class); protected String text; @@ -157,7 +156,7 @@ public class PdfFormField extends AbstractPdfFormField { * Creates a form field as a wrapper object around a {@link PdfDictionary}. * This {@link PdfDictionary} must be an indirect object. * - * @param pdfObject the dictionary to be wrapped, must have an indirect reference. + * @param pdfObject the dictionary to be wrapped, must have an indirect reference */ public PdfFormField(PdfDictionary pdfObject) { super(pdfObject); @@ -196,7 +195,7 @@ private void createKids(PdfDictionary pdfObject) { /** * Creates a minimal {@link PdfFormField}. * - * @param pdfDocument The {@link PdfDocument} instance. + * @param pdfDocument The {@link PdfDocument} instance */ protected PdfFormField(PdfDocument pdfDocument) { this((PdfDictionary) new PdfDictionary().makeIndirect(pdfDocument)); @@ -209,8 +208,8 @@ protected PdfFormField(PdfDocument pdfDocument) { /** * Creates a form field as a parent of a {@link PdfWidgetAnnotation}. * - * @param widget The widget which will be a kid of the {@link PdfFormField}. - * @param pdfDocument The {@link PdfDocument} instance. + * @param widget The widget which will be a kid of the {@link PdfFormField} + * @param pdfDocument The {@link PdfDocument} instance */ protected PdfFormField(PdfWidgetAnnotation widget, PdfDocument pdfDocument) { this((PdfDictionary) new PdfDictionary().makeIndirect(pdfDocument)); @@ -225,11 +224,11 @@ protected PdfFormField(PdfWidgetAnnotation widget, PdfDocument pdfDocument) { * Creates a (subtype of) {@link PdfFormField} object. The type of the object * depends on the FT entry in the pdfObject parameter. * - * @param pdfObject assumed to be either a {@link PdfDictionary}, or a - * {@link PdfIndirectReference} to a {@link PdfDictionary}. - * @param document the {@link PdfDocument} to create the field in. - * @return a new {@link PdfFormField}, or null if - * pdfObject is not a form field. + * @param pdfObject assumed to be either a {@link PdfDictionary}, + * or a {@link PdfIndirectReference} to a {@link PdfDictionary} + * @param document the {@link PdfDocument} to create the field in + * + * @return a new {@link PdfFormField}, or null if pdfObject is not a form field */ public static PdfFormField makeFormField(PdfObject pdfObject, PdfDocument document) { if (!pdfObject.isDictionary()) { @@ -268,11 +267,12 @@ public static PdfFormField makeFormField(PdfObject pdfObject, PdfDocument docume * Creates a (subtype of) {@link PdfFormField} or {@link PdfFormAnnotation} object depending on * pdfObject. * - * @param pdfObject assumed to be either a {@link PdfDictionary}, or a - * {@link PdfIndirectReference} to a {@link PdfDictionary}. - * @param document the {@link PdfDocument} to create the field in. + * @param pdfObject assumed to be either a {@link PdfDictionary}, + * or a {@link PdfIndirectReference} to a {@link PdfDictionary} + * @param document the {@link PdfDocument} to create the field in + * * @return a new {@link AbstractPdfFormField}, or null if - * pdfObject is not a form field and is not a widget annotation. + * pdfObject is not a form field and is not a widget annotation */ public static AbstractPdfFormField makeFormFieldOrAnnotation(PdfObject pdfObject, PdfDocument document) { AbstractPdfFormField formField = PdfFormField.makeFormField(pdfObject, document); @@ -282,12 +282,14 @@ public static AbstractPdfFormField makeFormFieldOrAnnotation(PdfObject pdfObject return formField; } + /** * Makes a field flag by bit position. Bit positions are numbered 1 to 32. * But position 0 corresponds to flag 1, position 3 corresponds to flag 4 etc. * - * @param bitPosition bit position of a flag in range 1 to 32 from the pdf specification. - * @return corresponding field flag. + * @param bitPosition a bit position of a flag in range 1 to 32 from the pdf specification + * + * @return corresponding field flag */ public static int makeFieldFlag(int bitPosition) { return (1 << (bitPosition - 1)); @@ -296,9 +298,9 @@ public static int makeFieldFlag(int bitPosition) { /** * Checks if dictionary contains any of the form field keys. * - * @param dict field dictionary to check. + * @param dict field dictionary to check * - * @return true if it is a form field dictionary, false otherwise. + * @return true if it is a form field dictionary, false otherwise */ public static boolean isFormField(PdfDictionary dict) { for (final PdfName formFieldKey : getFormFieldKeys()) { @@ -313,7 +315,7 @@ public static boolean isFormField(PdfDictionary dict) { /** * Gets a set of all possible form field keys except {@code PdfName.Parent}. * - * @return a set of form field keys. + * @return a set of form field keys */ public static Collection getFormFieldKeys() { return Collections.unmodifiableCollection(FORM_FIELD_KEYS); @@ -323,9 +325,9 @@ public static Collection getFormFieldKeys() { * Returns the type of the form field dictionary, or of the parent * <PdfDictionary> object. * - * @param fieldDict field dictionary to get its type. + * @param fieldDict field dictionary to get its type * - * @return the form type, as a {@link PdfName}. + * @return the form type, as a {@link PdfName} */ public static PdfName getFormType(PdfDictionary fieldDict) { PdfName formType = fieldDict.getAsName(PdfName.FT); @@ -359,9 +361,9 @@ public static String getStringValue(PdfObject value) { /** * Applies {@link AccessibilityProperties} for provided form field and its annotation children. * - * @param formField {@link PdfFormField} the form field to which the accessibility properties should be applied + * @param formField {@link PdfFormField} the form field to which the accessibility properties should be applied * @param modelElement {@link IAccessibleElement} the form field layout element with accessibility properties - * @param pdfDocument {@link PdfDocument} the document to which the form field belongs + * @param pdfDocument {@link PdfDocument} the document to which the form field belongs */ public static void applyAccessibilityProperties(PdfFormField formField, IAccessibleElement modelElement, PdfDocument pdfDocument) { @@ -381,10 +383,9 @@ public static void applyAccessibilityProperties(PdfFormField formField, IAccessi } /** - * Returns the type of the parent form field, or of the wrapped - * <PdfDictionary> object. + * Returns the type of the parent form field, or of the wrapped <PdfDictionary> object. * - * @return the form type, as a {@link PdfName}. + * @return the form type, as a {@link PdfName} */ public PdfName getFormType() { return getFormType(getPdfObject()); @@ -393,8 +394,9 @@ public PdfName getFormType() { /** * Sets a value to the field and generating field appearance if needed. * - * @param value of the field. - * @return the field. + * @param value of the field + * + * @return the field */ public PdfFormField setValue(String value) { PdfName formType = getFormType(); @@ -405,9 +407,10 @@ public PdfFormField setValue(String value) { /** * Sets a value to the field (and fields with the same names) and generates field appearance if needed. * - * @param value of the field. - * @param generateAppearance if false, appearance won't be regenerated. - * @return the field. + * @param value of the field + * @param generateAppearance if false, appearance won't be regenerated + * + * @return the field */ public PdfFormField setValue(String value, boolean generateAppearance) { if (parent == null) { @@ -428,10 +431,11 @@ public PdfFormField setValue(String value, boolean generateAppearance) { /** * Set text field value with given font and size. * - * @param value text value. - * @param font a {@link PdfFont}. - * @param fontSize the size of the font. - * @return the edited field. + * @param value text value + * @param font a {@link PdfFont} + * @param fontSize the size of the font + * + * @return the edited field */ public PdfFormField setValue(String value, PdfFont font, float fontSize) { updateFontAndFontSize(font, fontSize); @@ -442,10 +446,11 @@ public PdfFormField setValue(String value, PdfFont font, float fontSize) { * Sets the field value and the display string. The display string * is used to build the appearance. * - * @param value the field value. + * @param value the field value * @param displayValue the string that is used for the appearance. If null - * the value parameter will be used. - * @return the edited field. + * the value parameter will be used + * + * @return the edited field */ public PdfFormField setValue(String value, String displayValue) { if (value == null) { @@ -469,7 +474,7 @@ public PdfFormField setValue(String value, String displayValue) { /** * Removes the childField object of this field. * - * @param fieldName a {@link PdfFormField}, that needs to be removed from form field children. + * @param fieldName a {@link PdfFormField}, that needs to be removed from form field children */ public void removeChild(AbstractPdfFormField fieldName) { childFields.remove(fieldName); @@ -493,7 +498,7 @@ public void removeChildren() { /** * Gets the kids of this object. * - * @return contents of the dictionary's Kids property, as a {@link PdfArray}. + * @return contents of the dictionary's Kids property, as a {@link PdfArray} */ public PdfArray getKids() { return getPdfObject().getAsArray(PdfName.Kids); @@ -502,7 +507,7 @@ public PdfArray getKids() { /** * Gets the childFields of this object. * - * @return the children of the current field. + * @return the children of the current field */ public List getChildFields() { return Collections.unmodifiableList(childFields); @@ -511,13 +516,13 @@ public List getChildFields() { /** * Gets all child form fields of this form field. Annotations are not returned. * - * @return a list of {@link PdfFormField}. + * @return a list of {@link PdfFormField} */ public List getChildFormFields() { List fields = new ArrayList<>(); for (AbstractPdfFormField child : childFields) { if (child instanceof PdfFormField) { - fields.add((PdfFormField)child); + fields.add((PdfFormField) child); } } @@ -529,7 +534,7 @@ public List getChildFormFields() { * Gets all childFields of this object, including the children of the children * but not annotations. * - * @return the children of the current field and their children. + * @return the children of the current field and their children */ public List getAllChildFormFields() { List allKids = new ArrayList<>(); @@ -544,14 +549,14 @@ public List getAllChildFormFields() { /** * Gets all childFields of this object, including the children of the children. * - * @return the children of the current field and their children. + * @return the children of the current field and their children */ public List getAllChildFields() { List kids = this.getChildFields(); List allKids = new ArrayList<>(kids); for (AbstractPdfFormField field : kids) { if (field instanceof PdfFormField) { - allKids.addAll(((PdfFormField)field).getAllChildFields()); + allKids.addAll(((PdfFormField) field).getAllChildFields()); } } return allKids; @@ -560,8 +565,9 @@ public List getAllChildFields() { /** * Gets the child field of form field. If there is no child field with such name, {@code null} is returned. * - * @param fieldName a {@link String}, name of the received field. - * @return the child of the current field as a {@link PdfFormField}. + * @param fieldName a {@link String}, name of the received field + * + * @return the child of the current field as a {@link PdfFormField} */ public PdfFormField getChildField(String fieldName) { for (PdfFormField formField : this.getChildFormFields()) { @@ -577,9 +583,9 @@ public PdfFormField getChildField(String fieldName) { * Adds a new kid to the Kids array property from a * {@link AbstractPdfFormField}. Also sets the kid's Parent property to this object. * - * @param kid a new {@link AbstractPdfFormField} entry for the field's Kids array property. + * @param kid a new {@link AbstractPdfFormField} entry for the field's Kids array property * - * @return the edited {@link PdfFormField}. + * @return the edited {@link PdfFormField} */ public PdfFormField addKid(AbstractPdfFormField kid) { return addKid(kid, true); @@ -589,11 +595,11 @@ public PdfFormField addKid(AbstractPdfFormField kid) { * Adds a new kid to the Kids array property from a * {@link AbstractPdfFormField}. Also sets the kid's Parent property to this object. * - * @param kid a new {@link AbstractPdfFormField} entry for the field's Kids array property. + * @param kid a new {@link AbstractPdfFormField} entry for the field's Kids array property * @param throwExceptionOnError define whether exception (true) or log (false) is expected in case kid with - * the same name exists and merge of two kids failed. + * the same name exists and merge of two kids failed * - * @return the edited {@link PdfFormField}. + * @return the edited {@link PdfFormField} */ public PdfFormField addKid(AbstractPdfFormField kid, boolean throwExceptionOnError) { PdfFormAnnotationUtil.separateWidgetAndField(this); @@ -616,8 +622,9 @@ public PdfFormField addKid(AbstractPdfFormField kid, boolean throwExceptionOnErr * Adds a new kid to the Kids array property from a * {@link PdfWidgetAnnotation}. Also sets the kid's Parent property to this object. * - * @param kid a new {@link PdfWidgetAnnotation} entry for the field's Kids array property. - * @return the edited {@link PdfFormField}. + * @param kid a new {@link PdfWidgetAnnotation} entry for the field's Kids array property + * + * @return the edited {@link PdfFormField} */ public PdfFormField addKid(PdfWidgetAnnotation kid) { kid.setParent(getPdfObject()); @@ -630,8 +637,9 @@ public PdfFormField addKid(PdfWidgetAnnotation kid) { /** * Changes the name of the field to the specified value. * - * @param name the new field name, as a String. - * @return the edited {@link PdfFormField}. + * @param name the new field name, as a String + * + * @return the edited {@link PdfFormField} */ public PdfFormField setFieldName(String name) { put(PdfName.T, new PdfString(name)); @@ -646,7 +654,7 @@ public PdfFormField setFieldName(String name) { * Gets the current field partial name. * * @return the current field partial name, as a {@link PdfString}. If the field has no partial name, - * an empty {@link PdfString} is returned. + * an empty {@link PdfString} is returned */ public PdfString getPartialFieldName() { PdfString partialName = getPdfObject().getAsString(PdfName.T); @@ -657,8 +665,9 @@ public PdfString getPartialFieldName() { * Changes the alternate name of the field to the specified value. The * alternate is a descriptive name to be used by status messages etc. * - * @param name the new alternate name, as a String. - * @return the edited {@link PdfFormField}. + * @param name the new alternate name, as a String + * + * @return the edited {@link PdfFormField} */ public PdfFormField setAlternativeName(String name) { put(PdfName.TU, new PdfString(name)); @@ -669,7 +678,7 @@ public PdfFormField setAlternativeName(String name) { * Gets the current alternate name. The alternate is a descriptive name to * be used by status messages etc. * - * @return the current alternate name, as a {@link PdfString}. + * @return the current alternate name, as a {@link PdfString} */ public PdfString getAlternativeName() { return getPdfObject().getAsString(PdfName.TU); @@ -679,8 +688,9 @@ public PdfString getAlternativeName() { * Changes the mapping name of the field to the specified value. The * mapping name can be used when exporting the form data in the document. * - * @param name the new alternate name, as a String. - * @return the edited field. + * @param name the new alternate name, as a String + * + * @return the edited field */ public PdfFormField setMappingName(String name) { put(PdfName.TM, new PdfString(name)); @@ -691,7 +701,7 @@ public PdfFormField setMappingName(String name) { * Gets the current mapping name. The mapping name can be used when * exporting the form data in the document. * - * @return the current mapping name, as a {@link PdfString}. + * @return the current mapping name, as a {@link PdfString} */ public PdfString getMappingName() { return getPdfObject().getAsString(PdfName.TM); @@ -701,9 +711,10 @@ public PdfString getMappingName() { * Checks whether a certain flag, or any of a combination of flags, is set * for this form field. * - * @param flag an int interpreted as a series of a binary flags. + * @param flag an int interpreted as a series of a binary flags + * * @return true if any of the flags specified in the parameter is also set - * in the form field. + * in the form field */ public boolean getFieldFlag(int flag) { return (getFieldFlags() & flag) != 0; @@ -715,8 +726,9 @@ public boolean getFieldFlag(int flag) { * enforced. To replace the current value, use * {@link #setFieldFlags(int)}. * - * @param flag an int interpreted as a series of a binary flags. - * @return the edited {@link PdfFormField}. + * @param flag an int interpreted as a series of a binary flags + * + * @return the edited {@link PdfFormField} */ public PdfFormField setFieldFlag(int flag) { return setFieldFlag(flag, true); @@ -728,10 +740,11 @@ public PdfFormField setFieldFlag(int flag) { * technically enforced. To replace the current value, use * {@link #setFieldFlags(int)}. * - * @param flag an int interpreted as a series of a binary flags. + * @param flag an int interpreted as a series of a binary flags * @param value if true, adds the flag(s). if false, - * removes the flag(s). - * @return the edited {@link PdfFormField}. + * removes the flag(s) + * + * @return the edited {@link PdfFormField} */ public PdfFormField setFieldFlag(int flag, boolean value) { int flags = getFieldFlags(); @@ -748,7 +761,7 @@ public PdfFormField setFieldFlag(int flag, boolean value) { /** * If true, the field can contain multiple lines of text; if false, the field's text is restricted to a single line. * - * @return whether the field can span over multiple lines. + * @return whether the field can span over multiple lines */ public boolean isMultiline() { return getFieldFlag(FF_MULTILINE); @@ -759,7 +772,7 @@ public boolean isMultiline() { * Characters typed from the keyboard should instead be echoed in some unreadable form, such as asterisks * or bullet characters. * - * @return whether or not the contents of the field must be obfuscated. + * @return whether the contents of the field must be obfuscated */ public boolean isPassword() { return getFieldFlag(FF_PASSWORD); @@ -770,8 +783,9 @@ public boolean isPassword() { * replaces the previous value. Compare with {@link #setFieldFlag(int)} * which adds a flag to the existing flags. * - * @param flags an int interpreted as a series of a binary flags. - * @return the edited {@link PdfFormField}. + * @param flags an int interpreted as a series of a binary flags + * + * @return the edited {@link PdfFormField} */ public PdfFormField setFieldFlags(int flags) { int oldFlags = getFieldFlags(); @@ -786,7 +800,7 @@ public PdfFormField setFieldFlags(int flags) { /** * Gets the current list of PDF form field flags. * - * @return the current list of flags, encoded as an int. + * @return the current list of flags, encoded as an int */ public int getFieldFlags() { PdfNumber f = getPdfObject().getAsNumber(PdfName.Ff); @@ -805,7 +819,7 @@ public int getFieldFlags() { /** * Gets the current value contained in the form field. * - * @return the current value, as a {@link PdfObject}. + * @return the current value, as a {@link PdfObject} */ public PdfObject getValue() { PdfObject value = getPdfObject().get(PdfName.V); @@ -819,7 +833,7 @@ public PdfObject getValue() { /** * Gets the current value contained in the form field. * - * @return the current value, as a {@link String}. + * @return the current value, as a {@link String} */ public String getValueAsString() { PdfObject value = getValue(); @@ -830,7 +844,7 @@ public String getValueAsString() { * Gets the current display value of the form field. * * @return the current display value, as a {@link String}, if it exists. - * If not, returns the value as a {@link String}. + * If not, returns the value as a {@link String} */ public String getDisplayValue() { if (displayValue != null) { @@ -845,8 +859,9 @@ public String getDisplayValue() { /** * Sets the default fallback value for the form field. * - * @param value the default value. - * @return the edited {@link PdfFormField}. + * @param value the default value + * + * @return the edited {@link PdfFormField} */ public PdfFormField setDefaultValue(PdfObject value) { put(PdfName.DV, value); @@ -856,7 +871,7 @@ public PdfFormField setDefaultValue(PdfObject value) { /** * Gets the default fallback value for the form field. * - * @return the default value. + * @return the default value */ public PdfObject getDefaultValue() { return getPdfObject().get(PdfName.DV); @@ -865,9 +880,10 @@ public PdfObject getDefaultValue() { /** * Sets an additional action for the form field. * - * @param key the dictionary key to use for storing the action. - * @param action the action. - * @return the edited {@link PdfFormField}. + * @param key the dictionary key to use for storing the action + * @param action the action + * + * @return the edited {@link PdfFormField} */ public PdfFormField setAdditionalAction(PdfName key, PdfAction action) { PdfAction.setAdditionalAction(this, key, action); @@ -877,7 +893,7 @@ public PdfFormField setAdditionalAction(PdfName key, PdfAction action) { /** * Gets the currently additional action dictionary for the form field. * - * @return the additional action dictionary. + * @return the additional action dictionary */ public PdfDictionary getAdditionalAction() { return getPdfObject().getAsDictionary(PdfName.AA); @@ -887,8 +903,9 @@ public PdfDictionary getAdditionalAction() { * Sets options for the form field. Only to be used for checkboxes and radio buttons. * * @param options an array of {@link PdfString} objects that each represent - * the 'on' state of one of the choices. - * @return the edited {@link PdfFormField}. + * the 'on' state of one of the choices + * + * @return the edited {@link PdfFormField} */ public PdfFormField setOptions(PdfArray options) { put(PdfName.Opt, options); @@ -899,7 +916,7 @@ public PdfFormField setOptions(PdfArray options) { * Gets options for the form field. Should only return usable values for * checkboxes and radio buttons. * - * @return the options, as an {@link PdfArray} of {@link PdfString} objects. + * @return the options, as an {@link PdfArray} of {@link PdfString} objects */ public PdfArray getOptions() { return getPdfObject().getAsArray(PdfName.Opt); @@ -908,7 +925,7 @@ public PdfArray getOptions() { /** * Gets all {@link PdfWidgetAnnotation} that its children refer to. * - * @return a list of {@link PdfWidgetAnnotation}. + * @return a list of {@link PdfWidgetAnnotation} */ public List getWidgets() { List widgets = new ArrayList<>(); @@ -926,13 +943,13 @@ public List getWidgets() { /** * Gets all child form field's annotations {@link PdfFormAnnotation} of this form field. * - * @return a list of {@link PdfFormAnnotation}. + * @return a list of {@link PdfFormAnnotation} */ public List getChildFormAnnotations() { List annots = new ArrayList<>(); for (AbstractPdfFormField child : childFields) { if (child instanceof PdfFormAnnotation) { - annots.add((PdfFormAnnotation)child); + annots.add((PdfFormAnnotation) child); } } @@ -942,12 +959,12 @@ public List getChildFormAnnotations() { /** * Gets a single child form field's annotation {@link PdfFormAnnotation}. * - * @return {@link PdfFormAnnotation} or null if there are no child annotations. + * @return {@link PdfFormAnnotation} or null if there are no child annotations */ public PdfFormAnnotation getFirstFormAnnotation() { for (AbstractPdfFormField child : childFields) { if (child instanceof PdfFormAnnotation) { - return (PdfFormAnnotation)child; + return (PdfFormAnnotation) child; } } @@ -1011,7 +1028,7 @@ public void updateDefaultAppearance() { put(PdfName.DA, generateDefaultAppearance(fontName, getFontSize(), color)); // Font from DR may not be added to document through PdfResource. getDocument().addFont(getFont()); - } else { + } else if (!PdfName.Sig.equals(getFormType())) { getPdfObject().remove(PdfName.DA); setModified(); } @@ -1023,7 +1040,7 @@ public void updateDefaultAppearance() { * 1 Centered * 2 Right-justified * - * @return the current justification attribute. + * @return the current justification attribute */ public TextAlignment getJustification() { Integer justification = getPdfObject().getAsInt(PdfName.Q); @@ -1039,8 +1056,9 @@ public TextAlignment getJustification() { * 1 Centered * 2 Right-justified * - * @param justification the value to set the justification attribute to. - * @return the edited {@link PdfFormField}. + * @param justification the value to set the justification attribute to + * + * @return the edited {@link PdfFormField} */ public PdfFormField setJustification(TextAlignment justification) { if (justification != null) { @@ -1053,7 +1071,7 @@ public PdfFormField setJustification(TextAlignment justification) { /** * Gets a default style string, as described in "Rich Text Strings" section of Pdf spec. * - * @return the default style, as a {@link PdfString}. + * @return the default style, as a {@link PdfString} */ public PdfString getDefaultStyle() { return getPdfObject().getAsString(PdfName.DS); @@ -1062,8 +1080,9 @@ public PdfString getDefaultStyle() { /** * Sets a default style string, as described in "Rich Text Strings" section of Pdf spec. * - * @param defaultStyleString a new default style for the form field. - * @return the edited {@link PdfFormField}. + * @param defaultStyleString a new default style for the form field + * + * @return the edited {@link PdfFormField} */ public PdfFormField setDefaultStyle(PdfString defaultStyleString) { put(PdfName.DS, defaultStyleString); @@ -1072,9 +1091,9 @@ public PdfFormField setDefaultStyle(PdfString defaultStyleString) { /** * Gets a rich text string, as described in "Rich Text Strings" section of Pdf spec. - * May be either {@link PdfStream} or {@link PdfString}. + * It may be either {@link PdfStream} or {@link PdfString}. * - * @return the current rich text value. + * @return the current rich text value */ public PdfObject getRichText() { return getPdfObject().get(PdfName.RV); @@ -1098,8 +1117,9 @@ public PdfFormField setRichText(PdfObject richText) { * Notice that in order to complete the change one should call * {@link #regenerateField() regenerateField} method. * - * @param checkType the new checkbox marker. - * @return the edited {@link PdfFormField}. + * @param checkType the new checkbox marker + * + * @return the edited {@link PdfFormField} */ public PdfFormField setCheckType(CheckBoxType checkType) { if (checkType == null) { @@ -1142,28 +1162,30 @@ public boolean regenerateField() { } /** - * Sets the ReadOnly flag, specifying whether or not the field can be changed. + * Sets the ReadOnly flag, specifying whether the field can be changed. * - * @param readOnly if true, then the field cannot be changed. - * @return the edited {@link PdfFormField}. + * @param readOnly if true, then the field cannot be changed + * + * @return the edited {@link PdfFormField} */ public PdfFormField setReadOnly(boolean readOnly) { return setFieldFlag(FF_READ_ONLY, readOnly); } /** - * Gets the ReadOnly flag, specifying whether or not the field can be changed. + * Gets the ReadOnly flag, specifying whether the field can be changed. * - * @return true if the field cannot be changed. + * @return true if the field cannot be changed */ public boolean isReadOnly() { return getFieldFlag(FF_READ_ONLY); } /** - * Sets the Required flag, specifying whether or not the field must be filled in. + * Sets the Required flag, specifying whether the field must be filled in. + * + * @param required if true, then the field must be filled in * - * @param required if true, then the field must be filled in. * @return the edited {@link PdfFormField}. */ public PdfFormField setRequired(boolean required) { @@ -1171,19 +1193,20 @@ public PdfFormField setRequired(boolean required) { } /** - * Gets the Required flag, specifying whether or not the field must be filled in. + * Gets the Required flag, specifying whether the field must be filled in. * - * @return true if the field must be filled in. + * @return true if the field must be filled in */ public boolean isRequired() { return getFieldFlag(FF_REQUIRED); } /** - * Sets the NoExport flag, specifying whether or not exporting is forbidden. + * Sets the NoExport flag, specifying whether exporting is forbidden. * * @param noExport if true, then exporting is forbidden - * @return the edited {@link PdfFormField}. + * + * @return the edited {@link PdfFormField} */ public PdfFormField setNoExport(boolean noExport) { return setFieldFlag(FF_NO_EXPORT, noExport); @@ -1192,7 +1215,7 @@ public PdfFormField setNoExport(boolean noExport) { /** * Gets the NoExport attribute. * - * @return whether exporting the value following a form action is forbidden. + * @return whether exporting the value following a form action is forbidden */ public boolean isNoExport() { return getFieldFlag(FF_NO_EXPORT); @@ -1201,7 +1224,7 @@ public boolean isNoExport() { /** * Checks if the document that contains the field is created in reading mode. * - * @return true if reading mode is used, false otherwise. + * @return true if reading mode is used, false otherwise */ public boolean isInReadingMode() { return getDocument().getWriter() == null; @@ -1262,6 +1285,7 @@ public void release() { * {@inheritDoc} * * @param color {@inheritDoc} + * * @return {@inheritDoc} */ @Override @@ -1283,33 +1307,12 @@ void updateFontAndFontSize(PdfFont font, float fontSize) { } } - static String optionsArrayToString(PdfArray options) { - if (options == null || options.isEmpty()) { - return ""; - } - StringBuilder sb = new StringBuilder(); - for (PdfObject obj : options) { - if (obj.isString()) { - sb.append(((PdfString) obj).toUnicodeString()).append('\n'); - } else if (obj.isArray()) { - PdfObject element = ((PdfArray) obj).size() > 1 ? ((PdfArray) obj).get(1) : null; - if (element != null && element.isString()) { - sb.append(((PdfString) element).toUnicodeString()).append('\n'); - } - } else { - sb.append('\n'); - } - } - // last '\n' - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } - /** * Adds a field to the children of the current field. * - * @param kid the field, which should become a child. - * @return the kid itself. + * @param kid the field, which should become a child + * + * @return the kid itself */ AbstractPdfFormField setChildField(AbstractPdfFormField kid) { kid.setParent(this); @@ -1321,7 +1324,7 @@ AbstractPdfFormField setChildField(AbstractPdfFormField kid) { * Replaces /Kids value with passed kids dictionaries, and keeps old flashed fields there. * Also updates childFields array for {@link PdfFormField}. * - * @param kids collection of new kids. + * @param kids collection of new kids */ void replaceKids(Collection kids) { PdfArray kidsValues = new PdfArray(); @@ -1454,10 +1457,10 @@ private PdfFormField setFieldValue(String value, boolean generateAppearance) { } else { if (PdfName.Ch.equals(formType)) { if (this instanceof PdfChoiceFormField) { - ((PdfChoiceFormField) this).setListSelected(new String[] {value}, false); + ((PdfChoiceFormField) this).setListSelected(new String[]{value}, false); } else { PdfChoiceFormField choice = PdfFormCreator.createChoiceFormField(this.getPdfObject()); - choice.setListSelected(new String[] {value}, false); + choice.setListSelected(new String[]{value}, false); } } else { put(PdfName.V, new PdfString(value, PdfEncodings.UNICODE_BIG)); @@ -1477,7 +1480,9 @@ private PdfFormField setFieldValue(String value, boolean generateAppearance) { * not all equal, then consider that this checkbox is mutually exclusive and do nothing, otherwise regenerate * normal appearance with value as on appearance state for all the widgets. * - * @param value not empty value different from "Off". + * @param value not empty value different from "Off" + * + * @return boolean value indicating whether checkbox appearance was generated */ private boolean tryGenerateCheckboxAppearance(String value) { if (value == null || value.isEmpty() || PdfFormAnnotation.OFF_STATE_VALUE.equals(value)) { @@ -1523,9 +1528,8 @@ private boolean mergeKidsIfKidWithSuchNameExists(AbstractPdfFormField newKid, bo private boolean hasDefaultAppearance() { PdfName type = getFormType(); - return type == PdfName.Tx - || type == PdfName.Ch - || (type == PdfName.Btn && (getFieldFlags() & PdfButtonFormField.FF_PUSH_BUTTON) != 0); + return PdfName.Tx.equals(type) || PdfName.Ch.equals(type) || + (PdfName.Btn.equals(type) && (getFieldFlags() & PdfButtonFormField.FF_PUSH_BUTTON) != 0); } private PdfName getUniqueFontNameForDR(PdfDictionary fontResources) { @@ -1551,12 +1555,13 @@ private PdfName getFontNameFromDR(PdfDictionary fontResources, PdfObject font) { * Puts object directly to AcroForm dictionary. * It works much faster than consequent invocation of {@link PdfAcroForm#getAcroForm(PdfDocument, boolean)} * and {@link PdfAcroForm#getPdfObject()}. + * *

* Note, this method assume that Catalog already has AcroForm object. * {@link #addAcroFormToCatalog()} should be called explicitly. * - * @param acroFormKey the key of the object. - * @param acroFormObject the object to add. + * @param acroFormKey the key of the object + * @param acroFormObject the object to add */ private void putAcroFormObject(PdfName acroFormKey, PdfObject acroFormObject) { getDocument().getCatalog().getPdfObject().getAsDictionary(PdfName.AcroForm).put(acroFormKey, acroFormObject); diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFieldMergeUtil.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFieldMergeUtil.java index b301be795a..3bc8f9ee4a 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFieldMergeUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfFormFieldMergeUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java index 37d666601b..5b9723a08a 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfSignatureFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java b/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java index bfeab06027..387de32f86 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PdfTextFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilder.java index 72bf563ba1..202b7f255f 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/RadioFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/RadioFormFieldBuilder.java index 71d113ffb4..faae654852 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/RadioFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/RadioFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/SignatureFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/SignatureFormFieldBuilder.java index 79d081d912..1e45470043 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/SignatureFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/SignatureFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/TerminalFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/TerminalFormFieldBuilder.java index 57b4110a16..e2600b3b55 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/TerminalFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/TerminalFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/TextFormFieldBuilder.java b/forms/src/main/java/com/itextpdf/forms/fields/TextFormFieldBuilder.java index 9d90518b4e..b32a74360f 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/TextFormFieldBuilder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/TextFormFieldBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java index e8d26739d5..8acfb16e83 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/AbstractFormBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java index 398e8b72d9..f1b776428a 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/BeveledBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java index 910574634e..ba3fa3d2fb 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/FormBorderFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java index 009588ba66..211e3d775f 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/InsetBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java b/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java index b636714e60..4792cda02a 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/borders/UnderlineBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/merging/AddIndexStrategy.java b/forms/src/main/java/com/itextpdf/forms/fields/merging/AddIndexStrategy.java index 0df546323a..76fa225a8f 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/merging/AddIndexStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/merging/AddIndexStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/merging/AlwaysThrowExceptionStrategy.java b/forms/src/main/java/com/itextpdf/forms/fields/merging/AlwaysThrowExceptionStrategy.java index e568eaaae8..f3ba18eb1d 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/merging/AlwaysThrowExceptionStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/merging/AlwaysThrowExceptionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/merging/MergeFieldsStrategy.java b/forms/src/main/java/com/itextpdf/forms/fields/merging/MergeFieldsStrategy.java index e07af4b77c..c87ac3befd 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/merging/MergeFieldsStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/merging/MergeFieldsStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategy.java b/forms/src/main/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategy.java index 4f801c8989..c221162119 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/properties/CheckBoxType.java b/forms/src/main/java/com/itextpdf/forms/fields/properties/CheckBoxType.java index b9d17cf160..4319b25808 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/properties/CheckBoxType.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/properties/CheckBoxType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/fields/properties/SignedAppearanceText.java b/forms/src/main/java/com/itextpdf/forms/fields/properties/SignedAppearanceText.java index f6f50df54b..b9e3f3192c 100644 --- a/forms/src/main/java/com/itextpdf/forms/fields/properties/SignedAppearanceText.java +++ b/forms/src/main/java/com/itextpdf/forms/fields/properties/SignedAppearanceText.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/FormProperty.java b/forms/src/main/java/com/itextpdf/forms/form/FormProperty.java index 8ef618ffcd..caf9ecb8b0 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/FormProperty.java +++ b/forms/src/main/java/com/itextpdf/forms/form/FormProperty.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/AbstractSelectField.java b/forms/src/main/java/com/itextpdf/forms/form/element/AbstractSelectField.java index 026c934eaa..a1cb076e30 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/AbstractSelectField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/AbstractSelectField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/Button.java b/forms/src/main/java/com/itextpdf/forms/form/element/Button.java index ec58dfb447..561d89b7f7 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/Button.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/Button.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/CheckBox.java b/forms/src/main/java/com/itextpdf/forms/form/element/CheckBox.java index 51552c2075..0cf5f967a9 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/CheckBox.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/CheckBox.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/ComboBoxField.java b/forms/src/main/java/com/itextpdf/forms/form/element/ComboBoxField.java index 03bfd9c73b..a33ec3618d 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/ComboBoxField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/ComboBoxField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/FormField.java b/forms/src/main/java/com/itextpdf/forms/form/element/FormField.java index 8211f7b6da..eed3c1d980 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/FormField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/FormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/IFormField.java b/forms/src/main/java/com/itextpdf/forms/form/element/IFormField.java index 90c6b93b45..2ec703e6bc 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/IFormField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/IFormField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/IPlaceholderable.java b/forms/src/main/java/com/itextpdf/forms/form/element/IPlaceholderable.java index 018af5bcb1..996a5fb213 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/IPlaceholderable.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/IPlaceholderable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/InputField.java b/forms/src/main/java/com/itextpdf/forms/form/element/InputField.java index 9939e40fdd..79cb294c9c 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/InputField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/InputField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/ListBoxField.java b/forms/src/main/java/com/itextpdf/forms/form/element/ListBoxField.java index 80266ee73b..06a95a2123 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/ListBoxField.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/ListBoxField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/Radio.java b/forms/src/main/java/com/itextpdf/forms/form/element/Radio.java index 5facbc619f..78e1aeb822 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/Radio.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/Radio.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/SelectFieldItem.java b/forms/src/main/java/com/itextpdf/forms/form/element/SelectFieldItem.java index c5ea01100c..7a68ea2204 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/SelectFieldItem.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/SelectFieldItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/SignatureFieldAppearance.java b/forms/src/main/java/com/itextpdf/forms/form/element/SignatureFieldAppearance.java index 20322e3b2c..9a3014cdb1 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/SignatureFieldAppearance.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/SignatureFieldAppearance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/element/TextArea.java b/forms/src/main/java/com/itextpdf/forms/form/element/TextArea.java index b408618858..478a51f6ef 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/element/TextArea.java +++ b/forms/src/main/java/com/itextpdf/forms/form/element/TextArea.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractFormFieldRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractFormFieldRenderer.java index 41918331b9..c8a6637bd0 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractFormFieldRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractFormFieldRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractOneLineTextFieldRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractOneLineTextFieldRenderer.java index 21f4c50014..9d3f1e817d 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractOneLineTextFieldRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractOneLineTextFieldRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractSelectFieldRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractSelectFieldRenderer.java index 4aef016058..f7d1e30215 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractSelectFieldRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractSelectFieldRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractTextFieldRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractTextFieldRenderer.java index 922d2e62df..0e9d497cd4 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractTextFieldRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/AbstractTextFieldRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/ButtonRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/ButtonRenderer.java index 9bfd51ed8e..d609147230 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/ButtonRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/ButtonRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/CheckBoxRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/CheckBoxRenderer.java index e1017ed33d..152aabff04 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/CheckBoxRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/CheckBoxRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/FormFieldValueNonTrimmingTextRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/FormFieldValueNonTrimmingTextRenderer.java index 84a39ce9b7..81d3ec91bf 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/FormFieldValueNonTrimmingTextRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/FormFieldValueNonTrimmingTextRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/InputFieldRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/InputFieldRenderer.java index eb4121e3fb..913b82ecdd 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/InputFieldRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/InputFieldRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/RadioRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/RadioRenderer.java index 925713ed63..d9518dc7ac 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/RadioRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/RadioRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldComboBoxRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldComboBoxRenderer.java index 571179f7ff..2485fa4ee5 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldComboBoxRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldComboBoxRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRenderer.java index 4e3495d720..98badc5a00 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/SignatureAppearanceRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/SignatureAppearanceRenderer.java index 6d8e8724f8..84aadb49b7 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/SignatureAppearanceRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/SignatureAppearanceRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/TextAreaRenderer.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/TextAreaRenderer.java index 741df22986..a946d73d62 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/TextAreaRenderer.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/TextAreaRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/HtmlCheckBoxRenderingStrategy.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/HtmlCheckBoxRenderingStrategy.java index f84ed988cc..9302e15f48 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/HtmlCheckBoxRenderingStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/HtmlCheckBoxRenderingStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/ICheckBoxRenderingStrategy.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/ICheckBoxRenderingStrategy.java index ed0fbb77f4..850de49d85 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/ICheckBoxRenderingStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/ICheckBoxRenderingStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfACheckBoxRenderingStrategy.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfACheckBoxRenderingStrategy.java index 9cb451d477..43bca7e664 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfACheckBoxRenderingStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfACheckBoxRenderingStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfCheckBoxRenderingStrategy.java b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfCheckBoxRenderingStrategy.java index d9b4f2d284..1d787e6529 100644 --- a/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfCheckBoxRenderingStrategy.java +++ b/forms/src/main/java/com/itextpdf/forms/form/renderer/checkboximpl/PdfCheckBoxRenderingStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/logs/FormsLogMessageConstants.java b/forms/src/main/java/com/itextpdf/forms/logs/FormsLogMessageConstants.java index 1e57e8a420..0ba0ed3688 100644 --- a/forms/src/main/java/com/itextpdf/forms/logs/FormsLogMessageConstants.java +++ b/forms/src/main/java/com/itextpdf/forms/logs/FormsLogMessageConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/util/BorderStyleUtil.java b/forms/src/main/java/com/itextpdf/forms/util/BorderStyleUtil.java index 7ee5a21f99..76987bd267 100644 --- a/forms/src/main/java/com/itextpdf/forms/util/BorderStyleUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/util/BorderStyleUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java b/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java index 64e0384b6e..ec7e135493 100644 --- a/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/util/DrawingUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/util/FontSizeUtil.java b/forms/src/main/java/com/itextpdf/forms/util/FontSizeUtil.java index fa84f7b845..2edb2786c5 100644 --- a/forms/src/main/java/com/itextpdf/forms/util/FontSizeUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/util/FontSizeUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/util/FormFieldRendererUtil.java b/forms/src/main/java/com/itextpdf/forms/util/FormFieldRendererUtil.java index 4729051f73..e11c158f19 100644 --- a/forms/src/main/java/com/itextpdf/forms/util/FormFieldRendererUtil.java +++ b/forms/src/main/java/com/itextpdf/forms/util/FormFieldRendererUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/util/RegisterDefaultDiContainer.java b/forms/src/main/java/com/itextpdf/forms/util/RegisterDefaultDiContainer.java index 12d3dd1334..799c13cf74 100644 --- a/forms/src/main/java/com/itextpdf/forms/util/RegisterDefaultDiContainer.java +++ b/forms/src/main/java/com/itextpdf/forms/util/RegisterDefaultDiContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java b/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java index d7d7a89ff6..e78ee576f5 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java +++ b/forms/src/main/java/com/itextpdf/forms/xfa/AcroFieldsSearch.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java b/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java index fa9798af57..c84226f5ba 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java +++ b/forms/src/main/java/com/itextpdf/forms/xfa/InverseStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java b/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java index 39ef66b81b..091b15dfa5 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java +++ b/forms/src/main/java/com/itextpdf/forms/xfa/XfaForm.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java index e9ddfd9239..f7d8b61d48 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java +++ b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2Som.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java index 145cea32c7..486f32aa80 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java +++ b/forms/src/main/java/com/itextpdf/forms/xfa/Xml2SomDatasets.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java index 7f435614e9..2ebf45d1d8 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/ActionObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java index 9a2842509b..e7345b12b4 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java index 6291b0a030..875495f559 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AnnotsObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java index ed9823b8fa..34f16d80d7 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/AttributeObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java index e6927c2a12..bd71fd6adc 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/BorderStyleAltObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java index a540964f5a..c32b6aa244 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/DestObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java b/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java index 92f0ed362e..1328efc331 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/ElementContentEncodingFormat.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java index c573302c3f..f3ce7ce48b 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java index da8edd381c..96bfc2cb9c 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java index 58b4961c68..b5798dbe71 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FieldsObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java index 0f564c4830..34bf0a50c3 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/FitObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java index 342d185ccd..809e3afc6d 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/IdsObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java b/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java index 1d32c26f32..82c0c0a18b 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/Mode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java index d9581f4646..49da059912 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java index 59cbcc3100..1334edc3d6 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfFileUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java index 7c40aa9f39..549886f347 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java index 688377ab9c..35df7232c4 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -495,7 +495,7 @@ private static void addAnnotations(PdfDocument pdfDoc, XfdfObject resultXfdf) { PdfPage page = pdfDoc.getPage(i); List pdfAnnots = page.getAnnotations(); for (PdfAnnotation pdfAnnot : pdfAnnots) { - if (pdfAnnot.getSubtype() == PdfName.Popup) { + if (PdfName.Popup.equals(pdfAnnot.getSubtype())) { addPopup(pdfAnnot, annots, i); } else { addAnnotation(pdfAnnot, annots, i); diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java index 42372fc863..5dd203fa01 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfObjectUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java index 4020cb6e22..128c038917 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java index 30e88cd4ef..d4ff0a50af 100644 --- a/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java +++ b/forms/src/main/java/com/itextpdf/forms/xfdf/XfdfWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/sharpenconfig/java/com/itextpdf/forms/SharpenConfigMapping.java b/forms/src/sharpenconfig/java/com/itextpdf/forms/SharpenConfigMapping.java index 8a2beb1185..d13bb0cbbf 100644 --- a/forms/src/sharpenconfig/java/com/itextpdf/forms/SharpenConfigMapping.java +++ b/forms/src/sharpenconfig/java/com/itextpdf/forms/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java index c0885ab231..3de7aea417 100644 --- a/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FlatteningRotatedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java index f3ff119716..6ce965fe48 100644 --- a/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FlatteningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java b/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java index 55d2f8fffe..5c96aa68d9 100644 --- a/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FlatteningWithNullKidElementTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java index f61d05033c..7c13a09bd4 100644 --- a/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FormFieldAppendTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java index 5a385cba5d..2be8c96900 100644 --- a/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FormFieldFlatteningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java b/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java index e06a22645f..67d6f80db4 100644 --- a/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java +++ b/forms/src/test/java/com/itextpdf/forms/FormFieldsTaggingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java index 5b8d779654..2119705a46 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormInAppendModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormIntegrationTest.java b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormIntegrationTest.java index 6465d82dc9..9c06ccf905 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormIntegrationTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java index 248f3a0df6..d003e88bfa 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfAcroFormTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java index dc1564f1ec..c5be30279a 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfCheckBoxFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java index a7937a4fd2..fc32b234ab 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfChoiceFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -54,9 +54,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfChoiceFieldTest extends ExtendedITextTest { - - public static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfChoiceFieldTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfChoiceFieldTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; + private static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfChoiceFieldTest/"; + private static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfChoiceFieldTest/"; @BeforeAll public static void beforeClass() { @@ -69,7 +69,7 @@ public void choiceFieldsWithUnicodeTest() throws IOException, InterruptedExcepti String cmpPdf = sourceFolder + "cmp_choiceFieldsWithUnicodeTest.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outPdf)); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "NotoSansCJKjp-Bold.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSansCJKjp-Bold.otf", "Identity-H"); font.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); diff --git a/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java b/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java index 586dc4108d..570f20b86d 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfEncryptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java index 463e537a70..1b1fb68115 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyWithGotoTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyWithGotoTest.java index 563ed22342..a6e4a93e51 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormCopyWithGotoTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormCopyWithGotoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java index bc198fa4e0..d60969f648 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldMultilineTextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -50,9 +50,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfFormFieldMultilineTextTest extends ExtendedITextTest { - - public static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldMultilineTextTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldMultilineTextTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; + private static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldMultilineTextTest/"; + private static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldMultilineTextTest/"; @BeforeAll public static void beforeClass() { @@ -238,7 +238,7 @@ public void formFieldFilledWithStringTest() throws IOException, InterruptedExcep PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "formFieldWithStringTest.pdf")); PdfFont font = PdfFontFactory.createFont( - sourceFolder + "NotoSansCJKtc-Light.otf", PdfEncodings.IDENTITY_H); + FONT_FOLDER + "NotoSansCJKtc-Light.otf", PdfEncodings.IDENTITY_H); PdfAcroForm acroForm = PdfFormCreator.getAcroForm(pdfDoc, true); diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java index eab8aa6691..5737045de3 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -80,9 +80,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfFormFieldTest extends ExtendedITextTest { - - public static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; + private static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldTest/"; + private static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldTest/"; @BeforeAll public static void beforeClass() { @@ -802,10 +802,10 @@ public void fillFieldWithHebrewCase1() throws IOException, InterruptedException PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc); - PdfFont hebrew = PdfFontFactory.createFont(sourceFolder + "OpenSansHebrew-Regular.ttf", + PdfFont hebrew = PdfFontFactory.createFont(FONT_FOLDER + "OpenSansHebrew-Regular.ttf", PdfEncodings.IDENTITY_H); hebrew.setSubset(false); - PdfFont sileot = PdfFontFactory.createFont(sourceFolder + "SILEOT.ttf", PdfEncodings.IDENTITY_H); + PdfFont sileot = PdfFontFactory.createFont(FONT_FOLDER + "SILEOT.ttf", PdfEncodings.IDENTITY_H); sileot.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); @@ -836,10 +836,10 @@ public void fillFieldWithHebrewCase2() throws IOException, InterruptedException PdfDocument pdfDoc = new PdfDocument(writer); Document document = new Document(pdfDoc); - PdfFont hebrew = PdfFontFactory.createFont(sourceFolder + "OpenSansHebrew-Regular.ttf", + PdfFont hebrew = PdfFontFactory.createFont(FONT_FOLDER + "OpenSansHebrew-Regular.ttf", PdfEncodings.IDENTITY_H); hebrew.setSubset(false); - PdfFont sileot = PdfFontFactory.createFont(sourceFolder + "SILEOT.ttf", PdfEncodings.IDENTITY_H); + PdfFont sileot = PdfFontFactory.createFont(FONT_FOLDER + "SILEOT.ttf", PdfEncodings.IDENTITY_H); sileot.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); @@ -872,10 +872,10 @@ public void fillFieldWithHebrewCase3() throws IOException, InterruptedException PdfWriter writer = new PdfWriter(outPdf); PdfDocument pdfDoc = new PdfDocument(writer); - PdfFont hebrew = PdfFontFactory.createFont(sourceFolder + "OpenSansHebrew-Regular.ttf", + PdfFont hebrew = PdfFontFactory.createFont(FONT_FOLDER + "OpenSansHebrew-Regular.ttf", PdfEncodings.IDENTITY_H); hebrew.setSubset(false); - PdfFont sileot = PdfFontFactory.createFont(sourceFolder + "SILEOT.ttf", PdfEncodings.IDENTITY_H); + PdfFont sileot = PdfFontFactory.createFont(FONT_FOLDER + "SILEOT.ttf", PdfEncodings.IDENTITY_H); sileot.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); @@ -902,10 +902,10 @@ public void fillFieldWithHebrewCase4() throws IOException, InterruptedException PdfWriter writer = new PdfWriter(baos); PdfDocument pdfDoc = new PdfDocument(writer); - PdfFont hebrew = PdfFontFactory.createFont(sourceFolder + "OpenSansHebrew-Regular.ttf", + PdfFont hebrew = PdfFontFactory.createFont(FONT_FOLDER + "OpenSansHebrew-Regular.ttf", PdfEncodings.IDENTITY_H); hebrew.setSubset(false); - PdfFont sileot = PdfFontFactory.createFont(sourceFolder + "SILEOT.ttf", PdfEncodings.IDENTITY_H); + PdfFont sileot = PdfFontFactory.createFont(FONT_FOLDER + "SILEOT.ttf", PdfEncodings.IDENTITY_H); sileot.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, true); @@ -1272,7 +1272,7 @@ public void textFieldWithWideUnicodeRange() throws IOException, InterruptedExcep new Rectangle(36, 400, 100, 40)) .createText().setValue("Helvetica")); - PdfFont noto = PdfFontFactory.createFont(sourceFolder + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H); + PdfFont noto = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H); noto.setSubset(false); String value = "aAáÁàÀăĂắẮằẰẵẴẳẲâÂấẤầẦẫẪǎǍåÅǻǺäÄǟǞãÃą" + "ĄāĀảẢạẠặẶẬæÆǽǼbBḃḂcCćĆčČċĊçÇdDd̂D̂ďĎḋḊḑḐđĐðÐeE" + @@ -1401,7 +1401,7 @@ public void setFont2Ways() throws IOException, InterruptedException { PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDocument, true); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "SILEOT.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "SILEOT.ttf", PdfEncodings.IDENTITY_H); Rectangle rect1 = new Rectangle(10, 700, 200, 25); Rectangle rect2 = new Rectangle(30, 600, 200, 25); diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java index 8f511d9ecb..1261e85bd9 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldTextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -50,9 +50,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfFormFieldTextTest extends ExtendedITextTest { - - public static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldTextTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldTextTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; + private static final String destinationFolder = TestUtil.getOutputPath() + "/forms/PdfFormFieldTextTest/"; + private static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/PdfFormFieldTextTest/"; private static final String TEXT = "Some text in Russian \u0442\u0435\u043A\u0441\u0442 (text)"; @BeforeAll @@ -98,7 +98,7 @@ public void fontsResourcesHelvFontTest() throws IOException { String filename = "fontsResourcesHelvFontTest.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + "drWithHelv.pdf"), new PdfWriter(destinationFolder + filename)); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "NotoSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H); font.setSubset(false); PdfAcroForm form = PdfFormCreator.getAcroForm(pdfDoc, false); @@ -134,7 +134,7 @@ public void fontsResourcesHelvCourierNotoFontTest() throws IOException { String filename = "fontsResourcesHelvCourierNotoFontTest.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + "drWithHelvAndCourier.pdf"), new PdfWriter(destinationFolder + filename)); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "NotoSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H); font.setSubset(false); PdfFormField formField = PdfFormCreator.getAcroForm(pdfDoc, false) diff --git a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java index 040c0294f4..aca69b8427 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfFormFieldsHierarchyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfPushButtonTest.java b/forms/src/test/java/com/itextpdf/forms/PdfPushButtonTest.java index 611eb5e6da..b7c38b7370 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfPushButtonTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfPushButtonTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/PdfUA2FormTest.java b/forms/src/test/java/com/itextpdf/forms/PdfUA2FormTest.java index 6136358b56..94f43140f4 100644 --- a/forms/src/test/java/com/itextpdf/forms/PdfUA2FormTest.java +++ b/forms/src/test/java/com/itextpdf/forms/PdfUA2FormTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -70,6 +70,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfUA2FormTest extends ExtendedITextTest { public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/forms/PdfUA2FormTest/"; + public static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/forms//PdfUA2FormTest/"; @BeforeAll @@ -85,7 +86,7 @@ public void checkFormFieldTest() throws IOException, XMPException, InterruptedEx try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); @@ -110,7 +111,7 @@ public void checkTextAreaWithLabelTest() throws IOException, XMPException, Inter try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); @@ -140,7 +141,7 @@ public void checkInputFieldTest() throws IOException, XMPException, InterruptedE try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); @@ -164,7 +165,7 @@ public void checkSignatureFormTest() throws IOException, XMPException, Interrupt try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); @@ -192,7 +193,7 @@ public void setAlternativeDescriptionTest() throws IOException, XMPException, In try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); diff --git a/forms/src/test/java/com/itextpdf/forms/RectangleIntegrationTest.java b/forms/src/test/java/com/itextpdf/forms/RectangleIntegrationTest.java index 1c0929ed09..86b892036c 100644 --- a/forms/src/test/java/com/itextpdf/forms/RectangleIntegrationTest.java +++ b/forms/src/test/java/com/itextpdf/forms/RectangleIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java b/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java index fb4a3263e3..31da524e1d 100644 --- a/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java +++ b/forms/src/test/java/com/itextpdf/forms/Utf8FormsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -46,10 +46,10 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class Utf8FormsTest extends ExtendedITextTest { - - public static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/Utf8FormsTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/forms/Utf8FormsTest/"; - public static final String FONT = "./src/test/resources/com/itextpdf/forms/Utf8FormsTest/NotoSansCJKsc-Regular.otf"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/forms/fonts/"; + private static final String sourceFolder = "./src/test/resources/com/itextpdf/forms/Utf8FormsTest/"; + private static final String destinationFolder = TestUtil.getOutputPath() + "/forms/Utf8FormsTest/"; + private static final String FONT = FONT_FOLDER + "NotoSansCJKsc-Regular.otf"; @BeforeEach public void before() { diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java index 84d3f1fbaf..684dc74efe 100644 --- a/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/XfdfReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java index c5b75a9956..4b793d4ffe 100644 --- a/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java +++ b/forms/src/test/java/com/itextpdf/forms/XfdfUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java b/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java index 6ac91fd181..ddadf4660a 100644 --- a/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java +++ b/forms/src/test/java/com/itextpdf/forms/XfdfWriterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilderTest.java index 7ef4ca5a4c..a6058e46d3 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/CheckBoxFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilderTest.java index 16a5d6b7b5..da1cc6b42b 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/ChoiceFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/FieldsRotationTest.java b/forms/src/test/java/com/itextpdf/forms/fields/FieldsRotationTest.java index c3386d46aa..a591226f7b 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/FieldsRotationTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/FieldsRotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/FormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/FormFieldBuilderTest.java index 1944d2091e..5a81bbe845 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/FormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/FormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java b/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java index 04fa59e114..6e05bfd045 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/FormsMetaInfoStaticContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilderTest.java index 6b4be80661..31fccac36f 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/NonTerminalFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormCreatorTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormCreatorTest.java index f23551a2a1..cedde909d3 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormCreatorTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormCreatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java index ab0e038564..77f43342c8 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldNameTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldNameTest.java index 6e634802a1..ecdd9e96d6 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldNameTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldNameTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java index 855a499780..6ad238f3f5 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/PdfFormFieldUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilderTest.java index de7d3b4b96..3e16cde668 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/PushButtonFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/RadioFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/RadioFormFieldBuilderTest.java index ea6ce1acb8..4635bf0deb 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/RadioFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/RadioFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/SignatureFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/SignatureFormFieldBuilderTest.java index dd874ce607..15eefac55e 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/SignatureFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/SignatureFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/TerminalFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/TerminalFormFieldBuilderTest.java index 09d49a46ed..c6a2bfe690 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/TerminalFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/TerminalFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/TextFormFieldBuilderTest.java b/forms/src/test/java/com/itextpdf/forms/fields/TextFormFieldBuilderTest.java index 05f40c1821..b8a18c7738 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/TextFormFieldBuilderTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/TextFormFieldBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategyTest.java b/forms/src/test/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategyTest.java index 749543bbd8..6f7f163923 100644 --- a/forms/src/test/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategyTest.java +++ b/forms/src/test/java/com/itextpdf/forms/fields/merging/OnDuplicateFormFieldNameStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/AccessibleElementTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/AccessibleElementTest.java index 0ab1b68203..19fcccdc22 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/AccessibleElementTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/AccessibleElementTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/ButtonColorTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/ButtonColorTest.java index 8c95c9669e..95f2a9112a 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/ButtonColorTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/ButtonColorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/ButtonTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/ButtonTest.java index 6b7c03f4ce..6443d86d43 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/ButtonTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/ButtonTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/CheckBoxTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/CheckBoxTest.java index b98bef354c..8815372afc 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/CheckBoxTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/CheckBoxTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/ComboBoxFieldTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/ComboBoxFieldTest.java index 746ee3b8f6..31c5a49b69 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/ComboBoxFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/ComboBoxFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/FixedPositionTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/FixedPositionTest.java index 2e6d8ac8a2..0a2a7f6e09 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/FixedPositionTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/FixedPositionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/InputButtonTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/InputButtonTest.java index 2e23d65883..c65fdafc4e 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/InputButtonTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/InputButtonTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/InputFieldTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/InputFieldTest.java index aee54bcb39..e5bf673fa2 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/InputFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/InputFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/ListBoxFieldTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/ListBoxFieldTest.java index 5b7999af27..1510f09cd1 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/ListBoxFieldTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/ListBoxFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/RadioTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/RadioTest.java index 8ae30660ad..753d84986a 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/RadioTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/RadioTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/SelectFieldItemTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/SelectFieldItemTest.java index 19452a025c..fff730bce8 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/SelectFieldItemTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/SelectFieldItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/SignatureFieldAppearanceTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/SignatureFieldAppearanceTest.java index cf9c27ede8..0ccda9ea53 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/SignatureFieldAppearanceTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/SignatureFieldAppearanceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/element/TextAreaTest.java b/forms/src/test/java/com/itextpdf/forms/form/element/TextAreaTest.java index b10edc6a97..5e99c57f91 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/element/TextAreaTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/element/TextAreaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/renderer/InputFieldRendererTest.java b/forms/src/test/java/com/itextpdf/forms/form/renderer/InputFieldRendererTest.java index b2ffa35bbb..56c8d63952 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/renderer/InputFieldRendererTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/renderer/InputFieldRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRendererTest.java b/forms/src/test/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRendererTest.java index 3fa5fc2911..4486d47bcb 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRendererTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/renderer/SelectFieldListBoxRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/form/renderer/TextAreaRendererTest.java b/forms/src/test/java/com/itextpdf/forms/form/renderer/TextAreaRendererTest.java index 5f4eaa0616..5f6f944cf7 100644 --- a/forms/src/test/java/com/itextpdf/forms/form/renderer/TextAreaRendererTest.java +++ b/forms/src/test/java/com/itextpdf/forms/form/renderer/TextAreaRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/tagging/ProhibitedTagRelationsResolverTest.java b/forms/src/test/java/com/itextpdf/forms/tagging/ProhibitedTagRelationsResolverTest.java index 8b9cd614d5..51a81826ac 100644 --- a/forms/src/test/java/com/itextpdf/forms/tagging/ProhibitedTagRelationsResolverTest.java +++ b/forms/src/test/java/com/itextpdf/forms/tagging/ProhibitedTagRelationsResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/util/RegisterDefaultDiContainerTest.java b/forms/src/test/java/com/itextpdf/forms/util/RegisterDefaultDiContainerTest.java index 0fd6c5f3ab..e772b5e3c0 100644 --- a/forms/src/test/java/com/itextpdf/forms/util/RegisterDefaultDiContainerTest.java +++ b/forms/src/test/java/com/itextpdf/forms/util/RegisterDefaultDiContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java b/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java index 7cb30e2780..a4e4f1a2ba 100644 --- a/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java +++ b/forms/src/test/java/com/itextpdf/forms/widget/AppearanceCharacteristicsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java index 2d3d939b07..b983a9fba3 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java +++ b/forms/src/test/java/com/itextpdf/forms/xfa/SecurityTestXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java b/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java index cff1719b25..7c23a77ae4 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java +++ b/forms/src/test/java/com/itextpdf/forms/xfa/XFAFormTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java b/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java index 620cb1fab5..2664d0d918 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java +++ b/forms/src/test/java/com/itextpdf/forms/xfa/XfaSecurityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java index 2900da9cfd..639662938c 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java +++ b/forms/src/test/java/com/itextpdf/forms/xfdf/ExceptionTestXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java b/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java index e66cb27d54..dba4cd5d8b 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java +++ b/forms/src/test/java/com/itextpdf/forms/xfdf/SecurityTestXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java index ca2094406e..ecce167f79 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java +++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfReaderUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java index ea6c15b191..c567ee61ee 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java +++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfSecurityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java index 987c40e0c8..4ff9637a8c 100644 --- a/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java +++ b/forms/src/test/java/com/itextpdf/forms/xfdf/XfdfWriterUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldMultilineTextTest/NotoSansCJKtc-Light.otf b/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldMultilineTextTest/NotoSansCJKtc-Light.otf deleted file mode 100644 index 47012365b4..0000000000 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldMultilineTextTest/NotoSansCJKtc-Light.otf and /dev/null differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/NotoSans-Regular.ttf b/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/NotoSans-Regular.ttf deleted file mode 100644 index a1b8994ede..0000000000 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/NotoSans-Regular.ttf and /dev/null differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/cmp_textFieldWithWideUnicodeRange.pdf b/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/cmp_textFieldWithWideUnicodeRange.pdf index 80966ec712..8f61d8b8e9 100644 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/cmp_textFieldWithWideUnicodeRange.pdf and b/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/cmp_textFieldWithWideUnicodeRange.pdf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTextTest/NotoSans-Regular.ttf b/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTextTest/NotoSans-Regular.ttf deleted file mode 100644 index 04a2f52ed2..0000000000 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTextTest/NotoSans-Regular.ttf and /dev/null differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/FreeSans.ttf b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/FreeSans.ttf and /dev/null differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_formFieldTest.pdf b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_formFieldTest.pdf index ffed2a8c6a..f83a36ec8a 100644 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_formFieldTest.pdf and b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_formFieldTest.pdf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_inputFieldTest.pdf b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_inputFieldTest.pdf index 70af0e1414..f1cc0dd621 100644 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_inputFieldTest.pdf and b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_inputFieldTest.pdf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_signatureFormTest.pdf b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_signatureFormTest.pdf index 9a6d8f26f6..148a78c5b5 100644 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_signatureFormTest.pdf and b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_signatureFormTest.pdf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_textAreaTest.pdf b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_textAreaTest.pdf index 4cbac91845..82eae19b08 100644 Binary files a/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_textAreaTest.pdf and b/forms/src/test/resources/com/itextpdf/forms/PdfUA2FormTest/cmp_textAreaTest.pdf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/LICENSE_OFL.txt b/forms/src/test/resources/com/itextpdf/forms/fonts/LICENSE_OFL-1.1.txt similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/LICENSE_OFL.txt rename to forms/src/test/resources/com/itextpdf/forms/fonts/LICENSE_OFL-1.1.txt diff --git a/forms/src/test/resources/com/itextpdf/forms/fonts/NOTICE.txt b/forms/src/test/resources/com/itextpdf/forms/fonts/NOTICE.txt new file mode 100644 index 0000000000..0436e56b21 --- /dev/null +++ b/forms/src/test/resources/com/itextpdf/forms/fonts/NOTICE.txt @@ -0,0 +1,7 @@ +This software uses the following test resources under the following licenses: +NotoSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit a970ecbe0bf1e6ae5cb22d6abdea672448655f0c (03.03.2022) from "https://github.com/google/fonts" +NotoSansCJKjp-Bold.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansCJKtc-Light.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "https://github.com/googlefonts/noto-cjk" +SILEOT.ttf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on "https://software.sil.org/ezra/"" +OpenSansHebrew-Regular.ttf | Apache-2.0 | Based on commit 66fbf17ecab031071aacfd387ad3356a9661d95a (13.07.2021) from repository: "https://github.com/sebastienrousseau/open-sans" +NotoSansCJKsc-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "https://github.com/googlefonts/noto-cjk" \ No newline at end of file diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfCheckBoxFieldTest/NotoSansCJKjp-Bold.otf b/forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKjp-Bold.otf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/PdfCheckBoxFieldTest/NotoSansCJKjp-Bold.otf rename to forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKjp-Bold.otf diff --git a/forms/src/test/resources/com/itextpdf/forms/Utf8FormsTest/NotoSansCJKsc-Regular.otf b/forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKsc-Regular.otf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/Utf8FormsTest/NotoSansCJKsc-Regular.otf rename to forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKsc-Regular.otf diff --git a/forms/src/test/resources/com/itextpdf/forms/FormFieldFlatteningTest/NotoSansCJKtc-Light.otf b/forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKtc-Light.otf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/FormFieldFlatteningTest/NotoSansCJKtc-Light.otf rename to forms/src/test/resources/com/itextpdf/forms/fonts/NotoSansCJKtc-Light.otf diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/OpenSansHebrew-Regular.ttf b/forms/src/test/resources/com/itextpdf/forms/fonts/OpenSansHebrew-Regular.ttf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/OpenSansHebrew-Regular.ttf rename to forms/src/test/resources/com/itextpdf/forms/fonts/OpenSansHebrew-Regular.ttf diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/SILEOT.ttf b/forms/src/test/resources/com/itextpdf/forms/fonts/SILEOT.ttf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/PdfFormFieldTest/SILEOT.ttf rename to forms/src/test/resources/com/itextpdf/forms/fonts/SILEOT.ttf diff --git a/hyph/pom.xml b/hyph/pom.xml index cff4481a63..f1478a74c1 100644 --- a/hyph/pom.xml +++ b/hyph/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT hyph diff --git a/io/pom.xml b/io/pom.xml index 1baa225216..f3a2315a55 100644 --- a/io/pom.xml +++ b/io/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT io diff --git a/io/src/main/java/com/itextpdf/io/codec/BitFile.java b/io/src/main/java/com/itextpdf/io/codec/BitFile.java index 3cf80ce63b..c15b913b49 100644 --- a/io/src/main/java/com/itextpdf/io/codec/BitFile.java +++ b/io/src/main/java/com/itextpdf/io/codec/BitFile.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/CCITTG4Encoder.java b/io/src/main/java/com/itextpdf/io/codec/CCITTG4Encoder.java index 72e117652e..1a4e458247 100644 --- a/io/src/main/java/com/itextpdf/io/codec/CCITTG4Encoder.java +++ b/io/src/main/java/com/itextpdf/io/codec/CCITTG4Encoder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/Jbig2SegmentReader.java b/io/src/main/java/com/itextpdf/io/codec/Jbig2SegmentReader.java index 499a29c1e2..575908910c 100644 --- a/io/src/main/java/com/itextpdf/io/codec/Jbig2SegmentReader.java +++ b/io/src/main/java/com/itextpdf/io/codec/Jbig2SegmentReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/LZWCompressor.java b/io/src/main/java/com/itextpdf/io/codec/LZWCompressor.java index 17a741ea4d..a66a3b124a 100644 --- a/io/src/main/java/com/itextpdf/io/codec/LZWCompressor.java +++ b/io/src/main/java/com/itextpdf/io/codec/LZWCompressor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/LZWStringTable.java b/io/src/main/java/com/itextpdf/io/codec/LZWStringTable.java index f0ecf0f1ad..a90e5b77e5 100644 --- a/io/src/main/java/com/itextpdf/io/codec/LZWStringTable.java +++ b/io/src/main/java/com/itextpdf/io/codec/LZWStringTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/PngWriter.java b/io/src/main/java/com/itextpdf/io/codec/PngWriter.java index d4e67a15dc..7049a769e2 100644 --- a/io/src/main/java/com/itextpdf/io/codec/PngWriter.java +++ b/io/src/main/java/com/itextpdf/io/codec/PngWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/codec/TiffWriter.java b/io/src/main/java/com/itextpdf/io/codec/TiffWriter.java index 87448d258a..e90a9441d7 100644 --- a/io/src/main/java/com/itextpdf/io/codec/TiffWriter.java +++ b/io/src/main/java/com/itextpdf/io/codec/TiffWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/colors/IccProfile.java b/io/src/main/java/com/itextpdf/io/colors/IccProfile.java index c4a685599f..d756e71933 100644 --- a/io/src/main/java/com/itextpdf/io/colors/IccProfile.java +++ b/io/src/main/java/com/itextpdf/io/colors/IccProfile.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/exceptions/ExceptionUtil.java b/io/src/main/java/com/itextpdf/io/exceptions/ExceptionUtil.java index af4940315c..7965aa2375 100644 --- a/io/src/main/java/com/itextpdf/io/exceptions/ExceptionUtil.java +++ b/io/src/main/java/com/itextpdf/io/exceptions/ExceptionUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/exceptions/FontCompressionException.java b/io/src/main/java/com/itextpdf/io/exceptions/FontCompressionException.java index a6e2e10d27..ff0f0079ef 100644 --- a/io/src/main/java/com/itextpdf/io/exceptions/FontCompressionException.java +++ b/io/src/main/java/com/itextpdf/io/exceptions/FontCompressionException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/exceptions/IOException.java b/io/src/main/java/com/itextpdf/io/exceptions/IOException.java index 5436f33a45..a40dc1e4a4 100644 --- a/io/src/main/java/com/itextpdf/io/exceptions/IOException.java +++ b/io/src/main/java/com/itextpdf/io/exceptions/IOException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/exceptions/IoExceptionMessageConstant.java b/io/src/main/java/com/itextpdf/io/exceptions/IoExceptionMessageConstant.java index f1ef5d802b..2705fd4936 100644 --- a/io/src/main/java/com/itextpdf/io/exceptions/IoExceptionMessageConstant.java +++ b/io/src/main/java/com/itextpdf/io/exceptions/IoExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -187,4 +187,6 @@ public final class IoExceptionMessageConstant { public static final String ONLY_BMP_ENCODING = "This encoder only accepts BMP codepoints"; public static final String READING_BYTE_LIMIT_MUST_NOT_BE_LESS_ZERO = "The reading byte limit argument must not " + "be less than zero."; + + public static final String INVALID_HTTP_RESPONSE = "Invalid http response {0}."; } diff --git a/io/src/main/java/com/itextpdf/io/exceptions/ReadingByteLimitException.java b/io/src/main/java/com/itextpdf/io/exceptions/ReadingByteLimitException.java index 6dcc221583..65144326b1 100644 --- a/io/src/main/java/com/itextpdf/io/exceptions/ReadingByteLimitException.java +++ b/io/src/main/java/com/itextpdf/io/exceptions/ReadingByteLimitException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/AbstractTrueTypeFontModifier.java b/io/src/main/java/com/itextpdf/io/font/AbstractTrueTypeFontModifier.java index f51f722095..d672a48015 100644 --- a/io/src/main/java/com/itextpdf/io/font/AbstractTrueTypeFontModifier.java +++ b/io/src/main/java/com/itextpdf/io/font/AbstractTrueTypeFontModifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/AdobeGlyphList.java b/io/src/main/java/com/itextpdf/io/font/AdobeGlyphList.java index 777b1c3e25..c77840c278 100644 --- a/io/src/main/java/com/itextpdf/io/font/AdobeGlyphList.java +++ b/io/src/main/java/com/itextpdf/io/font/AdobeGlyphList.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CFFFont.java b/io/src/main/java/com/itextpdf/io/font/CFFFont.java index cb701f693f..3c092571c5 100644 --- a/io/src/main/java/com/itextpdf/io/font/CFFFont.java +++ b/io/src/main/java/com/itextpdf/io/font/CFFFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CFFFontSubset.java b/io/src/main/java/com/itextpdf/io/font/CFFFontSubset.java index 75fbd33a8f..17c3b76230 100644 --- a/io/src/main/java/com/itextpdf/io/font/CFFFontSubset.java +++ b/io/src/main/java/com/itextpdf/io/font/CFFFontSubset.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CMapEncoding.java b/io/src/main/java/com/itextpdf/io/font/CMapEncoding.java index a2fe7b759f..172946250a 100644 --- a/io/src/main/java/com/itextpdf/io/font/CMapEncoding.java +++ b/io/src/main/java/com/itextpdf/io/font/CMapEncoding.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CidFont.java b/io/src/main/java/com/itextpdf/io/font/CidFont.java index a19921af8f..ee71b33d4c 100644 --- a/io/src/main/java/com/itextpdf/io/font/CidFont.java +++ b/io/src/main/java/com/itextpdf/io/font/CidFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CidFontProperties.java b/io/src/main/java/com/itextpdf/io/font/CidFontProperties.java index 183768ce7c..c06ec7632d 100644 --- a/io/src/main/java/com/itextpdf/io/font/CidFontProperties.java +++ b/io/src/main/java/com/itextpdf/io/font/CidFontProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/CjkResourceLoader.java b/io/src/main/java/com/itextpdf/io/font/CjkResourceLoader.java index 52f2d541c8..24d7022b28 100644 --- a/io/src/main/java/com/itextpdf/io/font/CjkResourceLoader.java +++ b/io/src/main/java/com/itextpdf/io/font/CjkResourceLoader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontCache.java b/io/src/main/java/com/itextpdf/io/font/FontCache.java index f124a17158..cd6c03b80d 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontCache.java +++ b/io/src/main/java/com/itextpdf/io/font/FontCache.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontCacheKey.java b/io/src/main/java/com/itextpdf/io/font/FontCacheKey.java index 6962d57503..10a0e2a926 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontCacheKey.java +++ b/io/src/main/java/com/itextpdf/io/font/FontCacheKey.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontEncoding.java b/io/src/main/java/com/itextpdf/io/font/FontEncoding.java index 21f4eb9ac7..4f9ea30305 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontEncoding.java +++ b/io/src/main/java/com/itextpdf/io/font/FontEncoding.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontIdentification.java b/io/src/main/java/com/itextpdf/io/font/FontIdentification.java index 724ff6fb35..b647ab98dd 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontIdentification.java +++ b/io/src/main/java/com/itextpdf/io/font/FontIdentification.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontMetrics.java b/io/src/main/java/com/itextpdf/io/font/FontMetrics.java index 1d34455fe6..769558abbf 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontMetrics.java +++ b/io/src/main/java/com/itextpdf/io/font/FontMetrics.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontNames.java b/io/src/main/java/com/itextpdf/io/font/FontNames.java index a5decc3492..9eb6f2c785 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontNames.java +++ b/io/src/main/java/com/itextpdf/io/font/FontNames.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontProgram.java b/io/src/main/java/com/itextpdf/io/font/FontProgram.java index cbd873542d..8f56eff301 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontProgram.java +++ b/io/src/main/java/com/itextpdf/io/font/FontProgram.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptor.java b/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptor.java index ca1b3f7e3e..c470b4b69c 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptor.java +++ b/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptorFactory.java b/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptorFactory.java index cbc6769ff9..9908fc74b3 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptorFactory.java +++ b/io/src/main/java/com/itextpdf/io/font/FontProgramDescriptorFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontProgramFactory.java b/io/src/main/java/com/itextpdf/io/font/FontProgramFactory.java index 2472da8604..d16446d631 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontProgramFactory.java +++ b/io/src/main/java/com/itextpdf/io/font/FontProgramFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/FontRegisterProvider.java b/io/src/main/java/com/itextpdf/io/font/FontRegisterProvider.java index db476d39a4..42178a1c16 100644 --- a/io/src/main/java/com/itextpdf/io/font/FontRegisterProvider.java +++ b/io/src/main/java/com/itextpdf/io/font/FontRegisterProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/GidAwareGlyph.java b/io/src/main/java/com/itextpdf/io/font/GidAwareGlyph.java index 457f191bb7..785f13a9f8 100644 --- a/io/src/main/java/com/itextpdf/io/font/GidAwareGlyph.java +++ b/io/src/main/java/com/itextpdf/io/font/GidAwareGlyph.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/IExtraEncoding.java b/io/src/main/java/com/itextpdf/io/font/IExtraEncoding.java index e2b62a43c1..3040e20eda 100644 --- a/io/src/main/java/com/itextpdf/io/font/IExtraEncoding.java +++ b/io/src/main/java/com/itextpdf/io/font/IExtraEncoding.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/OpenTypeParser.java b/io/src/main/java/com/itextpdf/io/font/OpenTypeParser.java index 0d0a1987e8..600b277e93 100644 --- a/io/src/main/java/com/itextpdf/io/font/OpenTypeParser.java +++ b/io/src/main/java/com/itextpdf/io/font/OpenTypeParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/PdfEncodings.java b/io/src/main/java/com/itextpdf/io/font/PdfEncodings.java index ff86711214..1120cbbd3a 100644 --- a/io/src/main/java/com/itextpdf/io/font/PdfEncodings.java +++ b/io/src/main/java/com/itextpdf/io/font/PdfEncodings.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/Pfm2afm.java b/io/src/main/java/com/itextpdf/io/font/Pfm2afm.java index acc46d8a0b..de9eb49c8b 100644 --- a/io/src/main/java/com/itextpdf/io/font/Pfm2afm.java +++ b/io/src/main/java/com/itextpdf/io/font/Pfm2afm.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/TrueTypeCollection.java b/io/src/main/java/com/itextpdf/io/font/TrueTypeCollection.java index 3c17934377..9f3fae180f 100644 --- a/io/src/main/java/com/itextpdf/io/font/TrueTypeCollection.java +++ b/io/src/main/java/com/itextpdf/io/font/TrueTypeCollection.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/TrueTypeFont.java b/io/src/main/java/com/itextpdf/io/font/TrueTypeFont.java index a8024b91ce..b10e4706db 100644 --- a/io/src/main/java/com/itextpdf/io/font/TrueTypeFont.java +++ b/io/src/main/java/com/itextpdf/io/font/TrueTypeFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/TrueTypeFontMerger.java b/io/src/main/java/com/itextpdf/io/font/TrueTypeFontMerger.java index c82568b1a7..6c5f3f068b 100644 --- a/io/src/main/java/com/itextpdf/io/font/TrueTypeFontMerger.java +++ b/io/src/main/java/com/itextpdf/io/font/TrueTypeFontMerger.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/TrueTypeFontSubsetter.java b/io/src/main/java/com/itextpdf/io/font/TrueTypeFontSubsetter.java index 27ffedbba6..d944b404b1 100644 --- a/io/src/main/java/com/itextpdf/io/font/TrueTypeFontSubsetter.java +++ b/io/src/main/java/com/itextpdf/io/font/TrueTypeFontSubsetter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/Type1Font.java b/io/src/main/java/com/itextpdf/io/font/Type1Font.java index 510d867591..d6b6bbbfd7 100644 --- a/io/src/main/java/com/itextpdf/io/font/Type1Font.java +++ b/io/src/main/java/com/itextpdf/io/font/Type1Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/Type1Parser.java b/io/src/main/java/com/itextpdf/io/font/Type1Parser.java index e82efe60aa..1ad293d050 100644 --- a/io/src/main/java/com/itextpdf/io/font/Type1Parser.java +++ b/io/src/main/java/com/itextpdf/io/font/Type1Parser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/WoffConverter.java b/io/src/main/java/com/itextpdf/io/font/WoffConverter.java index 9c33c2db5e..cd39260617 100644 --- a/io/src/main/java/com/itextpdf/io/font/WoffConverter.java +++ b/io/src/main/java/com/itextpdf/io/font/WoffConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/AbstractCMap.java b/io/src/main/java/com/itextpdf/io/font/cmap/AbstractCMap.java index b984d7753a..a40c9691cd 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/AbstractCMap.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/AbstractCMap.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapByteCid.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapByteCid.java index afc4837f49..81f070d558 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapByteCid.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapByteCid.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCharsetEncoder.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCharsetEncoder.java index a7933bc79f..5ae4199de5 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCharsetEncoder.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCharsetEncoder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidToCodepoint.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidToCodepoint.java index 0ccfa0b592..0d350453cc 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidToCodepoint.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidToCodepoint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidUni.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidUni.java index be1e13a7e6..8cb0fcfd97 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidUni.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCidUni.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCodepointToCid.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCodepointToCid.java index 284c61d1e5..5d2dc367ed 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapCodepointToCid.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapCodepointToCid.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapContentParser.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapContentParser.java index 5fe30a7e45..18f5608eb2 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapContentParser.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapContentParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationFromBytes.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationFromBytes.java index c43c6ca34c..f0b174ae67 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationFromBytes.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationFromBytes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationResource.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationResource.java index 1711ad2ca2..dd693ea5df 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationResource.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapLocationResource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapObject.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapObject.java index 284dc89cb0..e4b81234b9 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapObject.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapParser.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapParser.java index 23c03dec81..8bf3095396 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapParser.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapToUnicode.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapToUnicode.java index 634864a266..37bf8f754e 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapToUnicode.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapToUnicode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,7 @@ This file is part of the iText (R) project. */ package com.itextpdf.io.font.cmap; +import com.itextpdf.io.font.FontEncoding; import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.io.util.IntHashtable; import com.itextpdf.io.util.TextUtil; @@ -41,15 +42,13 @@ This file is part of the iText (R) project. public class CMapToUnicode extends AbstractCMap { public static final CMapToUnicode EMPTY_CMAP = new CMapToUnicode(true); + private static final String CMAP_TO_UNICODE_CREATE_TO_UNICODE_CMAP_IS_NOT_SUPPORTED_FOR_FONT_SPECIFIC_ENCODING = + "CMapToUnicode#createToUnicodeCmap is not supported for font specific encoding"; private final Map byteMappings; private final List codeSpaceRanges = new ArrayList<>(); - private CMapToUnicode(boolean emptyCMap) { - byteMappings = Collections.emptyMap(); - } - /** * Creates a new instance of CMap. */ @@ -57,6 +56,10 @@ public CMapToUnicode() { byteMappings = new HashMap<>(); } + private CMapToUnicode(boolean emptyCMap) { + byteMappings = Collections.emptyMap(); + } + public static CMapToUnicode getIdentity() { CMapToUnicode uni = new CMapToUnicode(); for (int i = 0; i < 65537; i++) { @@ -66,10 +69,34 @@ public static CMapToUnicode getIdentity() { return uni; } + /** + * Creates a ToUnicode CMap from the given font encoding. + * + * @param fontEncoding the font encoding + * + * @return the ToUnicode CMap + */ + public static CMapToUnicode createToUnicodeCmap(FontEncoding fontEncoding) { + // For now we throw here though in future it may change + if (fontEncoding.isFontSpecific()) { + throw new IllegalArgumentException( + CMAP_TO_UNICODE_CREATE_TO_UNICODE_CMAP_IS_NOT_SUPPORTED_FOR_FONT_SPECIFIC_ENCODING); + } + CMapToUnicode toUnicodeCmap = new CMapToUnicode(); + // 256 is max for any FontEncoding + for (int code = 0; code < 256; code++) { + int unicode = fontEncoding.getUnicode(code); + if (unicode != -1) { + toUnicodeCmap.addChar(code, new char[] {(char) unicode}); + } + } + return toUnicodeCmap; + } + /** * This will tell if this cmap has any two byte mappings. * - * @return true If there are any two byte mappings, false otherwise. + * @return {@code true} If there are any two byte mappings, {@code false} otherwise */ public boolean hasByteMappings() { return byteMappings.size() != 0; @@ -78,10 +105,11 @@ public boolean hasByteMappings() { /** * This will perform a lookup into the map. * - * @param code The code used to lookup. - * @param offset The offset into the byte array. - * @param length The length of the data we are getting. - * @return The string that matches the lookup. + * @param code the code used to lookup + * @param offset the offset into the byte array + * @param length the length of the data we are getting + * + * @return the string that matches the lookup */ public char[] lookup(byte[] code, int offset, int length) { char[] result = null; @@ -141,22 +169,6 @@ public List getCodeSpaceRanges() { return codeSpaceRanges; } - @Override - void addCodeSpaceRange(byte[] low, byte[] high) { - codeSpaceRanges.add(low); - codeSpaceRanges.add(high); - } - - private int convertToInt(char[] s) { - int value = 0; - for (int i = 0; i < s.length - 1; i++) { - value += s[i]; - value <<= 8; - } - value += s[s.length - 1]; - return value; - } - void addChar(int cid, char[] uni) { byteMappings.put(cid, uni); } @@ -175,22 +187,26 @@ void addChar(String mark, CMapObject code) { } } - private char[] createCharsFromSingleBytes(byte[] bytes) { - if (bytes.length == 1) { - return new char[]{(char) (bytes[0] & 0xff)}; - } else { - char[] chars = new char[bytes.length]; - for (int i = 0; i < bytes.length; i++) { - chars[i] = (char) (bytes[i] & 0xff); - } - return chars; + @Override + void addCodeSpaceRange(byte[] low, byte[] high) { + codeSpaceRanges.add(low); + codeSpaceRanges.add(high); + } + + private int convertToInt(char[] s) { + int value = 0; + for (int i = 0; i < s.length - 1; i++) { + value += s[i]; + value <<= 8; } + value += s[s.length - 1]; + return value; } private char[] createCharsFromDoubleBytes(byte[] bytes) { char[] chars = new char[bytes.length / 2]; - for (int i = 0; i < bytes.length; i+=2) { - chars[i/2] = (char)(((bytes[i] & 0xff) << 8) + (bytes[i+1] & 0xff)); + for (int i = 0; i < bytes.length; i += 2) { + chars[i / 2] = (char) (((bytes[i] & 0xff) << 8) + (bytes[i + 1] & 0xff)); } return chars; } diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/CMapUniCid.java b/io/src/main/java/com/itextpdf/io/font/cmap/CMapUniCid.java index b2fb8e0a28..dd9c637ff5 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/CMapUniCid.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/CMapUniCid.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/ICMapLocation.java b/io/src/main/java/com/itextpdf/io/font/cmap/ICMapLocation.java index 7c34be69fb..9ea27a474d 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/ICMapLocation.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/ICMapLocation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/cmap/StandardCMapCharsets.java b/io/src/main/java/com/itextpdf/io/font/cmap/StandardCMapCharsets.java index d3760a2c5c..d0e86db619 100644 --- a/io/src/main/java/com/itextpdf/io/font/cmap/StandardCMapCharsets.java +++ b/io/src/main/java/com/itextpdf/io/font/cmap/StandardCMapCharsets.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontDescriptorFlags.java b/io/src/main/java/com/itextpdf/io/font/constants/FontDescriptorFlags.java index b272d74531..cf40e8afcf 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontDescriptorFlags.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontDescriptorFlags.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontMacStyleFlags.java b/io/src/main/java/com/itextpdf/io/font/constants/FontMacStyleFlags.java index 182c81d354..84445fe851 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontMacStyleFlags.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontMacStyleFlags.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontResources.java b/io/src/main/java/com/itextpdf/io/font/constants/FontResources.java index 5893a09ffc..5366187bcb 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontResources.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontResources.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontStretches.java b/io/src/main/java/com/itextpdf/io/font/constants/FontStretches.java index 4fa5ac4b51..f7675c6101 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontStretches.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontStretches.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontStyles.java b/io/src/main/java/com/itextpdf/io/font/constants/FontStyles.java index 16b6f5b8d5..f43b099f98 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontStyles.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontStyles.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/FontWeights.java b/io/src/main/java/com/itextpdf/io/font/constants/FontWeights.java index c8b66bdcc6..6df93d73ec 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/FontWeights.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/FontWeights.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/StandardFontFamilies.java b/io/src/main/java/com/itextpdf/io/font/constants/StandardFontFamilies.java index 4758fc7c00..567fa9dc4b 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/StandardFontFamilies.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/StandardFontFamilies.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/StandardFonts.java b/io/src/main/java/com/itextpdf/io/font/constants/StandardFonts.java index 6d8dd429b7..efaf90fa23 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/StandardFonts.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/StandardFonts.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/constants/TrueTypeCodePages.java b/io/src/main/java/com/itextpdf/io/font/constants/TrueTypeCodePages.java index 54cc17175f..0f84f0eab0 100644 --- a/io/src/main/java/com/itextpdf/io/font/constants/TrueTypeCodePages.java +++ b/io/src/main/java/com/itextpdf/io/font/constants/TrueTypeCodePages.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ActualTextIterator.java b/io/src/main/java/com/itextpdf/io/font/otf/ActualTextIterator.java index 34c83acd4f..46f046dafe 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ActualTextIterator.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ActualTextIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ChainingContextualTable.java b/io/src/main/java/com/itextpdf/io/font/otf/ChainingContextualTable.java index 2177d036e0..798fd8fa1c 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ChainingContextualTable.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ChainingContextualTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ContextualPositionRule.java b/io/src/main/java/com/itextpdf/io/font/otf/ContextualPositionRule.java index 5daf110c2b..b84564f2b1 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ContextualPositionRule.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ContextualPositionRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ContextualRule.java b/io/src/main/java/com/itextpdf/io/font/otf/ContextualRule.java index 34b736321e..cd68a5f2b2 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ContextualRule.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ContextualRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ContextualSubstRule.java b/io/src/main/java/com/itextpdf/io/font/otf/ContextualSubstRule.java index fff79a235a..2d1469eb77 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ContextualSubstRule.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ContextualSubstRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ContextualTable.java b/io/src/main/java/com/itextpdf/io/font/otf/ContextualTable.java index 100773cc59..8b5a2bd666 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ContextualTable.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ContextualTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/FeatureRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/FeatureRecord.java index 0805fad4fd..3a43ef33dc 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/FeatureRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/FeatureRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/FontReadingException.java b/io/src/main/java/com/itextpdf/io/font/otf/FontReadingException.java index 17ec13afe2..cbf223f584 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/FontReadingException.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/FontReadingException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/Glyph.java b/io/src/main/java/com/itextpdf/io/font/otf/Glyph.java index ede41b7744..01db7b913c 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/Glyph.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/Glyph.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GlyphLine.java b/io/src/main/java/com/itextpdf/io/font/otf/GlyphLine.java index 2304ddec66..c6c74c7460 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GlyphLine.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GlyphLine.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GlyphPositioningTableReader.java b/io/src/main/java/com/itextpdf/io/font/otf/GlyphPositioningTableReader.java index 8e80209ed4..f3700da7c4 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GlyphPositioningTableReader.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GlyphPositioningTableReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GlyphSubstitutionTableReader.java b/io/src/main/java/com/itextpdf/io/font/otf/GlyphSubstitutionTableReader.java index 4a3024dce3..046d67e294 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GlyphSubstitutionTableReader.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GlyphSubstitutionTableReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposAnchor.java b/io/src/main/java/com/itextpdf/io/font/otf/GposAnchor.java index 19ebef9e76..e18324b231 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposAnchor.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposAnchor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType1.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType1.java index 6a3487f71f..2c9a59422f 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType1.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType2.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType2.java index c135ea4ae2..d3a8154cba 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType4.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType4.java index 39df8e5906..c0125d3e91 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType4.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType4.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType5.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType5.java index c0b7f75169..d3675fb5b0 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType5.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType5.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType6.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType6.java index 90f7af971d..1c0948c694 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType6.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType6.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType7.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType7.java index e026e3340e..a02e364bf8 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType7.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType7.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType8.java b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType8.java index aa8f5af2d1..2de6cb13cc 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType8.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposLookupType8.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GposValueRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/GposValueRecord.java index 6770944002..f7a734f824 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GposValueRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GposValueRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType1.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType1.java index 9f9bf79ba3..b8a4e13b9c 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType1.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType2.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType2.java index db83ac48a9..6c45041139 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType3.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType3.java index 8f885b3d13..d9ff2a4eb5 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType3.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType3.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType4.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType4.java index d6bf03eadb..15e361900a 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType4.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType4.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType5.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType5.java index de81cc69db..62193c7795 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType5.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType5.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType6.java b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType6.java index 793f70c2b1..3c1105fe16 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType6.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/GsubLookupType6.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/LanguageRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/LanguageRecord.java index 2aa06fdd45..2eea906f70 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/LanguageRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/LanguageRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/LanguageTags.java b/io/src/main/java/com/itextpdf/io/font/otf/LanguageTags.java index 5acd487ffd..78dad25823 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/LanguageTags.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/LanguageTags.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/MarkTable.java b/io/src/main/java/com/itextpdf/io/font/otf/MarkTable.java index ef8ae5ee6b..0caeb55e24 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/MarkTable.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/MarkTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OpenTableLookup.java b/io/src/main/java/com/itextpdf/io/font/otf/OpenTableLookup.java index a92879eca2..8a98d59605 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OpenTableLookup.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OpenTableLookup.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFeature.java b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFeature.java index 2ea6710eaa..369f98dc8c 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFeature.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFeature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFontTableReader.java b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFontTableReader.java index 20e8fb2820..f844744670 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFontTableReader.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeFontTableReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReader.java b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReader.java index 90f5091a5c..649da7735a 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReader.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeScript.java b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeScript.java index dd8e20058a..944ba6b4fc 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeScript.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OpenTypeScript.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OtfClass.java b/io/src/main/java/com/itextpdf/io/font/otf/OtfClass.java index 68b8febd14..09afb94f0c 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OtfClass.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OtfClass.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OtfMarkRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/OtfMarkRecord.java index 31bb0ebc59..08be0d8535 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OtfMarkRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OtfMarkRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/OtfReadCommon.java b/io/src/main/java/com/itextpdf/io/font/otf/OtfReadCommon.java index 13a6f21ac3..0b8461f5a7 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/OtfReadCommon.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/OtfReadCommon.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/PosLookupRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/PosLookupRecord.java index fdf8d56d9a..71b28190fa 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/PosLookupRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/PosLookupRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/ScriptRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/ScriptRecord.java index 842ab56aaa..7e14c3b3f9 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/ScriptRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/ScriptRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/SubstLookupRecord.java b/io/src/main/java/com/itextpdf/io/font/otf/SubstLookupRecord.java index 3a2fa4b4f7..4795daa154 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/SubstLookupRecord.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/SubstLookupRecord.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/TagAndLocation.java b/io/src/main/java/com/itextpdf/io/font/otf/TagAndLocation.java index 6eaa585d56..3388f94fea 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/TagAndLocation.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/TagAndLocation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format1.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format1.java index f601641feb..49da05c613 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format1.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format2.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format2.java index 6aa941a274..fe9d70f135 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format3.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format3.java index 85cf9067c6..40ab0a3398 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format3.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype5/SubTableLookup5Format3.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format1.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format1.java index 93b8196cdd..2e66b2101e 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format1.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format2.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format2.java index 40e7ee5cc6..07f46db180 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format3.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format3.java index 8b0455b12c..06b3eec643 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format3.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype6/SubTableLookup6Format3.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype7/PosTableLookup7Format2.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype7/PosTableLookup7Format2.java index 22aa215ab0..4c8288fba6 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype7/PosTableLookup7Format2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype7/PosTableLookup7Format2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format1.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format1.java index de9ea4822a..9c181d715b 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format1.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format2.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format2.java index 8b55470bd1..9c5a34b738 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format2.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format3.java b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format3.java index d3825fe050..643489ded4 100644 --- a/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format3.java +++ b/io/src/main/java/com/itextpdf/io/font/otf/lookuptype8/PosTableLookup8Format3.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/woff2/JavaUnsignedUtil.java b/io/src/main/java/com/itextpdf/io/font/woff2/JavaUnsignedUtil.java index ca547a187e..c6734fc6d6 100644 --- a/io/src/main/java/com/itextpdf/io/font/woff2/JavaUnsignedUtil.java +++ b/io/src/main/java/com/itextpdf/io/font/woff2/JavaUnsignedUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/font/woff2/Woff2Converter.java b/io/src/main/java/com/itextpdf/io/font/woff2/Woff2Converter.java index c87c6ae8b6..2415b657d4 100644 --- a/io/src/main/java/com/itextpdf/io/font/woff2/Woff2Converter.java +++ b/io/src/main/java/com/itextpdf/io/font/woff2/Woff2Converter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/AwtImageDataFactory.java b/io/src/main/java/com/itextpdf/io/image/AwtImageDataFactory.java index dd71b52151..1755d73eb0 100644 --- a/io/src/main/java/com/itextpdf/io/image/AwtImageDataFactory.java +++ b/io/src/main/java/com/itextpdf/io/image/AwtImageDataFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/BmpImageData.java b/io/src/main/java/com/itextpdf/io/image/BmpImageData.java index af89426434..83ed82badc 100644 --- a/io/src/main/java/com/itextpdf/io/image/BmpImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/BmpImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/BmpImageHelper.java b/io/src/main/java/com/itextpdf/io/image/BmpImageHelper.java index 22672499ef..ef9274e540 100644 --- a/io/src/main/java/com/itextpdf/io/image/BmpImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/BmpImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/GifImageData.java b/io/src/main/java/com/itextpdf/io/image/GifImageData.java index 22845775d7..2db782cd8d 100644 --- a/io/src/main/java/com/itextpdf/io/image/GifImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/GifImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/GifImageHelper.java b/io/src/main/java/com/itextpdf/io/image/GifImageHelper.java index 0046a2a23e..21f1e63f85 100644 --- a/io/src/main/java/com/itextpdf/io/image/GifImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/GifImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/ImageData.java b/io/src/main/java/com/itextpdf/io/image/ImageData.java index 871d564d12..f7ce872e7b 100644 --- a/io/src/main/java/com/itextpdf/io/image/ImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/ImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/ImageDataFactory.java b/io/src/main/java/com/itextpdf/io/image/ImageDataFactory.java index f51c27c77a..c7fb0f05fd 100644 --- a/io/src/main/java/com/itextpdf/io/image/ImageDataFactory.java +++ b/io/src/main/java/com/itextpdf/io/image/ImageDataFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/ImageType.java b/io/src/main/java/com/itextpdf/io/image/ImageType.java index 2563dd47b4..98b4fb94c2 100644 --- a/io/src/main/java/com/itextpdf/io/image/ImageType.java +++ b/io/src/main/java/com/itextpdf/io/image/ImageType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/ImageTypeDetector.java b/io/src/main/java/com/itextpdf/io/image/ImageTypeDetector.java index 0a5892b8e7..5112a2995b 100644 --- a/io/src/main/java/com/itextpdf/io/image/ImageTypeDetector.java +++ b/io/src/main/java/com/itextpdf/io/image/ImageTypeDetector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/Jbig2ImageData.java b/io/src/main/java/com/itextpdf/io/image/Jbig2ImageData.java index fae7464e72..4ab8775089 100644 --- a/io/src/main/java/com/itextpdf/io/image/Jbig2ImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/Jbig2ImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/Jbig2ImageHelper.java b/io/src/main/java/com/itextpdf/io/image/Jbig2ImageHelper.java index dcd754386b..4521ce06f2 100644 --- a/io/src/main/java/com/itextpdf/io/image/Jbig2ImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/Jbig2ImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageData.java b/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageData.java index 532f136c16..f516c9f654 100644 --- a/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageHelper.java b/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageHelper.java index 8d10a6fd3e..d5d012cfd5 100644 --- a/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/Jpeg2000ImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/JpegImageData.java b/io/src/main/java/com/itextpdf/io/image/JpegImageData.java index 42719ed1ac..51449fade4 100644 --- a/io/src/main/java/com/itextpdf/io/image/JpegImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/JpegImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/JpegImageHelper.java b/io/src/main/java/com/itextpdf/io/image/JpegImageHelper.java index 3c9b7fc9df..1f73f57dcf 100644 --- a/io/src/main/java/com/itextpdf/io/image/JpegImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/JpegImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/PngChromaticities.java b/io/src/main/java/com/itextpdf/io/image/PngChromaticities.java index 6d1326a656..e06e523890 100644 --- a/io/src/main/java/com/itextpdf/io/image/PngChromaticities.java +++ b/io/src/main/java/com/itextpdf/io/image/PngChromaticities.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/PngImageData.java b/io/src/main/java/com/itextpdf/io/image/PngImageData.java index fb87efa0a3..7c039ed330 100644 --- a/io/src/main/java/com/itextpdf/io/image/PngImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/PngImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/PngImageHelper.java b/io/src/main/java/com/itextpdf/io/image/PngImageHelper.java index d3b68f7875..833437e4f8 100644 --- a/io/src/main/java/com/itextpdf/io/image/PngImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/PngImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/PngImageHelperConstants.java b/io/src/main/java/com/itextpdf/io/image/PngImageHelperConstants.java index 8753e15170..99bae59ce9 100644 --- a/io/src/main/java/com/itextpdf/io/image/PngImageHelperConstants.java +++ b/io/src/main/java/com/itextpdf/io/image/PngImageHelperConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/RawImageData.java b/io/src/main/java/com/itextpdf/io/image/RawImageData.java index a022f1b919..ac98752701 100644 --- a/io/src/main/java/com/itextpdf/io/image/RawImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/RawImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/RawImageHelper.java b/io/src/main/java/com/itextpdf/io/image/RawImageHelper.java index 91b39be706..ec26f42df7 100644 --- a/io/src/main/java/com/itextpdf/io/image/RawImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/RawImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/TiffImageData.java b/io/src/main/java/com/itextpdf/io/image/TiffImageData.java index 98afa20f17..7a7552a32e 100644 --- a/io/src/main/java/com/itextpdf/io/image/TiffImageData.java +++ b/io/src/main/java/com/itextpdf/io/image/TiffImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/image/TiffImageHelper.java b/io/src/main/java/com/itextpdf/io/image/TiffImageHelper.java index 7709b0728f..925b980f1a 100644 --- a/io/src/main/java/com/itextpdf/io/image/TiffImageHelper.java +++ b/io/src/main/java/com/itextpdf/io/image/TiffImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/logs/IoLogMessageConstant.java b/io/src/main/java/com/itextpdf/io/logs/IoLogMessageConstant.java index fad9694659..7823619bde 100644 --- a/io/src/main/java/com/itextpdf/io/logs/IoLogMessageConstant.java +++ b/io/src/main/java/com/itextpdf/io/logs/IoLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -178,6 +178,8 @@ public final class IoLogMessageConstant { public static final String FAILED_TO_PARSE_ENCODING_STREAM = "Failed to parse encoding stream."; + @Deprecated + // replaced by com.itextpdf.kernel.logs.KernelLogMessageConstant#FAILED_TO_PROCESS_A_TRANSFORMATION_MATRIX public static final String FAILED_TO_PROCESS_A_TRANSFORMATION_MATRIX = "Failed to process a transformation matrix which is noninvertible. Some content may be placed not as " + "expected."; @@ -349,6 +351,8 @@ public final class IoLogMessageConstant { public static final String PDF_READER_CLOSING_FAILED = "PdfReader closing failed due to the error occurred!"; + @Deprecated + // replaced by com.itextpdf.kernel.logs.KernelLogMessageConstant.PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY public static final String PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY = "The PDF contains a BDC operator which refers to a not existing Property dictionary: {0}."; diff --git a/io/src/main/java/com/itextpdf/io/resolver/resource/DefaultResourceRetriever.java b/io/src/main/java/com/itextpdf/io/resolver/resource/DefaultResourceRetriever.java index 9a37a6890e..08c6dd84fc 100644 --- a/io/src/main/java/com/itextpdf/io/resolver/resource/DefaultResourceRetriever.java +++ b/io/src/main/java/com/itextpdf/io/resolver/resource/DefaultResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -27,6 +27,9 @@ This file is part of the iText (R) project. import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.io.util.StreamUtil; import com.itextpdf.io.util.UrlUtil; + +import java.util.HashMap; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,13 +41,14 @@ This file is part of the iText (R) project. * Default implementation of the {@link IResourceRetriever} interface, which can set a limit * on the size of retrieved resources using input stream with a limit on the number of bytes read. */ -public class DefaultResourceRetriever implements IResourceRetriever { +public class DefaultResourceRetriever implements IAdvancedResourceRetriever { private static final Logger LOGGER = LoggerFactory.getLogger(DefaultResourceRetriever.class); private static final int DEFAULT_CONNECT_TIMEOUT = 300_000; private static final int DEFAULT_READ_TIMEOUT = 300_000; private long resourceSizeByteLimit; private int connectTimeout; private int readTimeout; + private Map requestHeaders; /** * Creates a new {@link DefaultResourceRetriever} instance. @@ -104,6 +108,24 @@ public IResourceRetriever setConnectTimeout(int connectTimeout) { return this; } + /** + * Gets the request headers to use in the request. + * + * @return the request headers to use in the request + */ + public Map getRequestHeaders() { + return requestHeaders; + } + + /** + * Sets the request headers to use in the request. + * + * @param headers the request headers to use in the request + */ + public void setRequestHeaders(Map headers) { + this.requestHeaders = headers; + } + /** * Gets the read timeout. *

@@ -121,6 +143,7 @@ public int getReadTimeout() { * The read timeout is used to create input stream with a limited time to receive data from resource. * * @param readTimeout the read timeout in milliseconds + * * @return the {@link IResourceRetriever} instance */ public IResourceRetriever setReadTimeout(int readTimeout) { @@ -129,15 +152,13 @@ public IResourceRetriever setReadTimeout(int readTimeout) { } /** - * Gets the input stream with current limit on the number of bytes read, - * that connect with source URL for retrieving data from that connection. - * - * @param url the source URL - * @return the limited input stream or null if the URL was filtered + * {@inheritDoc} */ + @Override public InputStream getInputStreamByUrl(URL url) throws IOException { if (urlFilter(url)) { - return new LimitedInputStream(UrlUtil.getInputStreamOfFinalConnection(url, connectTimeout, readTimeout), + return new LimitedInputStream(UrlUtil + .getInputStreamOfFinalConnection(url, connectTimeout, readTimeout, requestHeaders), resourceSizeByteLimit); } LOGGER.warn(MessageFormatUtil.format(IoLogMessageConstant.RESOURCE_WITH_GIVEN_URL_WAS_FILTERED_OUT, url)); @@ -145,12 +166,9 @@ public InputStream getInputStreamByUrl(URL url) throws IOException { } /** - * Gets the byte array that are retrieved from the source URL. - * - * @param url the source URL - * @return the byte array or null if the retrieving failed or the - * URL was filtered or the resourceSizeByteLimit was violated + * {@inheritDoc} */ + @Override public byte[] getByteArrayByUrl(URL url) throws IOException { try (InputStream stream = getInputStreamByUrl(url)) { if (stream != null) { @@ -165,6 +183,26 @@ public byte[] getByteArrayByUrl(URL url) throws IOException { } } + /** + * {@inheritDoc} + */ + @Override + public InputStream get(URL url, byte[] request, Map headers) throws IOException { + HashMap finalHeaders = new HashMap(); + if (requestHeaders != null) { + finalHeaders.putAll(requestHeaders); + } + if (headers != null) { + finalHeaders.putAll(headers); + } + if (urlFilter(url)) { + return new LimitedInputStream(UrlUtil.get(url, request, finalHeaders, connectTimeout, readTimeout), + resourceSizeByteLimit); + } + LOGGER.warn(MessageFormatUtil.format(IoLogMessageConstant.RESOURCE_WITH_GIVEN_URL_WAS_FILTERED_OUT, url)); + return null; + } + /** * Method for filtering resources by URL. *

diff --git a/io/src/main/java/com/itextpdf/io/resolver/resource/IAdvancedResourceRetriever.java b/io/src/main/java/com/itextpdf/io/resolver/resource/IAdvancedResourceRetriever.java new file mode 100644 index 0000000000..d46466d82a --- /dev/null +++ b/io/src/main/java/com/itextpdf/io/resolver/resource/IAdvancedResourceRetriever.java @@ -0,0 +1,48 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.resolver.resource; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Map; + +/** + * Extended interface for classes that can retrieve data from resources by URL. + * An extra method with http headers and request data is added. + */ +public interface IAdvancedResourceRetriever extends IResourceRetriever { + + /** + * Gets the {@link InputStream} with the data from a provided URL by instantiating an HTTP connection to the URL. + * + * @param url the source URL + * @param request data to send to the URL + * @param headers HTTP headers to set for the outgoing connection + * + * @return the input stream with the retrieved data + * + * @throws IOException if any input/output issue occurs + */ + InputStream get(URL url, byte[] request, Map headers) throws IOException; +} diff --git a/io/src/main/java/com/itextpdf/io/resolver/resource/IResourceRetriever.java b/io/src/main/java/com/itextpdf/io/resolver/resource/IResourceRetriever.java index 8eda6adf41..e86d520ce4 100644 --- a/io/src/main/java/com/itextpdf/io/resolver/resource/IResourceRetriever.java +++ b/io/src/main/java/com/itextpdf/io/resolver/resource/IResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -31,19 +31,23 @@ This file is part of the iText (R) project. */ public interface IResourceRetriever { /** - * Gets the {@link InputStream} that connect with source URL for retrieving data from that connection. + * Gets the {@link InputStream} with the data from a provided URL by instantiating an HTTP connection to the URL. * * @param url the source URL - * @return the input stream or null if the retrieving failed + * + * @return the input stream with the retrieved data + * * @throws IOException if any input/output issue occurs */ InputStream getInputStreamByUrl(URL url) throws IOException; /** - * Gets the byte array that are retrieved from the source URL. + * Gets the byte array with the data from a provided URL by instantiating an HTTP connection to the URL. * * @param url the source URL - * @return the byte array or null if the retrieving failed + * + * @return the byte array with the retrieved data + * * @throws IOException if any input/output issue occurs */ byte[] getByteArrayByUrl(URL url) throws IOException; diff --git a/io/src/main/java/com/itextpdf/io/resolver/resource/LimitedInputStream.java b/io/src/main/java/com/itextpdf/io/resolver/resource/LimitedInputStream.java index 3b828168c5..1e21641e20 100644 --- a/io/src/main/java/com/itextpdf/io/resolver/resource/LimitedInputStream.java +++ b/io/src/main/java/com/itextpdf/io/resolver/resource/LimitedInputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/ASCII85OutputStream.java b/io/src/main/java/com/itextpdf/io/source/ASCII85OutputStream.java new file mode 100644 index 0000000000..1c0f3259ab --- /dev/null +++ b/io/src/main/java/com/itextpdf/io/source/ASCII85OutputStream.java @@ -0,0 +1,163 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Arrays; + +/** + * An output stream that encodes data according to the {@code ASCII85Decode} + * filter from the PDF specification. + */ +public class ASCII85OutputStream extends FilterOutputStream implements IFinishable { + private static final int BASE = 85; + /** + * Offset to the first base-85 output char. + */ + private static final int OFFSET = 33; + /** + * Size of the encoding block. After this amount of bytes data is converted + * and flush to the backing stream. + */ + private static final int INPUT_LENGTH = 4; + /** + * Amount of bytes produced from a block of input bytes. + */ + private static final int OUTPUT_LENGTH = 5; + /** + * Marker written, when all input bytes are zero. Not used for partial + * blocks. + */ + private static final byte ALL_ZEROS_MARKER = (byte) 'z'; + /** + * End Of Data marker. + */ + private static final byte[] EOD = new byte[]{(byte) '~', (byte) '>'}; + + /** + * Encoding block buffer. Reused for encoding output, when flushing. + */ + private final byte[] buffer = new byte[OUTPUT_LENGTH]; + /** + * Bitwise OR of all bytes within the encoding block. Used to quickly + * check, whether the encoding block contains only zeros. + */ + private int inputOr = 0; + /** + * Input bytes cursor within the buffer. + */ + private int inputCursor = 0; + + /** + * Flag for detecting, whether {@link #finish} has been called. + */ + private boolean finished = false; + + /** + * Creates a new {@code ASCIIHexDecode} encoding stream. + * + * @param out the output stream to write encoded data to + */ + public ASCII85OutputStream(OutputStream out) { + super(out); + } + + /** + * {@inheritDoc} + */ + @Override + public void write(int b) throws IOException { + int value = b & 0xFF; + buffer[inputCursor] = (byte) value; + inputOr |= value; + ++inputCursor; + writeBufferIfFull(); + } + + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException { + finish(); + super.close(); + } + + /** + * {@inheritDoc} + */ + @Override + public void finish() throws IOException { + if (finished) { + return; + } + + finished = true; + // Writing the remainder + if (inputCursor > 0) { + if (inputOr == 0) { + // If all zeros, output is just n + 1 exclamation points + Arrays.fill(buffer, 0, inputCursor + 1, (byte) '!'); + } else { + Arrays.fill(buffer, inputCursor, INPUT_LENGTH, (byte) 0); + convertBuffer(); + } + out.write(buffer, 0, inputCursor + 1); + resetBuffer(); + } + out.write(EOD); + flush(); + } + + private void writeBufferIfFull() throws IOException { + if (inputCursor < INPUT_LENGTH) { + return; + } + if (inputOr == 0) { + // Special case, if all zeros + out.write(ALL_ZEROS_MARKER); + } else { + convertBuffer(); + out.write(buffer); + } + resetBuffer(); + } + + private void resetBuffer() { + inputOr = 0; + inputCursor = 0; + } + + private void convertBuffer() { + long num = ((buffer[0] & 0xFFL) << 24) + | ((buffer[1] & 0xFFL) << 16) + | ((buffer[2] & 0xFFL) << 8) + | (buffer[3] & 0xFFL); + for (int i = OUTPUT_LENGTH - 1; i >= 0; --i) { + buffer[i] = (byte) (OFFSET + (num % BASE)); + num /= BASE; + } + } +} diff --git a/io/src/main/java/com/itextpdf/io/source/ASCIIHexOutputStream.java b/io/src/main/java/com/itextpdf/io/source/ASCIIHexOutputStream.java new file mode 100644 index 0000000000..a025f82f9d --- /dev/null +++ b/io/src/main/java/com/itextpdf/io/source/ASCIIHexOutputStream.java @@ -0,0 +1,101 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +/** + * An output stream that encodes data according to the {@code ASCIIHexDecode} + * filter from the PDF specification. + */ +public class ASCIIHexOutputStream extends FilterOutputStream implements IFinishable { + /** + * End Of Data marker. + */ + private static final byte EOD = (byte) '>'; + /** + * Array for mapping nibble values to the corresponding lowercase + * hexadecimal characters. + */ + private static final byte[] CHAR_MAP = { + (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', + (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' + }; + + /** + * Buffer for storing the output hex char pair. + */ + private final byte[] buffer = new byte[2]; + + /** + * Flag for detecting, whether {@link #finish} has been called. + */ + private boolean finished = false; + + /** + * Creates a new {@code ASCIIHexDecode} encoding stream. + * + * @param out the output stream to write encoded data to + */ + public ASCIIHexOutputStream(OutputStream out) { + super(out); + } + + /** + * {@inheritDoc} + */ + @Override + public void write(int b) throws IOException { + int value = (b & 0xFF); + // Writing via a 2-elem buffer, in case `write(byte[])` on the + // underlying stream is more performant + buffer[0] = CHAR_MAP[value >> 4]; + buffer[1] = CHAR_MAP[value & 0x0F]; + out.write(buffer); + } + + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException { + finish(); + super.close(); + } + + /** + * {@inheritDoc} + */ + @Override + public void finish() throws IOException { + if (finished) { + return; + } + + finished = true; + out.write(EOD); + flush(); + } +} diff --git a/io/src/main/java/com/itextpdf/io/source/ArrayRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/ArrayRandomAccessSource.java index e1cce172b9..2f7108d92e 100644 --- a/io/src/main/java/com/itextpdf/io/source/ArrayRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/ArrayRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/ByteArrayOutputStream.java b/io/src/main/java/com/itextpdf/io/source/ByteArrayOutputStream.java index 712ae84a14..ccd94d13e9 100644 --- a/io/src/main/java/com/itextpdf/io/source/ByteArrayOutputStream.java +++ b/io/src/main/java/com/itextpdf/io/source/ByteArrayOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/ByteBuffer.java b/io/src/main/java/com/itextpdf/io/source/ByteBuffer.java index 9c198892c0..e2212e722d 100644 --- a/io/src/main/java/com/itextpdf/io/source/ByteBuffer.java +++ b/io/src/main/java/com/itextpdf/io/source/ByteBuffer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/ByteBufferRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/ByteBufferRandomAccessSource.java index 4da7d93010..bea8cccaf8 100644 --- a/io/src/main/java/com/itextpdf/io/source/ByteBufferRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/ByteBufferRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/ByteUtils.java b/io/src/main/java/com/itextpdf/io/source/ByteUtils.java index a0405302de..b9f05761c4 100644 --- a/io/src/main/java/com/itextpdf/io/source/ByteUtils.java +++ b/io/src/main/java/com/itextpdf/io/source/ByteUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/DeflaterOutputStream.java b/io/src/main/java/com/itextpdf/io/source/DeflaterOutputStream.java index aeb73fcb34..791cbcfac4 100644 --- a/io/src/main/java/com/itextpdf/io/source/DeflaterOutputStream.java +++ b/io/src/main/java/com/itextpdf/io/source/DeflaterOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/FileChannelRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/FileChannelRandomAccessSource.java index 596ac8af8f..9e66b3162a 100644 --- a/io/src/main/java/com/itextpdf/io/source/FileChannelRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/FileChannelRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/GetBufferedRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/GetBufferedRandomAccessSource.java index eed756e71d..3cc89764b1 100644 --- a/io/src/main/java/com/itextpdf/io/source/GetBufferedRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/GetBufferedRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/GroupedRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/GroupedRandomAccessSource.java index 7703ceeb8d..5b450b2be6 100644 --- a/io/src/main/java/com/itextpdf/io/source/GroupedRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/GroupedRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/HighPrecisionOutputStream.java b/io/src/main/java/com/itextpdf/io/source/HighPrecisionOutputStream.java index c3befa96ec..d06caba4cd 100644 --- a/io/src/main/java/com/itextpdf/io/source/HighPrecisionOutputStream.java +++ b/io/src/main/java/com/itextpdf/io/source/HighPrecisionOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/IFinishable.java b/io/src/main/java/com/itextpdf/io/source/IFinishable.java index 7b0ef2c8e8..9d2f4805fa 100644 --- a/io/src/main/java/com/itextpdf/io/source/IFinishable.java +++ b/io/src/main/java/com/itextpdf/io/source/IFinishable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/IRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/IRandomAccessSource.java index d24ec2c0f3..19ad3e225c 100644 --- a/io/src/main/java/com/itextpdf/io/source/IRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/IRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/IndependentRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/IndependentRandomAccessSource.java index cb2f667864..e985190084 100644 --- a/io/src/main/java/com/itextpdf/io/source/IndependentRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/IndependentRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/MappedChannelRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/MappedChannelRandomAccessSource.java index a0f222878a..db06bb572c 100644 --- a/io/src/main/java/com/itextpdf/io/source/MappedChannelRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/MappedChannelRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/PagedChannelRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/PagedChannelRandomAccessSource.java index e4f7ecb4ec..4043d55b43 100644 --- a/io/src/main/java/com/itextpdf/io/source/PagedChannelRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/PagedChannelRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/PdfTokenizer.java b/io/src/main/java/com/itextpdf/io/source/PdfTokenizer.java index 963baf6269..c06d8a5eae 100644 --- a/io/src/main/java/com/itextpdf/io/source/PdfTokenizer.java +++ b/io/src/main/java/com/itextpdf/io/source/PdfTokenizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/RAFRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/RAFRandomAccessSource.java index ae60c29b5a..694a1c9baf 100644 --- a/io/src/main/java/com/itextpdf/io/source/RAFRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/RAFRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/RASInputStream.java b/io/src/main/java/com/itextpdf/io/source/RASInputStream.java index e0b7bb9d81..a729c39c39 100644 --- a/io/src/main/java/com/itextpdf/io/source/RASInputStream.java +++ b/io/src/main/java/com/itextpdf/io/source/RASInputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/RandomAccessFileOrArray.java b/io/src/main/java/com/itextpdf/io/source/RandomAccessFileOrArray.java index a1587848e9..8f9d1ddae5 100644 --- a/io/src/main/java/com/itextpdf/io/source/RandomAccessFileOrArray.java +++ b/io/src/main/java/com/itextpdf/io/source/RandomAccessFileOrArray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/RandomAccessSourceFactory.java b/io/src/main/java/com/itextpdf/io/source/RandomAccessSourceFactory.java index 777a6aecd0..e9aa66a5e1 100644 --- a/io/src/main/java/com/itextpdf/io/source/RandomAccessSourceFactory.java +++ b/io/src/main/java/com/itextpdf/io/source/RandomAccessSourceFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/RunLengthOutputStream.java b/io/src/main/java/com/itextpdf/io/source/RunLengthOutputStream.java new file mode 100644 index 0000000000..88e7e0ad23 --- /dev/null +++ b/io/src/main/java/com/itextpdf/io/source/RunLengthOutputStream.java @@ -0,0 +1,167 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import java.io.FilterOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +/** + * An output stream that encodes data according to the {@code RunLengthDecode} + * filter from the PDF specification. + */ +public class RunLengthOutputStream extends FilterOutputStream implements IFinishable { + /** + * Maximum length of a run. Applies to both "unique" and repeating ones. + */ + private static final int MAX_LENGTH = 128; + /** + * End Of Data marker. + */ + private static final byte EOD = (byte) 128; + + /** + * Buffer for storing the pending run. + */ + private final byte[] buffer = new byte[MAX_LENGTH]; + /** + * Value, that repeats in a repeating run. Set to {@code -1}, when the + * pending run is a "unique" one. + */ + private int repeatValue = -1; + /** + * Current length of the pending run. + */ + private int currentLength = 0; + + /** + * Flag for detecting, whether {@link #finish} has been called. + */ + private boolean finished = false; + + /** + * Creates a new {@code RunLengthDecode} encoding stream. + * + * @param out the output stream to write encoded data to + */ + public RunLengthOutputStream(OutputStream out) { + super(out); + } + + /** + * {@inheritDoc} + */ + @Override + public void write(int b) throws IOException { + int value = b & 0xFF; + // Case for continuing a repeating run + if (value == repeatValue) { + ++currentLength; + if (currentLength == MAX_LENGTH) { + writePending(); + } + return; + } + /* + * If there was a repeating run, but we got a different value, then we + * need to write the current repeating run we had and start a new + * "unique" run. + */ + if (repeatValue != -1) { + writePending(); + buffer[currentLength] = (byte) value; + ++currentLength; + return; + } + /* + * As soon as we detect a sequence of 3 or more bytes, which are the + * same, we need to switch to a repeating run. For this we will write + * the values before the repeated one as a "unique" run and start a + * new repeating run at length 3. + * + * Technically speaking we can switch to a repeating run at 2 bytes, + * but in the vast majority of cases this will make the compression + * ratio worse. + */ + if (currentLength >= 2 + && buffer[currentLength - 1] == (byte) value + && buffer[currentLength - 2] == (byte) value) { + currentLength -= 2; + writePending(); + repeatValue = value; + currentLength = 3; + return; + } + // Just continuing (or starting) a "unique" run + buffer[currentLength] = (byte) value; + ++currentLength; + if (currentLength == MAX_LENGTH) { + writePending(); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException { + finish(); + super.close(); + } + + /** + * {@inheritDoc} + */ + @Override + public void finish() throws IOException { + if (finished) { + return; + } + + finished = true; + writePending(); + out.write(EOD); + flush(); + } + + private void writePending() throws IOException { + if (currentLength <= 0) { + return; + } + if (repeatValue < 0) { + // Writing "unique" run + out.write(currentLength - 1); + out.write(buffer, 0, currentLength); + } else { + // Writing repeating run + out.write(257 - currentLength); + out.write(repeatValue); + } + resetPending(); + } + + private void resetPending() { + repeatValue = -1; + currentLength = 0; + } +} diff --git a/io/src/main/java/com/itextpdf/io/source/ThreadSafeRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/ThreadSafeRandomAccessSource.java index d1f817d95d..bde63e9708 100644 --- a/io/src/main/java/com/itextpdf/io/source/ThreadSafeRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/ThreadSafeRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/source/WindowRandomAccessSource.java b/io/src/main/java/com/itextpdf/io/source/WindowRandomAccessSource.java index 36ef471ffe..e6465a2303 100644 --- a/io/src/main/java/com/itextpdf/io/source/WindowRandomAccessSource.java +++ b/io/src/main/java/com/itextpdf/io/source/WindowRandomAccessSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/ArrayUtil.java b/io/src/main/java/com/itextpdf/io/util/ArrayUtil.java index 30e1dc867c..63e13185d7 100644 --- a/io/src/main/java/com/itextpdf/io/util/ArrayUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/ArrayUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/CliCommandUtil.java b/io/src/main/java/com/itextpdf/io/util/CliCommandUtil.java index 48f404d404..e5a5e2d571 100644 --- a/io/src/main/java/com/itextpdf/io/util/CliCommandUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/CliCommandUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/DecimalFormatUtil.java b/io/src/main/java/com/itextpdf/io/util/DecimalFormatUtil.java index caa411cc5c..e9c06c3fb5 100644 --- a/io/src/main/java/com/itextpdf/io/util/DecimalFormatUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/DecimalFormatUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/EnumUtil.java b/io/src/main/java/com/itextpdf/io/util/EnumUtil.java index 0313cbc87e..92b63268a6 100644 --- a/io/src/main/java/com/itextpdf/io/util/EnumUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/EnumUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/FilterUtil.java b/io/src/main/java/com/itextpdf/io/util/FilterUtil.java index 350643f322..5fb25a1388 100644 --- a/io/src/main/java/com/itextpdf/io/util/FilterUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/FilterUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/GenericArray.java b/io/src/main/java/com/itextpdf/io/util/GenericArray.java index 459b2e3504..2ed7f85e1b 100644 --- a/io/src/main/java/com/itextpdf/io/util/GenericArray.java +++ b/io/src/main/java/com/itextpdf/io/util/GenericArray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/GhostscriptHelper.java b/io/src/main/java/com/itextpdf/io/util/GhostscriptHelper.java index ca20b4703a..3a079259f0 100644 --- a/io/src/main/java/com/itextpdf/io/util/GhostscriptHelper.java +++ b/io/src/main/java/com/itextpdf/io/util/GhostscriptHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/HashCode.java b/io/src/main/java/com/itextpdf/io/util/HashCode.java index 2c12d5346f..8e4a426df6 100644 --- a/io/src/main/java/com/itextpdf/io/util/HashCode.java +++ b/io/src/main/java/com/itextpdf/io/util/HashCode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/ImageMagickCompareResult.java b/io/src/main/java/com/itextpdf/io/util/ImageMagickCompareResult.java index 814111e237..286209581f 100644 --- a/io/src/main/java/com/itextpdf/io/util/ImageMagickCompareResult.java +++ b/io/src/main/java/com/itextpdf/io/util/ImageMagickCompareResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/ImageMagickHelper.java b/io/src/main/java/com/itextpdf/io/util/ImageMagickHelper.java index 2615926db7..7572fed449 100644 --- a/io/src/main/java/com/itextpdf/io/util/ImageMagickHelper.java +++ b/io/src/main/java/com/itextpdf/io/util/ImageMagickHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/NumberUtil.java b/io/src/main/java/com/itextpdf/io/util/NumberUtil.java index 3e22e99ecf..7a1d316a2b 100644 --- a/io/src/main/java/com/itextpdf/io/util/NumberUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/NumberUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/PdfNameUtil.java b/io/src/main/java/com/itextpdf/io/util/PdfNameUtil.java index 73177358cc..4bb4408a12 100644 --- a/io/src/main/java/com/itextpdf/io/util/PdfNameUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/PdfNameUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/ResourceUtil.java b/io/src/main/java/com/itextpdf/io/util/ResourceUtil.java index 7bde3a0dca..c1df48edec 100644 --- a/io/src/main/java/com/itextpdf/io/util/ResourceUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/ResourceUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/StreamUtil.java b/io/src/main/java/com/itextpdf/io/util/StreamUtil.java index 0664220664..e0695d7ba0 100644 --- a/io/src/main/java/com/itextpdf/io/util/StreamUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/StreamUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/TextUtil.java b/io/src/main/java/com/itextpdf/io/util/TextUtil.java index 27328998ab..8bf6ad9461 100644 --- a/io/src/main/java/com/itextpdf/io/util/TextUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/TextUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/main/java/com/itextpdf/io/util/UrlUtil.java b/io/src/main/java/com/itextpdf/io/util/UrlUtil.java index c154c9d233..70554f07c7 100644 --- a/io/src/main/java/com/itextpdf/io/util/UrlUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/UrlUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,13 +22,21 @@ This file is part of the iText (R) project. */ package com.itextpdf.io.util; +import com.itextpdf.io.exceptions.IoExceptionMessageConstant; + +import java.io.BufferedOutputStream; +import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; import java.net.URLConnection; +import java.util.Map; +import java.util.Map.Entry; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; @@ -48,8 +56,11 @@ private UrlUtil() { *

* This method makes the conversion of this library from the JAVA 2 platform * to a JDK1.1.x-version easier. + * * @param filename a given filename + * * @return a valid URL + * * @throws java.net.MalformedURLException If a protocol handler for the URL could not be found, * or if some other error occurred while constructing the URL */ @@ -65,7 +76,9 @@ public static URL toURL(String filename) throws MalformedURLException { /** * This method makes a normalized URI from a given filename. + * * @param filename a given filename + * * @return a valid URI */ public static URI toNormalizedURI(String filename) { @@ -74,7 +87,9 @@ public static URI toNormalizedURI(String filename) { /** * This method makes a normalized URI from a given file. + * * @param file a given filename + * * @return a valid URI */ public static URI toNormalizedURI(File file) { @@ -85,6 +100,7 @@ public static URI toNormalizedURI(File file) { * Get the entire URI string which is properly encoded. * * @param uri URI which convert to string + * * @return URI string representation */ public static String toAbsoluteURI(URI uri) { @@ -97,8 +113,11 @@ public static InputStream openStream(URL url) throws IOException { /** * This method gets uri string from a file. + * * @param filename a given filename + * * @return a uri string + * * @throws MalformedURLException If a protocol handler for the URL could not be found, * or if some other error occurred while constructing the URL */ @@ -108,7 +127,9 @@ public static String getFileUriString(String filename) throws MalformedURLExcept /** * This method gets normalized uri string from a file. + * * @param filename a given filename + * * @return a normalized uri string */ public static String getNormalizedFileUriString(String filename) { @@ -119,11 +140,11 @@ public static String getNormalizedFileUriString(String filename) { * Gets the input stream of connection related to last redirected url. You should manually close input stream after * calling this method to not hold any open resources. * - * @param initialUrl an initial URL. + * @param initialUrl an initial URL * - * @return an input stream of connection related to the last redirected url. + * @return an input stream of connection related to the last redirected url * - * @throws IOException signals that an I/O exception has occurred. + * @throws IOException signals that an I/O exception has occurred */ public static InputStream getInputStreamOfFinalConnection(URL initialUrl) throws IOException { return getInputStreamOfFinalConnection(initialUrl, DEFAULT_CONNECT_TIMEOUT, @@ -134,56 +155,137 @@ public static InputStream getInputStreamOfFinalConnection(URL initialUrl) throws * Gets the input stream of connection related to last redirected url. You should manually close input stream after * calling this method to not hold any open resources. * - * @param initialUrl an initial URL. - * @param connectTimeout a connect timeout in milliseconds. - * @param readTimeout a read timeout in milliseconds. + * @param initialUrl an initial URL + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds * - * @return an input stream of connection related to the last redirected url. + * @return an input stream of connection related to the last redirected url * - * @throws IOException signals that an I/O exception has occurred. + * @throws IOException signals that an I/O exception has occurred */ public static InputStream getInputStreamOfFinalConnection(URL initialUrl, int connectTimeout, int readTimeout) throws IOException { - return getInputStreamOfFinalConnection(initialUrl, connectTimeout, readTimeout, null); + return getInputStreamOfFinalConnection(initialUrl, connectTimeout, readTimeout, null, null); } /** * Gets the input stream of connection related to last redirected url. You should manually close input stream after * calling this method to not hold any open resources. * - * @param initialUrl an initial URL. - * @param connectTimeout a connect timeout in milliseconds. - * @param readTimeout a read timeout in milliseconds. - * @param sslContext {@link SSLContext} to configure ssl connection. + * @param initialUrl an initial URL + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds + * @param requestHeaders a set of custom request headers to set * - * @return an input stream of connection related to the last redirected url. + * @return an input stream of connection related to the last redirected url * - * @throws IOException signals that an I/O exception has occurred. + * @throws IOException signals that an I/O exception has occurred + */ + public static InputStream getInputStreamOfFinalConnection(URL initialUrl, int connectTimeout, int readTimeout, + Map requestHeaders) + throws IOException { + return getInputStreamOfFinalConnection(initialUrl, connectTimeout, readTimeout, null, requestHeaders); + } + + + /** + * Gets the input stream of connection related to last redirected url. You should manually close input stream after + * calling this method to not hold any open resources. + * + * @param initialUrl an initial URL + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds + * @param sslContext {@link SSLContext} to configure ssl connection + * + * @return an input stream of connection related to the last redirected url + * + * @throws IOException signals that an I/O exception has occurred */ public static InputStream getInputStreamOfFinalConnection(URL initialUrl, int connectTimeout, int readTimeout, SSLContext sslContext) throws IOException { - final URLConnection finalConnection = getFinalConnection(initialUrl, connectTimeout, readTimeout, sslContext); + return getInputStreamOfFinalConnection(initialUrl, connectTimeout, readTimeout, sslContext, null); + } + + /** + * Gets the input stream of connection related to last redirected url. You should manually close input stream after + * calling this method to not hold any open resources. + * + * @param initialUrl an initial URL + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds + * @param sslContext {@link SSLContext} to configure ssl connection + * @param requestHeaders a set of custom request headers to set + * + * @return an input stream of connection related to the last redirected url + * + * @throws IOException signals that an I/O exception has occurred + */ + public static InputStream getInputStreamOfFinalConnection(URL initialUrl, int connectTimeout, int readTimeout, + SSLContext sslContext, Map requestHeaders) throws IOException { + final URLConnection finalConnection = + getFinalConnection(initialUrl, connectTimeout, readTimeout, sslContext, requestHeaders); return finalConnection.getInputStream(); } /** - * Gets the connection related to the last redirected url. You should close connection manually after calling - * this method, to not hold any open resources. + * Gets the {@link InputStream} with the data from a provided URL by instantiating an HTTP connection to the URL. * - * @param initialUrl an initial URL. - * @param connectTimeout a connect timeout in milliseconds. - * @param readTimeout a read timeout in milliseconds. + * @param url a URL to connect to + * @param request data to send to the URL + * @param headers HTTP headers to set for the outgoing connection + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds * - * @return connection related to the last redirected url. + * @return the input stream with the retrieved data * - * @throws IOException signals that an I/O exception has occurred. + * @throws IOException signals that an I/O exception has occurred */ + public static InputStream get(URL url, byte[] request, Map headers, + int connectTimeout, int readTimeout) throws IOException { + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + for (Map.Entry header : headers.entrySet()) { + connection.setRequestProperty(header.getKey(), header.getValue()); + } + connection.setDoOutput(true); + connection.setConnectTimeout(connectTimeout); + connection.setReadTimeout(readTimeout); + OutputStream out = connection.getOutputStream(); + DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(out)); + dataOut.write(request); + dataOut.flush(); + dataOut.close(); + if (connection.getResponseCode() / 100 != 2) { + throw new com.itextpdf.io.exceptions.IOException(IoExceptionMessageConstant.INVALID_HTTP_RESPONSE) + .setMessageParams(connection.getResponseCode()); + } + return connection.getInputStream(); + } + + /** + * Gets the connection related to the last redirected url. You should close connection manually after calling + * this method, to not hold any open resources. + * + * @param initialUrl an initial URL + * @param connectTimeout a connect timeout in milliseconds + * @param readTimeout a read timeout in milliseconds + * @param requestHeaders a set of custom request headers to set + * + * @return connection related to the last redirected url + * + * @throws IOException signals that an I/O exception has occurred + */ static URLConnection getFinalConnection(URL initialUrl, int connectTimeout, int readTimeout, - SSLContext sslContext) throws IOException { + SSLContext sslContext, + Map requestHeaders) throws IOException { URL nextUrl = initialUrl; URLConnection connection = null; while (nextUrl != null) { connection = nextUrl.openConnection(); + if (requestHeaders != null) { + for(Entry header : requestHeaders.entrySet()) { + connection.setRequestProperty(header.getKey(), header.getValue()); + } + } if (sslContext != null && connection instanceof HttpsURLConnection) { ((HttpsURLConnection) connection).setSSLSocketFactory(sslContext.getSocketFactory()); } diff --git a/io/src/main/java/com/itextpdf/io/util/XmlUtil.java b/io/src/main/java/com/itextpdf/io/util/XmlUtil.java index 454a46b072..930c78923b 100644 --- a/io/src/main/java/com/itextpdf/io/util/XmlUtil.java +++ b/io/src/main/java/com/itextpdf/io/util/XmlUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/sharpenconfig/java/com/itextpdf/io/SharpenConfigMapping.java b/io/src/sharpenconfig/java/com/itextpdf/io/SharpenConfigMapping.java index 6a5c54b11e..8f6405148f 100644 --- a/io/src/sharpenconfig/java/com/itextpdf/io/SharpenConfigMapping.java +++ b/io/src/sharpenconfig/java/com/itextpdf/io/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -81,6 +81,7 @@ public void applyMappingConfiguration(MappingConfigurator configurator) { configurator.mapMethod("java.io.DataInputStreamReadFully", "iText.IO.Util.StreamUtil.ReadFully", false); configurator.mapMethod("java.net.URL.openStream", "iText.IO.Util.UrlUtil.OpenStream", false); configurator.mapMethod("java.lang.Character.isWhitespace", "iText.IO.Util.TextUtil.IsWhiteSpace", false); + configurator.mapType("java.io.FilterOutputStream", "iText.Commons.Utils.FilterOutputStream"); configurator.addIfPreprocessorDirectiveCondition("com.itextpdf.io.image.ImageDataFactory.create(java.awt.Image,java.awt.Color)", "!NETSTANDARD2_0"); configurator.addIfPreprocessorDirectiveCondition("com.itextpdf.io.image.ImageDataFactory.create(java.awt.Image,java.awt.Color,boolean)", "!NETSTANDARD2_0"); diff --git a/io/src/test/java/com/itextpdf/io/AdobeGlyphListTest.java b/io/src/test/java/com/itextpdf/io/AdobeGlyphListTest.java index c1058a49e5..7ca2b293a9 100644 --- a/io/src/test/java/com/itextpdf/io/AdobeGlyphListTest.java +++ b/io/src/test/java/com/itextpdf/io/AdobeGlyphListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/UtilitiesTest.java b/io/src/test/java/com/itextpdf/io/UtilitiesTest.java index a251157e7e..b95ffbaca6 100644 --- a/io/src/test/java/com/itextpdf/io/UtilitiesTest.java +++ b/io/src/test/java/com/itextpdf/io/UtilitiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/CFFFontSubsetIntegrationTest.java b/io/src/test/java/com/itextpdf/io/font/CFFFontSubsetIntegrationTest.java index 7af3cea484..4fee05cb1b 100644 --- a/io/src/test/java/com/itextpdf/io/font/CFFFontSubsetIntegrationTest.java +++ b/io/src/test/java/com/itextpdf/io/font/CFFFontSubsetIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -26,24 +26,21 @@ This file is part of the iText (R) project. import com.itextpdf.io.source.RandomAccessSourceFactory; import com.itextpdf.test.ExtendedITextTest; -import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("IntegrationTest") public class CFFFontSubsetIntegrationTest extends ExtendedITextTest { - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/"; - private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; private static final String CJK_JP_BOLD_PATH = FONTS_FOLDER + "NotoSansCJKjp-Bold.otf"; private static final int CJK_JP_BOLD_CFF_OFFSET = 259880; @@ -53,11 +50,11 @@ public class CFFFontSubsetIntegrationTest extends ExtendedITextTest { private static final int JP_REGULAR_CFF_OFFSET = 337316; private static final int JP_REGULAR_CFF_LENGTH = 4210891; - private static final String PURITAN_PATH = FONTS_FOLDER + "Puritan2.otf"; + private static final String PURITAN_PATH = FONTS_FOLDER + "Puritan-Regular.otf"; @Test public void subsetNotoSansCjkJpBoldNoUsedGlyphsTest() throws IOException { - String cmpCff = SOURCE_FOLDER + "subsetNotoSansCJKjpBoldNoUsedGlyphs.cff"; + String cmpCff = FONTS_FOLDER + "subsetNotoSansCJKjpBoldNoUsedGlyphs.cff"; Set glyphsUsed = Collections.emptySet(); @@ -73,7 +70,7 @@ public void subsetNotoSansCjkJpBoldNoUsedGlyphsTest() throws IOException { @Test public void subsetNotoSansCjkJpBoldTwoUsedGlyphsTest() throws IOException { - String cmpCff = SOURCE_FOLDER + "subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff"; + String cmpCff = FONTS_FOLDER + "subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff"; // In this case cid == gid for given characters. // \u20eab "𠺫" @@ -105,7 +102,7 @@ public void subsetNotoSansJpRegularOneUsedGlyphTest() throws IOException { int expectedSubsetLength = 121796; Assertions.assertEquals(expectedSubsetLength, cffSubsetBytes.length); - byte[] cmpBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subsetNotoSansJPRegularOneUsedGlyph.cff")); + byte[] cmpBytes = Files.readAllBytes(Paths.get(FONTS_FOLDER + "subsetNotoSansJPRegularOneUsedGlyph.cff")); Assertions.assertArrayEquals(cmpBytes, cffSubsetBytes); } @@ -117,7 +114,7 @@ public void subsetNonCidCFFFontRangeCheck() throws IOException { byte[] cffData = new TrueTypeFont(PURITAN_PATH).getFontStreamBytes(); byte[] cffSubsetBytes = new CFFFontSubset(cffData, glyphsUsed).Process(); CFFFont result = new CFFFont(cffSubsetBytes); - int expectedCharsetLength = 255; + int expectedCharsetLength = 237; // skip over the format ID (1 byte) and the first SID (2 bytes) result.seek(result.fonts[0].getCharsetOffset() + 3); Assertions.assertEquals(expectedCharsetLength - 2, result.getCard16()); diff --git a/io/src/test/java/com/itextpdf/io/font/CFFFontTest.java b/io/src/test/java/com/itextpdf/io/font/CFFFontTest.java index 8eb3f67e89..5d0e1f08b6 100644 --- a/io/src/test/java/com/itextpdf/io/font/CFFFontTest.java +++ b/io/src/test/java/com/itextpdf/io/font/CFFFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,13 +33,12 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class CFFFontTest extends ExtendedITextTest { - - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void seekTest() throws IOException { RandomAccessFileOrArray raf = new RandomAccessFileOrArray(new RandomAccessSourceFactory() - .createBestSource(SOURCE_FOLDER + "NotoSansCJKjp-Bold.otf")); + .createBestSource(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf")); int offsetToCff = 259880; int cffLength = 16023217; @@ -66,7 +65,7 @@ public void seekTest() throws IOException { @Test public void getPositionTest() throws IOException { RandomAccessFileOrArray raf = new RandomAccessFileOrArray(new RandomAccessSourceFactory() - .createBestSource(SOURCE_FOLDER + "NotoSansCJKjp-Bold.otf")); + .createBestSource(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf")); int offsetToCff = 259880; int cffLength = 16023217; diff --git a/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderNoFontAsianTest.java b/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderNoFontAsianTest.java index 65e7e6d67a..46afbae07c 100644 --- a/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderNoFontAsianTest.java +++ b/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderNoFontAsianTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderTest.java b/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderTest.java index c873185846..dc0229f78d 100644 --- a/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderTest.java +++ b/io/src/test/java/com/itextpdf/io/font/CjkResourceLoaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/FontCacheTest.java b/io/src/test/java/com/itextpdf/io/font/FontCacheTest.java index eda7596297..9c6474ee1a 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontCacheTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontCacheTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,7 +41,7 @@ public void before() { @Test public void clearFontCacheTest() { - String fontName = "FreeSans.ttf"; + String fontName = "NotoSans-Regular.ttf"; Assertions.assertNull(FontCache.getFont(fontName)); FontProgram fontProgram = new FontProgramMock(); diff --git a/io/src/test/java/com/itextpdf/io/font/FontEncodingTest.java b/io/src/test/java/com/itextpdf/io/font/FontEncodingTest.java index 4bd9424ff5..0bde08516e 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontEncodingTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontEncodingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/FontProgramDescriptorFactoryTest.java b/io/src/test/java/com/itextpdf/io/font/FontProgramDescriptorFactoryTest.java index 4948d94104..a6a5828a9d 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontProgramDescriptorFactoryTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontProgramDescriptorFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/FontProgramFactoryTest.java b/io/src/test/java/com/itextpdf/io/font/FontProgramFactoryTest.java index 9fe41cb855..4198a1c17c 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontProgramFactoryTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontProgramFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -34,7 +34,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class FontProgramFactoryTest extends ExtendedITextTest { - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void createRegisteredFontTest() throws IOException { @@ -56,7 +56,7 @@ public void registerFontFamilyTest() throws IOException { @Test public void createTrueTypeWoffFontTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "SourceSerif4-Black.woff")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "SourceSerif4-Black.woff")); TrueTypeFont woffFont = FontProgramFactory.createTrueTypeFont(fontBytes, false); Assertions.assertNotNull(woffFont); Assertions.assertEquals(1463, woffFont.bBoxes.length); @@ -64,10 +64,10 @@ public void createTrueTypeWoffFontTest() throws IOException { @Test public void tryToCreateTrueTypeWoff2FontTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "valid.woff2")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "BellefairRegularLatin.woff2")); TrueTypeFont woff2Font = FontProgramFactory.createTrueTypeFont(fontBytes, false); Assertions.assertNotNull(woff2Font); - Assertions.assertEquals(4, woff2Font.countOfGlyphs()); + Assertions.assertEquals(209, woff2Font.countOfGlyphs()); } } diff --git a/io/src/test/java/com/itextpdf/io/font/FontProgramMultiThreadedTest.java b/io/src/test/java/com/itextpdf/io/font/FontProgramMultiThreadedTest.java index 53a5cc1f38..fa6febde4c 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontProgramMultiThreadedTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontProgramMultiThreadedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,8 +32,8 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class FontProgramMultiThreadedTest extends ExtendedITextTest { - - private static final String FONT = "./src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String FONT = FONTS_FOLDER + "NotoSans-Regular.ttf"; @Test public void fontSubsetTest() throws InterruptedException, IOException { @@ -49,7 +49,7 @@ public void fontSubsetTest() throws InterruptedException, IOException { } for (TestThread thread : threads) { Assertions.assertFalse(thread.exceptionCaught, "Exception during font subsetting"); - Assertions.assertEquals(2956, thread.subsetSize); + Assertions.assertEquals(3680, thread.subsetSize); } } diff --git a/io/src/test/java/com/itextpdf/io/font/FontProgramTest.java b/io/src/test/java/com/itextpdf/io/font/FontProgramTest.java index 2c009d55f6..2be3cbf52f 100644 --- a/io/src/test/java/com/itextpdf/io/font/FontProgramTest.java +++ b/io/src/test/java/com/itextpdf/io/font/FontProgramTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -37,6 +37,7 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class FontProgramTest extends ExtendedITextTest { + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; private static final String notExistingFont = "some-font.ttf"; @BeforeEach @@ -68,16 +69,16 @@ public void registerDirectoryOpenTypeTest() { FontProgramFactory.clearRegisteredFonts(); FontProgramFactory.clearRegisteredFontFamilies(); FontCache.clearSavedFonts(); - FontProgramFactory.registerFontDirectory("./src/test/resources/com/itextpdf/io/font/otf/"); + FontProgramFactory.registerFontDirectory(FONT_FOLDER); - Assertions.assertEquals(43, FontProgramFactory.getRegisteredFonts().size()); - Assertions.assertNull(FontCache.getFont("./src/test/resources/com/itextpdf/io/font/otf/FreeSansBold.ttf")); - Assertions.assertTrue(FontProgramFactory.getRegisteredFonts().contains("free sans lihavoitu")); + Assertions.assertEquals(52, FontProgramFactory.getRegisteredFonts().size()); + Assertions.assertNull(FontCache.getFont("./src/test/resources/com/itextpdf/io/font/FreeSansBold.ttf")); + Assertions.assertTrue(FontProgramFactory.getRegisteredFonts().contains("free sans bold")); } @Test public void registerDirectoryType1Test() throws IOException { - FontProgramFactory.registerFontDirectory("./src/test/resources/com/itextpdf/io/font/type1/"); + FontProgramFactory.registerFontDirectory("./src/test/resources/com/itextpdf/io/"); FontProgram computerModern = FontProgramFactory.createRegisteredFont("computer modern"); FontProgram cmr10 = FontProgramFactory.createRegisteredFont("cmr10"); Assertions.assertNull(computerModern); @@ -86,7 +87,7 @@ public void registerDirectoryType1Test() throws IOException { @Test public void registerDirectoryType1RecursivelyTest() throws IOException { - FontProgramFactory.registerFontDirectoryRecursively("./src/test/resources/com/itextpdf/io/font/type1/"); + FontProgramFactory.registerFontDirectoryRecursively("./src/test/resources/com/itextpdf/io/"); FontProgram computerModern = FontProgramFactory.createRegisteredFont("computer modern"); FontProgram cmr10 = FontProgramFactory.createRegisteredFont("cmr10"); Assertions.assertNotNull(computerModern); diff --git a/io/src/test/java/com/itextpdf/io/font/LoadAllAsianFontsTest.java b/io/src/test/java/com/itextpdf/io/font/LoadAllAsianFontsTest.java index 84c6bc9fe1..95f53c6ccc 100644 --- a/io/src/test/java/com/itextpdf/io/font/LoadAllAsianFontsTest.java +++ b/io/src/test/java/com/itextpdf/io/font/LoadAllAsianFontsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/MonospaceFontTest.java b/io/src/test/java/com/itextpdf/io/font/MonospaceFontTest.java index 89cd5b2d90..86cea40673 100644 --- a/io/src/test/java/com/itextpdf/io/font/MonospaceFontTest.java +++ b/io/src/test/java/com/itextpdf/io/font/MonospaceFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -29,23 +29,23 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class MonospaceFontTest extends ExtendedITextTest { - private static final String sourceFolder = "./src/test/resources/com/itextpdf/io/font/MonospaceFontTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void openMono() throws java.io.IOException { - TrueTypeFont font = new TrueTypeFont(sourceFolder + "DejaVuSansMono.ttf"); + TrueTypeFont font = new TrueTypeFont(FONT_FOLDER + "DejaVuSansMono.ttf"); Assertions.assertNotNull(font.getGlyph('A')); } @Test public void openSans() throws java.io.IOException { - TrueTypeFont font = new TrueTypeFont(sourceFolder + "DejaVuSans.ttf"); + TrueTypeFont font = new TrueTypeFont(FONT_FOLDER + "DejaVuSans.ttf"); Assertions.assertNotNull(font.getGlyph('A')); } @Test public void openSerif() throws java.io.IOException { - TrueTypeFont font = new TrueTypeFont(sourceFolder + "DejaVuSerif.ttf"); + TrueTypeFont font = new TrueTypeFont(FONT_FOLDER + "DejaVuSerif.ttf"); Assertions.assertNotNull(font.getGlyph('A')); } diff --git a/io/src/test/java/com/itextpdf/io/font/OpenTypeParserTest.java b/io/src/test/java/com/itextpdf/io/font/OpenTypeParserTest.java index 96401de908..c06c620270 100644 --- a/io/src/test/java/com/itextpdf/io/font/OpenTypeParserTest.java +++ b/io/src/test/java/com/itextpdf/io/font/OpenTypeParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -39,12 +39,12 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class OpenTypeParserTest extends ExtendedITextTest { - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/"; - private static final String FREESANS_FONT_PATH = "./src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String NOTO_SANS_FONT_PATH = FONTS_FOLDER + "NotoSans-Regular.ttf"; @Test public void tryToReadFontSubsetWithoutGlyfTableTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subsetWithoutGlyfTable.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONTS_FOLDER + "subsetWithoutGlyfTable.ttf")); OpenTypeParser parser = new OpenTypeParser(fontBytes); parser.loadTables(true); Set usedGlyphs = new HashSet(); @@ -61,7 +61,7 @@ public void tryToReadFontSubsetWithoutGlyfTableTest() throws IOException { @Test public void getFlatGlyphsCompositeTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(FREESANS_FONT_PATH)); + byte[] fontBytes = Files.readAllBytes(Paths.get(NOTO_SANS_FONT_PATH)); OpenTypeParser parser = new OpenTypeParser(fontBytes); parser.loadTables(true); Set usedGlyphs = new HashSet(); @@ -72,13 +72,13 @@ public void getFlatGlyphsCompositeTest() throws IOException { Assertions.assertEquals(4, glyphs.size()); Assertions.assertEquals(137, glyphs.get(0)); Assertions.assertEquals(0, glyphs.get(1)); - Assertions.assertEquals(586, glyphs.get(2)); - Assertions.assertEquals(38, glyphs.get(3)); + Assertions.assertEquals(38, glyphs.get(2)); + Assertions.assertEquals(122, glyphs.get(3)); } @Test public void smallNumberOfMetricsTest() throws IOException { - OpenTypeParser parser = new OpenTypeParser(SOURCE_FOLDER + "NotoSansAndSpaceMono.ttc", 1); + OpenTypeParser parser = new OpenTypeParser(FONTS_FOLDER + "NotoSansAndSpaceMono.ttc", 1); parser.loadTables(true); Set usedGlyphs = new HashSet(); usedGlyphs.add(36); diff --git a/io/src/test/java/com/itextpdf/io/font/PdfEncodingsTest.java b/io/src/test/java/com/itextpdf/io/font/PdfEncodingsTest.java index daf347f1e3..6c479a051e 100644 --- a/io/src/test/java/com/itextpdf/io/font/PdfEncodingsTest.java +++ b/io/src/test/java/com/itextpdf/io/font/PdfEncodingsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/ResourceTestUtil.java b/io/src/test/java/com/itextpdf/io/font/ResourceTestUtil.java index 5acbf8537d..1fdf9527fe 100644 --- a/io/src/test/java/com/itextpdf/io/font/ResourceTestUtil.java +++ b/io/src/test/java/com/itextpdf/io/font/ResourceTestUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/TrueTypeFontIntegrationTest.java b/io/src/test/java/com/itextpdf/io/font/TrueTypeFontIntegrationTest.java index d46a7ae180..82dd375f2b 100644 --- a/io/src/test/java/com/itextpdf/io/font/TrueTypeFontIntegrationTest.java +++ b/io/src/test/java/com/itextpdf/io/font/TrueTypeFontIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -40,12 +40,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class TrueTypeFontIntegrationTest extends ExtendedITextTest { - private static final String SHARED_FOLDER = "./src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/"; - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void simpleSubsetTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SHARED_FOLDER + "NotoSans-Regular.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "NotoSans-Regular.ttf")); TrueTypeFont font = FontProgramFactory.createTrueTypeFont(fontBytes, false); Set usedGlyphs = new HashSet(); @@ -56,7 +55,7 @@ public void simpleSubsetTest() throws IOException { byte[] subsetFontBytes = font.getSubset(usedGlyphs, true); TrueTypeFont subsetFont = FontProgramFactory.createTrueTypeFont(subsetFontBytes, true); - Assertions.assertEquals(3271, font.bBoxes.length); + Assertions.assertEquals(4702, font.bBoxes.length); Assertions.assertEquals(39, subsetFont.bBoxes.length); Assertions.assertNotNull(subsetFont.bBoxes[36]); Assertions.assertNull(subsetFont.bBoxes[35]); @@ -64,7 +63,7 @@ public void simpleSubsetTest() throws IOException { @Test public void simpleSubsetWithoutTableSubsetTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SHARED_FOLDER + "NotoSans-Regular.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "NotoSans-Regular.ttf")); TrueTypeFont font = FontProgramFactory.createTrueTypeFont(fontBytes, false); Set usedGlyphs = new HashSet(); @@ -75,7 +74,7 @@ public void simpleSubsetWithoutTableSubsetTest() throws IOException { byte[] subsetFontBytes = font.getSubset(usedGlyphs, false); TrueTypeFont subsetFont = FontProgramFactory.createTrueTypeFont(subsetFontBytes, false); - Assertions.assertEquals(3271, font.bBoxes.length); + Assertions.assertEquals(4702, font.bBoxes.length); Assertions.assertEquals(39, subsetFont.bBoxes.length); Assertions.assertNotNull(subsetFont.bBoxes[36]); Assertions.assertNull(subsetFont.bBoxes[35]); @@ -83,11 +82,11 @@ public void simpleSubsetWithoutTableSubsetTest() throws IOException { @Test public void simpleSubsetMergeTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset1.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset1.ttf")); // Subset for XBC TrueTypeFont subset1 = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset2.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset2.ttf")); // Subset for ABC TrueTypeFont subset2 = FontProgramFactory.createTrueTypeFont(fontBytes, true); @@ -114,13 +113,13 @@ public void simpleSubsetMergeTest() throws IOException { public void noCommonCmapPdfTrueTypeMergeTest() throws IOException { // subsets are created using fonttools Python lib with the following command // fonttools subset ./NotoSans-Regular.ttf --text="ABC" --retain-gids --layout-features='*' --notdef-glyph --output-file=subset_abc.ttf - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_abc.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_abc.ttf")); TrueTypeFont subsetAbc = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_def.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_def.ttf")); TrueTypeFont subsetDef = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_xyz.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_xyz.ttf")); TrueTypeFont subsetXyz = FontProgramFactory.createTrueTypeFont(fontBytes, true); Map> toMerge = new HashMap>(); @@ -153,16 +152,16 @@ public void noCommonCmapPdfTrueTypeMergeTest() throws IOException { public void commonCmapPdfTrueTypeMergeTest() throws IOException { // subsets are created using fonttools Python lib with the following command // fonttools subset ./NotoSans-Regular.ttf --text="ABC" --retain-gids --layout-features='*' --notdef-glyph --output-file=subset_abc.ttf - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_abc.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_abc.ttf")); TrueTypeFont subsetAbc = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_abc_def_xyz.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_abc_def_xyz.ttf")); TrueTypeFont subsetAbcDefXyz = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_def.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_def.ttf")); TrueTypeFont subsetDef = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_xyz.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_xyz.ttf")); TrueTypeFont subsetXyz = FontProgramFactory.createTrueTypeFont(fontBytes, true); Map> toMerge = new HashMap>(); @@ -207,13 +206,13 @@ public void commonCmapPdfTrueTypeMergeTest() throws IOException { public void noCommonCmapPdfType0MergeTest() throws IOException { // subsets are created using fonttools Python lib with the following command // fonttools subset ./NotoSans-Regular.ttf --text="ABC" --retain-gids --layout-features='*' --notdef-glyph --output-file=subset_abc.ttf - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_abc.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_abc.ttf")); TrueTypeFont subsetAbc = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_def.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_def.ttf")); TrueTypeFont subsetDef = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_xyz.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_xyz.ttf")); TrueTypeFont subsetXyz = FontProgramFactory.createTrueTypeFont(fontBytes, true); Map> toMerge = new HashMap>(); @@ -253,13 +252,13 @@ public void noCommonCmapPdfType0MergeTest() throws IOException { public void noCommonCmapUnknownPdfTypeMergeTest() throws IOException { // subsets are created using fonttools Python lib with the following command // fonttools subset ./NotoSans-Regular.ttf --text="ABC" --retain-gids --layout-features='*' --notdef-glyph --output-file=subset_abc.ttf - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_abc.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_abc.ttf")); TrueTypeFont subsetAbc = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_def.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_def.ttf")); TrueTypeFont subsetDef = FontProgramFactory.createTrueTypeFont(fontBytes, true); - fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subset_xyz.ttf")); + fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subset_xyz.ttf")); TrueTypeFont subsetXyz = FontProgramFactory.createTrueTypeFont(fontBytes, true); Map> toMerge = new HashMap>(); @@ -290,7 +289,7 @@ public void noCommonCmapUnknownPdfTypeMergeTest() throws IOException { @Test public void tryToReadFontSubsetWithoutGlyfTableTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subsetWithoutGlyfTable.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subsetWithoutGlyfTable.ttf")); Exception e = Assertions.assertThrows(com.itextpdf.io.exceptions.IOException.class, () -> FontProgramFactory.createTrueTypeFont(fontBytes, true)); String exp = MessageFormatUtil.format(IoExceptionMessageConstant.TABLE_DOES_NOT_EXIST, "glyf"); @@ -299,13 +298,13 @@ public void tryToReadFontSubsetWithoutGlyfTableTest() throws IOException { @Test public void readFontSubsetWithoutOs2TableTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subsetWithoutOsTable.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subsetWithoutOsTable.ttf")); AssertUtil.doesNotThrow(() -> FontProgramFactory.createTrueTypeFont(fontBytes, true)); } @Test public void tryToReadFontSubsetWithoutOs2TableTest() throws IOException { - byte[] fontBytes = Files.readAllBytes(Paths.get(SOURCE_FOLDER + "subsetWithoutOsTable.ttf")); + byte[] fontBytes = Files.readAllBytes(Paths.get(FONT_FOLDER + "subsetWithoutOsTable.ttf")); Exception e = Assertions.assertThrows(com.itextpdf.io.exceptions.IOException.class, () -> FontProgramFactory.createTrueTypeFont(fontBytes, false)); diff --git a/io/src/test/java/com/itextpdf/io/font/TrueTypeFontTest.java b/io/src/test/java/com/itextpdf/io/font/TrueTypeFontTest.java index b7879cbb40..bd30c2f500 100644 --- a/io/src/test/java/com/itextpdf/io/font/TrueTypeFontTest.java +++ b/io/src/test/java/com/itextpdf/io/font/TrueTypeFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,14 +41,14 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class TrueTypeFontTest extends ExtendedITextTest { - private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void notoSansJpCmapTest() throws IOException, InterruptedException { // 信 char jpChar = '\u4FE1'; - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansJP-Regular_charsetDataFormat0.otf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "NotoSansJP-Regular_charsetDataFormat0.otf"); Glyph glyph = fontProgram.getGlyph(jpChar); Assertions.assertArrayEquals(new char[] {jpChar}, glyph.getUnicodeChars()); @@ -61,7 +61,7 @@ public void notoSansScCmapTest() throws IOException { // 易 char chChar = '\u6613'; - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansSC-Regular.otf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "NotoSansSC-Regular.otf"); Glyph glyph = fontProgram.getGlyph(chChar); Assertions.assertArrayEquals(new char[] {chChar}, glyph.getUnicodeChars()); @@ -74,7 +74,7 @@ public void notoSansTcCmapTest() throws IOException { // 易 char chChar = '\u6613'; - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansTC-Regular.otf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "NotoSansTC-Regular.otf"); Glyph glyph = fontProgram.getGlyph(chChar); Assertions.assertArrayEquals(new char[] {chChar}, glyph.getUnicodeChars()); @@ -89,7 +89,7 @@ public void notoSansScMapGlyphsCidsToGidsTest() throws IOException { int charCidInFont = 20292; int charGidInFont = 14890; - TrueTypeFont trueTypeFontProgram = (TrueTypeFont) FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansSC-Regular.otf"); + TrueTypeFont trueTypeFontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansSC-Regular.otf"); HashSet glyphs = new HashSet<>(Collections.singletonList(charCidInFont)); Set actualResult = trueTypeFontProgram.mapGlyphsCidsToGids(glyphs); @@ -100,21 +100,21 @@ public void notoSansScMapGlyphsCidsToGidsTest() throws IOException { @Test public void cmapPlatform0PlatEnc3Format4Test() throws IOException { - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "glyphs.ttf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "glyphs.ttf"); checkCmapTableEntry(fontProgram, 'f', 2); checkCmapTableEntry(fontProgram, 'i', 3); } @Test public void cmapPlatform0PlatEnc3Format6Test() throws IOException { - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "glyphs-fmt-6.ttf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "glyphs-fmt-6.ttf"); checkCmapTableEntry(fontProgram, 'f', 2); checkCmapTableEntry(fontProgram, 'i', 3); } @Test public void checkSxHeightTtfTest() throws IOException { - FontProgram fontProgram = FontProgramFactory.createFont(SOURCE_FOLDER + "glyphs-fmt-6.ttf"); + FontProgram fontProgram = FontProgramFactory.createFont(FONT_FOLDER + "glyphs-fmt-6.ttf"); FontMetrics metrics = fontProgram.getFontMetrics(); int xHeight = metrics.getXHeight(); Assertions.assertEquals(536, xHeight); @@ -122,7 +122,7 @@ public void checkSxHeightTtfTest() throws IOException { @Test public void containsCmapTest() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(SOURCE_FOLDER + "glyphs-fmt-6.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "glyphs-fmt-6.ttf"); Assertions.assertEquals(1, fontProgram.getNumberOfCmaps()); Assertions.assertTrue(fontProgram.isCmapPresent(0, 3)); Assertions.assertFalse(fontProgram.isCmapPresent(1, 0)); @@ -131,7 +131,7 @@ public void containsCmapTest() throws IOException { @Test public void updateUsedGlyphsSetTest() throws IOException { TrueTypeFont trueTypeFontProgram = - (TrueTypeFont) FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansSC-Regular.otf"); + (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansSC-Regular.otf"); SortedSet usedGlyphs = new TreeSet<>(); @@ -151,7 +151,7 @@ public void updateUsedGlyphsSetTest() throws IOException { @Test public void updateUsedGlyphsMapTest() throws IOException { TrueTypeFont trueTypeFontProgram = - (TrueTypeFont) FontProgramFactory.createFont(SOURCE_FOLDER + "NotoSansSC-Regular.otf"); + (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansSC-Regular.otf"); Map usedGlyphs = new HashMap<>(); diff --git a/io/src/test/java/com/itextpdf/io/font/Type1FontTest.java b/io/src/test/java/com/itextpdf/io/font/Type1FontTest.java index 4a84bb6e83..c0e01814ca 100644 --- a/io/src/test/java/com/itextpdf/io/font/Type1FontTest.java +++ b/io/src/test/java/com/itextpdf/io/font/Type1FontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,7 +32,7 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class Type1FontTest extends ExtendedITextTest { - public static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/type1/testPackage/"; + public static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/TestPackage/"; @Test public void fillUsingEncodingTest() throws IOException { diff --git a/io/src/test/java/com/itextpdf/io/font/cmap/CMapByteCidTest.java b/io/src/test/java/com/itextpdf/io/font/cmap/CMapByteCidTest.java index c189118149..b029abc19b 100644 --- a/io/src/test/java/com/itextpdf/io/font/cmap/CMapByteCidTest.java +++ b/io/src/test/java/com/itextpdf/io/font/cmap/CMapByteCidTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/cmap/CMapCidToCodepointTest.java b/io/src/test/java/com/itextpdf/io/font/cmap/CMapCidToCodepointTest.java index 7862d11b1c..7704240a3f 100644 --- a/io/src/test/java/com/itextpdf/io/font/cmap/CMapCidToCodepointTest.java +++ b/io/src/test/java/com/itextpdf/io/font/cmap/CMapCidToCodepointTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/cmap/CMapCodepointToCidTest.java b/io/src/test/java/com/itextpdf/io/font/cmap/CMapCodepointToCidTest.java index f4c9497e9e..131b475d7e 100644 --- a/io/src/test/java/com/itextpdf/io/font/cmap/CMapCodepointToCidTest.java +++ b/io/src/test/java/com/itextpdf/io/font/cmap/CMapCodepointToCidTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/cmap/CMapToUnicodeTest.java b/io/src/test/java/com/itextpdf/io/font/cmap/CMapToUnicodeTest.java index cc44cc9f56..b4ae80a554 100644 --- a/io/src/test/java/com/itextpdf/io/font/cmap/CMapToUnicodeTest.java +++ b/io/src/test/java/com/itextpdf/io/font/cmap/CMapToUnicodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/cmap/StandardCMapCharsetsTest.java b/io/src/test/java/com/itextpdf/io/font/cmap/StandardCMapCharsetsTest.java index adaa0e5fae..44c6885467 100644 --- a/io/src/test/java/com/itextpdf/io/font/cmap/StandardCMapCharsetsTest.java +++ b/io/src/test/java/com/itextpdf/io/font/cmap/StandardCMapCharsetsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/constants/FontWeightsTest.java b/io/src/test/java/com/itextpdf/io/font/constants/FontWeightsTest.java index 015431f746..37b7ca32bb 100644 --- a/io/src/test/java/com/itextpdf/io/font/constants/FontWeightsTest.java +++ b/io/src/test/java/com/itextpdf/io/font/constants/FontWeightsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/ActualTextIteratorTest.java b/io/src/test/java/com/itextpdf/io/font/otf/ActualTextIteratorTest.java index 67960d3b34..662ff99564 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/ActualTextIteratorTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/ActualTextIteratorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GlyphLinePartTest.java b/io/src/test/java/com/itextpdf/io/font/otf/GlyphLinePartTest.java index f9b8c1acba..fdb23d1741 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GlyphLinePartTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GlyphLinePartTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GlyphLineTest.java b/io/src/test/java/com/itextpdf/io/font/otf/GlyphLineTest.java index fb139b5409..5755d54432 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GlyphLineTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GlyphLineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -37,8 +37,8 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class GlyphLineTest extends ExtendedITextTest { - - public static final String FREESANS_FONT_PATH = "./src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String NOTO_SANS_FONT_PATH = FONTS_FOLDER + "NotoSans-Regular.ttf"; private static List constructGlyphListFromString(String text, TrueTypeFont font) { List glyphList = new ArrayList<>(); @@ -442,7 +442,7 @@ public void diffActualTextEqualsTest() throws IOException { } private TrueTypeFont initializeFont() throws IOException { - byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FREESANS_FONT_PATH)); + byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(NOTO_SANS_FONT_PATH)); return new TrueTypeFont(ttf); } } diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GlyphTest.java b/io/src/test/java/com/itextpdf/io/font/otf/GlyphTest.java index 73761165b4..cf64eddd17 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GlyphTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GlyphTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType1Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType1Test.java index 7cd3d8a96a..a7b3eb3762 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType1Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType1Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -35,11 +35,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType1Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void verifyXAdvanceIsAppliedSubFormat1() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoSansMyanmar-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansMyanmar-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType1 lookup = (GposLookupType1) gposTableReader.getLookupTable(29); List glyphs = Arrays.asList(new Glyph(fontProgram.getGlyphByCode(174)), @@ -57,7 +57,7 @@ public void verifyXAdvanceIsAppliedSubFormat1() throws IOException { @Test public void verifyPositionIsNotAppliedForIrrelevantGlyphSubFormat1() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoSansMyanmar-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansMyanmar-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType1 lookup = (GposLookupType1) gposTableReader.getLookupTable(29); List glyphs = Arrays.asList(new Glyph(fontProgram.getGlyphByCode(5)), @@ -75,7 +75,7 @@ public void verifyPositionIsNotAppliedForIrrelevantGlyphSubFormat1() throws IOEx @Test public void verifyDifferentXAdvanceIsAppliedSubFormat2() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoSansMyanmar-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansMyanmar-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType1 lookup = (GposLookupType1) gposTableReader.getLookupTable(16); diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType2Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType2Test.java index befd86f63e..d05ccfd9ca 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType2Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType2Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -34,8 +34,8 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType2Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/"; - private static final String DEJAVU_FONT_PATH = RESOURCE_FOLDER + "DejaVuSans.ttf"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String DEJAVU_FONT_PATH =FONT_FOLDER + "DejaVuSans.ttf"; @Test public void idxEqualToEndLineGpos2Test() throws IOException { TrueTypeFont font = new TrueTypeFont(DEJAVU_FONT_PATH); diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType4Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType4Test.java index 01805f3b2a..ca5c7ae228 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType4Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType4Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,11 +36,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType4Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void verifyMarkToBaseAttachment() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(RESOURCE_FOLDER + "Padauk-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(FONT_FOLDER + "Padauk-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType4 lookup = (GposLookupType4) gposTableReader.getLookupTable(192); List glyphs = Arrays.asList(new Glyph(fontProgram.getGlyphByCode(163)), new Glyph(fontProgram.getGlyphByCode(207)), diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType5Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType5Test.java index da280574de..debfb85de9 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType5Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType5Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,12 +36,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType5Test extends ExtendedITextTest { - - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void verifyMarkToBaseAttachment() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoSansKhmer-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(FONT_FOLDER + "NotoSansKhmer-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType5 lookup = (GposLookupType5) gposTableReader.getLookupTable(25); List glyphs = Arrays.asList(new Glyph(fontProgram.getGlyphByCode(445)), new Glyph(fontProgram.getGlyphByCode(394))); @@ -61,7 +60,7 @@ public void verifyMarkToBaseAttachment() throws IOException { // since we will have to emulate previous substitutions and populate the substitution info // to the glyph line so that mark is attached to the correct component of a ligature public void testSelectingCorrectAttachmentAlternative() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoNaskhArabic-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(FONT_FOLDER + "NotoNaskhArabic-Regular.ttf"); GlyphLine glyphLine = new GlyphLine(Arrays.asList(fontProgram.getGlyphByCode(513), fontProgram.getGlyphByCode(75))); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType5 lookup = (GposLookupType5) gposTableReader.getLookupTable(3); @@ -78,7 +77,7 @@ public void testSelectingCorrectAttachmentAlternative() throws IOException { @Test public void testThatNoTransformationsAppliedForNonRelevantGlyphs() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoNaskhArabic-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(FONT_FOLDER + "NotoNaskhArabic-Regular.ttf"); GlyphLine glyphLine = new GlyphLine(Arrays.asList(fontProgram.getGlyph('1'), fontProgram.getGlyphByCode(75))); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType5 lookup = (GposLookupType5) gposTableReader.getLookupTable(3); @@ -95,7 +94,7 @@ public void testThatNoTransformationsAppliedForNonRelevantGlyphs() throws IOExce @Test public void idxBiggerThanLineEndTest() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoNaskhArabic-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont)FontProgramFactory.createFont(FONT_FOLDER + "NotoNaskhArabic-Regular.ttf"); GlyphLine glyphLine = new GlyphLine(Collections.singletonList(fontProgram.getGlyph(203))); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType5 lookup = (GposLookupType5) gposTableReader.getLookupTable(3); diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType6Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType6Test.java index 69e9b5391a..96b88cca88 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType6Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType6Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -35,14 +35,12 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType6Test extends ExtendedITextTest { - - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/"; - - private static final String FREE_SANS_FONT_PATH = RESOURCE_FOLDER + "FreeSans.ttf"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String NOTO_SANS_FONT_PATH = FONTS_FOLDER + "NotoSans-Regular.ttf"; @Test public void idxEqualToEndLineGpos6Test() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FREE_SANS_FONT_PATH); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(NOTO_SANS_FONT_PATH); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); GposLookupType6 lookup = new GposLookupType6(gposTableReader, 0, new int[0]); List glyphs = Arrays.asList(new Glyph(fontProgram.getGlyphByCode(445)), @@ -55,7 +53,7 @@ public void idxEqualToEndLineGpos6Test() throws IOException { @Test public void idxSmallerThanEndLineGpos6Test() throws IOException { - TrueTypeFont font = new TrueTypeFont(FREE_SANS_FONT_PATH); + TrueTypeFont font = new TrueTypeFont(NOTO_SANS_FONT_PATH); GlyphPositioningTableReader gposTableReader = font.getGposTable(); GposLookupType6 lookup = new GposLookupType6(gposTableReader, 0, new int[0]); diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType7Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType7Test.java index 70d1ace7e4..29721e855e 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType7Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType7Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -35,7 +35,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType7Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/"; + private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void verifyXAdvanceIsAppliedForContextualPositioning() throws IOException { diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType8Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType8Test.java index 2e01cd34f7..6928969415 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType8Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GposLookupType8Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,11 +36,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GposLookupType8Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void verifyXAdvanceIsAppliedForContextualPositioning() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "Padauk-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "Padauk-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); List glyphs = Arrays.asList(fontProgram.getGlyphByCode(233), fontProgram.getGlyphByCode(163), @@ -56,7 +56,7 @@ public void verifyXAdvanceIsAppliedForContextualPositioning() throws IOException @Test public void verifyXAdvanceIsAppliedForPosTableLookup8Format2() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "NotoSansMyanmar-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "NotoSansMyanmar-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); List glyphs = Arrays.asList(fontProgram.getGlyphByCode(29), @@ -79,7 +79,7 @@ public void verifyXAdvanceIsAppliedForPosTableLookup8Format2() throws IOExceptio @Test public void verifyXAdvanceIsNotAppliedForUnsatisfiedContextualPositioning() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "Padauk-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "Padauk-Regular.ttf"); GlyphPositioningTableReader gposTableReader = fontProgram.getGposTable(); List glyphs = Arrays.asList(fontProgram.getGlyphByCode(233), fontProgram.getGlyphByCode(163), diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType4Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType4Test.java index 21b525fc18..2fae7abfd8 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType4Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType4Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,11 +36,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GsubLookupType4Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GsubLookupType4Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void testNoIndexOutOfBound() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "DejaVuSansMono.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "DejaVuSansMono.ttf"); GlyphSubstitutionTableReader gsubTableReader = fontProgram.getGsubTable(); List glyphs = Arrays.asList(new Glyph(1, 1, 1), @@ -61,7 +61,7 @@ public void testNoIndexOutOfBound() throws IOException { @Test public void noTransformationTest() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "DejaVuSansMono.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "DejaVuSansMono.ttf"); GlyphSubstitutionTableReader gsubTableReader = fontProgram.getGsubTable(); List glyphs = Arrays.asList(new Glyph(1, 1, 1), diff --git a/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType6Test.java b/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType6Test.java index d32e10b95a..eec032755c 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType6Test.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/GsubLookupType6Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,11 +36,11 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class GsubLookupType6Test extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void testSubstitutionApplied() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "Padauk-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "Padauk-Regular.ttf"); GlyphSubstitutionTableReader gsubTableReader = fontProgram.getGsubTable(); List glyphs = Arrays.asList(fontProgram.getGlyphByCode(233), @@ -60,7 +60,7 @@ public void testSubstitutionApplied() throws IOException { @Test public void testSubstitutionNotApplied() throws IOException { - TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(RESOURCE_FOLDER + "Padauk-Regular.ttf"); + TrueTypeFont fontProgram = (TrueTypeFont) FontProgramFactory.createFont(FONT_FOLDER + "Padauk-Regular.ttf"); GlyphSubstitutionTableReader gsubTableReader = fontProgram.getGsubTable(); List glyphs = Arrays.asList(fontProgram.getGlyphByCode(233), diff --git a/io/src/test/java/com/itextpdf/io/font/otf/LanguageRecordTest.java b/io/src/test/java/com/itextpdf/io/font/otf/LanguageRecordTest.java index 29ee5e9c23..614be7af91 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/LanguageRecordTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/LanguageRecordTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/OpenTableLookupTest.java b/io/src/test/java/com/itextpdf/io/font/otf/OpenTableLookupTest.java index f611835f89..a2da533826 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/OpenTableLookupTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/OpenTableLookupTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest.java b/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest.java index 352070a2de..a7b88bdbe7 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -38,13 +38,13 @@ This file is part of the iText (R) project. public class OpenTypeFontTableReaderTest extends ExtendedITextTest { private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/"; - private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; private static final String CJK_JP_BOLD_PATH = FONTS_FOLDER + "NotoSansCJKjp-Bold.otf"; - private static final String SANS_MYANMAR_REGULAR_PATH = RESOURCE_FOLDER + "NotoSansMyanmar-Regular.ttf"; + private static final String SANS_MYANMAR_REGULAR_PATH = FONTS_FOLDER + "NotoSansMyanmar-Regular.ttf"; @Test diff --git a/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest.java b/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest.java index 6611ffe5a4..4b3c9ec249 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,7 +33,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class OpenTypeGdefTableReaderTest extends ExtendedITextTest { - private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/"; + private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; @Test public void testLookupFlagWithMarkAttachmentTypeAndMarkGlyphWithoutMarkAttachmentClass() throws IOException { diff --git a/io/src/test/java/com/itextpdf/io/font/otf/OtfReadCommonTest.java b/io/src/test/java/com/itextpdf/io/font/otf/OtfReadCommonTest.java index 2e95b7ddc4..840b8f4707 100644 --- a/io/src/test/java/com/itextpdf/io/font/otf/OtfReadCommonTest.java +++ b/io/src/test/java/com/itextpdf/io/font/otf/OtfReadCommonTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,9 +41,6 @@ This file is part of the iText (R) project. public class OtfReadCommonTest extends ExtendedITextTest { private static final String RESOURCE_FOLDER = "./src/test/resources/com/itextpdf/io/font/otf/OtfReadCommonTest/"; - private static final String RESOURCE_FOLDER_2 = "./src/test/resources/com/itextpdf/io/font/otf" - + "/GposLookupType7Test/"; - @Test public void testReadCoverageFormat1() throws IOException { // Based on Example 5 from the specification diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/SimpleWoff2DecodeTest.java b/io/src/test/java/com/itextpdf/io/font/woff2/SimpleWoff2DecodeTest.java index bc5216a4bd..01a5390b00 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/SimpleWoff2DecodeTest.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/SimpleWoff2DecodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -29,14 +29,13 @@ This file is part of the iText (R) project. import org.junit.jupiter.api.Test; public class SimpleWoff2DecodeTest extends Woff2DecodeTest { - - private static final String sourceFolder = "./src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/"; - private static final String targetFolder = TestUtil.getOutputPath() + "/io/font/woff2/SimpleWoff2Decode/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/io/font/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/io/font/woff2/SimpleWoff2Decode/"; @BeforeAll public static void setUp() { if (DEBUG) { - createOrClearDestinationFolder(targetFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } } @@ -51,6 +50,6 @@ public void bigTTCTest() throws IOException { } private void runTest(String fontName) throws IOException { - runTest(fontName, sourceFolder, targetFolder, true); + runTest(fontName, FONTS_FOLDER, DESTINATION_FOLDER, true); } } diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/Woff2DecodeTest.java b/io/src/test/java/com/itextpdf/io/font/woff2/Woff2DecodeTest.java index 6e8c8a91b6..a8556eb997 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/Woff2DecodeTest.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/Woff2DecodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/W3CWoff2DecodeTest.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/W3CWoff2DecodeTest.java index f44c9d8799..4abdad15d9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/W3CWoff2DecodeTest.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/W3CWoff2DecodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,8 +32,8 @@ This file is part of the iText (R) project. import org.junit.jupiter.api.Test; public abstract class W3CWoff2DecodeTest extends Woff2DecodeTest{ - private static final String baseSourceFolder = "./src/test/resources/com/itextpdf/io/font/woff2/w3c/"; - private static final String baseDestinationFolder = TestUtil.getOutputPath() + "/io/font/woff2/w3c/"; + private static final String W3C_FONT_FOLDER = "./src/test/resources/com/itextpdf/io/font/w3c/"; + private static final String W3C_DESTINATION_FOLDER = TestUtil.getOutputPath() + "/io/font/w3c/"; protected abstract String getFontName(); @@ -56,12 +56,12 @@ public void runTest() throws IOException{ private String getDestinationFolder() { String localPackage = StringNormalizer.toLowerCase(getLocalPackage()); - return baseDestinationFolder + localPackage + File.separatorChar + getTestClassName() + File.separatorChar; + return W3C_DESTINATION_FOLDER + localPackage + File.separatorChar + getTestClassName() + File.separatorChar; } private String getSourceFolder() { String localPackage = StringNormalizer.toLowerCase(getLocalPackage()); - return baseSourceFolder + localPackage + File.separatorChar; + return W3C_FONT_FOLDER + localPackage + File.separatorChar; } private String getTestClassName() { diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum001Test.java index 8026866351..62311bfd03 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum002Test.java index f5a4893b0f..9e05b45fbf 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationChecksum002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat001Test.java index 30452eed84..5d27381359 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat002Test.java index 321f170e70..6e8a8e4a41 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationLocaFormat002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff001Test.java index ad5e211eaf..1f7787a9e4 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff002Test.java index 2b278cea4d..ddedbe9785 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff003Test.java index 20f84f24f3..1d144c0248 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff004Test.java index e7bb2ca5ef..9742b7cc93 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff005Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff005Test.java index 0350958a6a..e1b90109ba 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff005Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff005Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff006Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff006Test.java index a9060b4bf8..da538f4efe 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff006Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff006Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff007Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff007Test.java index af5c99b4cc..aabc305120 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff007Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff007Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff008Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff008Test.java index 2bb975b2da..3e6d521009 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff008Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff008Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff009Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff009Test.java index f6cd936823..c342b305dc 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff009Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff009Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff010Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff010Test.java index e0b3ccde04..67d819fe19 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff010Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff010Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff011Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff011Test.java index b105176599..38de5f5afa 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff011Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff011Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff012Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff012Test.java index 729c474c55..c47e8ced65 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff012Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff012Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff013Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff013Test.java index 7a49658c3c..fb51af5cac 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff013Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff013Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff014Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff014Test.java index 0274af903c..56914d766e 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff014Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff014Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff015Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff015Test.java index a59f0d8b28..5630809423 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff015Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff015Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff016Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff016Test.java index 090d314f99..8e1f673203 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff016Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff016Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff017Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff017Test.java index b42e93da05..2dd093e84c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff017Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff017Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff018Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff018Test.java index 48f5a20843..55a5466bb7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff018Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff018Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff019Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff019Test.java index 752c93b548..cfe4e2699b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff019Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff019Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff020Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff020Test.java index 8ca80bbc53..1ff628a0d7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff020Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff020Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff021Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff021Test.java index f4b4b19105..70c1b399a7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff021Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff021Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff022Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff022Test.java index d0ad52cf57..d7dd1caebf 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff022Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff022Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff023Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff023Test.java index b88edcf387..157b47351a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff023Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff023Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff024Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff024Test.java index b0ebcfd114..20903162d2 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff024Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff024Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff025Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff025Test.java index 9f79205aae..329aa91781 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff025Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff025Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff026Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff026Test.java index c1427daad6..fcfa9e9fea 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff026Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff026Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff027Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff027Test.java index 0ef3871178..b931bacf75 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff027Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff027Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff028Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff028Test.java index 3b46f48bf1..91e0930d38 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff028Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff028Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff029Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff029Test.java index e4c36c8086..938de67b7c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff029Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff029Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff030Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff030Test.java index dcf53c9622..3a4c8a4da1 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff030Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff030Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff031Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff031Test.java index d94187e671..77bc4ec804 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff031Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff031Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff032Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff032Test.java index 3e2885b807..12f11398c9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff032Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff032Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff033Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff033Test.java index 4741fa6cf6..518a8cc004 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff033Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff033Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff034Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff034Test.java index b79b3b1422..28d8ce8cc1 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff034Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff034Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff035Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff035Test.java index df8033030c..9dfea8b7f7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff035Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff035Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff036Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff036Test.java index 0f07f948ed..8fea36e9bc 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff036Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff036Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff037Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff037Test.java index f65601ed8a..d3d1bd9819 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff037Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff037Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff038Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff038Test.java index 77975576f0..970dca3746 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff038Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff038Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff039Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff039Test.java index 58be5ecdc4..feb9e80607 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff039Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff039Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff040Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff040Test.java index 1993dc913b..334a3d493d 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff040Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff040Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff041Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff041Test.java index b8e051d7b6..53e71b8fdd 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff041Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff041Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff042Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff042Test.java index 1eb33bf798..7d306411a2 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff042Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff042Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff043Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff043Test.java index e44f87206d..06762e8b05 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff043Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff043Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff044Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff044Test.java index 8a0e8644e7..88bdf76b0a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff044Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff044Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff045Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff045Test.java index b53125ac44..e99e633056 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff045Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff045Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff046Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff046Test.java index 9223b1186e..0ec7cf461e 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff046Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff046Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff047Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff047Test.java index 9dee04386c..435ec41ba9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff047Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff047Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff048Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff048Test.java index 9bdb9a3221..27a7ea77f3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff048Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff048Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff049Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff049Test.java index dce1f1e8c9..a8d7874e96 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff049Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff049Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff050Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff050Test.java index 5641c952b8..b2ec75ac2b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff050Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff050Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff051Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff051Test.java index 40b9711615..4a6f626adf 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff051Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff051Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff052Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff052Test.java index cc16be6090..113a34231a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff052Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff052Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff053Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff053Test.java index 5e505066df..49a4120f24 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff053Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff053Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff054Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff054Test.java index b00636f8f4..be6a742a0b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff054Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff054Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff055Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff055Test.java index 007e1f2561..58f90f16a5 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff055Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff055Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff056Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff056Test.java index 7d29a49c7d..34f123a210 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff056Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff056Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff057Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff057Test.java index eaced41ff0..711d17f075 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff057Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff057Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff058Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff058Test.java index f20dfe4df4..d19d871a45 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff058Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff058Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff059Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff059Test.java index 4a691394d1..e031621991 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff059Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff059Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff060Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff060Test.java index 3ad5264fa9..08337be2a7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff060Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff060Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff061Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff061Test.java index 14349a39db..5c6b942f54 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff061Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff061Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff062Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff062Test.java index 77bfdd2556..62a31cae4a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff062Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff062Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff063Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff063Test.java index a4c11420c5..b4b9c58db4 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff063Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff063Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff064Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff064Test.java index 84220b0f50..2cb8d945c0 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff064Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff064Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff065Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff065Test.java index 5436416bf4..70e64704cb 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff065Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff065Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff066Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff066Test.java index 20ae69756e..1bed54c6c3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff066Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff066Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff067Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff067Test.java index 454a049d32..1e4e941915 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff067Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff067Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff068Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff068Test.java index af09b8cd9a..2b265e3498 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff068Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff068Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff069Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff069Test.java index be9df87536..0dc43ec78a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff069Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff069Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff070Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff070Test.java index 790aaefea5..a3ce13e9e3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff070Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff070Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff071Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff071Test.java index 26a0249ff7..f4d089b9f6 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff071Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff071Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff072Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff072Test.java index 8a48956405..0baf371196 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff072Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff072Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff073Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff073Test.java index 768d442e79..edde207e76 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff073Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff073Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff074Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff074Test.java index f49b47a747..c7b8e1f778 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff074Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff074Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff075Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff075Test.java index 9bf7f9a5d0..9b1f65227c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff075Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff075Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff076Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff076Test.java index 6c34bb5abd..616678429a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff076Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff076Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff077Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff077Test.java index 4700bea57c..e7ea41d629 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff077Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff077Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff078Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff078Test.java index c6671175b9..4cc3bc3471 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff078Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff078Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff079Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff079Test.java index 7f80ec1cb2..702659c4a0 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff079Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff079Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff080Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff080Test.java index cc766d03c4..c24ddd2114 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff080Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff080Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff081Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff081Test.java index 448c3a4798..71a8beafbd 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff081Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff081Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff082Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff082Test.java index c165efaaea..8a04cbd196 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff082Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff082Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff083Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff083Test.java index d8583728b0..86db77a2be 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff083Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff083Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff084Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff084Test.java index 47ba2c2b38..9f2c259535 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff084Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff084Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff085Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff085Test.java index 34c4686f7a..4010e392f3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff085Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff085Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff086Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff086Test.java index 5f68b2b1fb..25ab779c81 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff086Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff086Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff087Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff087Test.java index ced53db42a..cf3b403e03 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff087Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff087Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff088Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff088Test.java index e1143d24d0..183d8f42fb 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff088Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff088Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff089Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff089Test.java index 1ac9706d2e..fe57bedb10 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff089Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff089Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff090Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff090Test.java index f7b7d8f3d1..c50b693102 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff090Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff090Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff091Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff091Test.java index ce7f7bd79d..aa9d5562f1 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff091Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff091Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff092Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff092Test.java index 17878de8f0..7a06366867 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff092Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff092Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff093Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff093Test.java index 68eaf9cff3..4e49335e46 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff093Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff093Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff094Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff094Test.java index 9fa2597a6e..f083800006 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff094Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff094Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff095Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff095Test.java index 2853d5fcf7..f7870c26a0 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff095Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff095Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff096Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff096Test.java index 442c0a3188..ae7eca81b5 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff096Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff096Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff097Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff097Test.java index 8142c27ba7..6b3ed25386 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff097Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff097Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff098Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff098Test.java index 4d00aafc72..fb23b663e6 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff098Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff098Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff099Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff099Test.java index 1641c9c89f..09f7fa2652 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff099Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff099Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff100Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff100Test.java index 425d39c754..0103ed5bb6 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff100Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff100Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff101Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff101Test.java index 02a6bbb30e..646da64bec 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff101Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff101Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff102Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff102Test.java index d2dd31ff69..fe72f9d34e 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff102Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff102Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff103Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff103Test.java index ab33433e6b..e3c3ec4349 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff103Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff103Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff104Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff104Test.java index fbcdd30d49..87e6c577bd 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff104Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff104Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff105Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff105Test.java index 26f9259e52..090f53527b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff105Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff105Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff106Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff106Test.java index 73c787d634..75803d384c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff106Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff106Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff107Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff107Test.java index e386d99b8b..d8bdec63e9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff107Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff107Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff108Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff108Test.java index 42b09f803d..ccb06716a2 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff108Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff108Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff109Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff109Test.java index 5a66007d8b..b2ae93eaa5 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff109Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff109Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff110Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff110Test.java index 866fca9725..4cda321866 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff110Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff110Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff111Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff111Test.java index 100f3b6b29..4e326f941f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff111Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff111Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff112Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff112Test.java index d064d6c8d9..613583a7f8 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff112Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff112Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff113Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff113Test.java index 6f3875c304..9439a98a8d 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff113Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff113Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff114Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff114Test.java index 25a8ea36cf..90f04c5c8a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff114Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff114Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff115Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff115Test.java index 930e431881..bdad00e1ba 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff115Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff115Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff116Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff116Test.java index e648ec8b5f..dd0a13c86d 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff116Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff116Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff117Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff117Test.java index cca032bb05..8a2249d307 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff117Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff117Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff118Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff118Test.java index 904df869e3..f027e49c8f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff118Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff118Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff119Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff119Test.java index ccbea5382f..1dfe2087b9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff119Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff119Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff120Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff120Test.java index aa8d6f6082..a29cd7331a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff120Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff120Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff121Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff121Test.java index 10ee241361..3b7c9d613b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff121Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff121Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff122Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff122Test.java index 7a5411b721..21c36cc1b3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff122Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff122Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff123Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff123Test.java index 6b3062cb8f..3bd15715d9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff123Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff123Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff124Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff124Test.java index 5e1e359344..1ac5aec5af 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff124Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff124Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff125Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff125Test.java index a52b570140..5030b2197c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff125Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff125Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff126Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff126Test.java index 29c052523a..276a4d2d1f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff126Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff126Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff127Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff127Test.java index b9cb9cc89a..60db27b137 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff127Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff127Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff128Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff128Test.java index 885869a336..1f1fdfa134 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff128Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff128Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff129Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff129Test.java index b0143f83f4..0bc684ee7a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff129Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff129Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff130Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff130Test.java index a0ed506d10..3e350ded72 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff130Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff130Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff131Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff131Test.java index 8b1b2554fe..34bc3a1191 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff131Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff131Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff132Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff132Test.java index 045565be54..0b8fb3a5ad 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff132Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff132Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff133Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff133Test.java index 657ea3890e..0d002ed70f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff133Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff133Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff134Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff134Test.java index e44aebf19e..770159b419 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff134Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff134Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff135Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff135Test.java index edea2a7501..87c69c4b02 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff135Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff135Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff136Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff136Test.java index 26c7e0e70f..e718a6c0e9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff136Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff136Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff137Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff137Test.java index 4f7c00a6ce..64474f7b19 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff137Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff137Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff138Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff138Test.java index bbb2abe67e..903e45169e 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff138Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff138Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff139Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff139Test.java index 2435c8ffc3..80f4657f26 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff139Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff139Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff140Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff140Test.java index 33dba4442e..f730efac9b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff140Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff140Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff141Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff141Test.java index f5603d08d5..c7874b687f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff141Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff141Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff142Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff142Test.java index 574564a7d9..7a904f5234 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff142Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff142Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff143Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff143Test.java index 530d48d5cf..2d4ad53d80 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff143Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff143Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff144Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff144Test.java index 595cab8d20..1bc2d3ed51 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff144Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff144Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff145Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff145Test.java index 2d8bf41a40..1aa46ee86c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff145Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff145Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff146Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff146Test.java index a6d0d44916..8c520fc133 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff146Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff146Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff147Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff147Test.java index 810e7ffbba..0605a921db 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff147Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff147Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff148Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff148Test.java index 0494f7f642..6cb90b996c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff148Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff148Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff149Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff149Test.java index 3b74acfb83..aba724fe27 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff149Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff149Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff150Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff150Test.java index 79dbacfc04..996ff9826f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff150Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff150Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff151Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff151Test.java index b9f139aa54..70499d0f24 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff151Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff151Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff152Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff152Test.java index c3b8f87d4e..219004e31f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff152Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff152Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff153Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff153Test.java index ab15eebab7..cbb060c283 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff153Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff153Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff154Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff154Test.java index e571b2b4c8..2aff14df10 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff154Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff154Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff155Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff155Test.java index 069b4da967..72d15b91b0 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff155Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/decoder/ValidationOff155Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData001Test.java index 4163f95829..265d3117b3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData002Test.java index fce7ce5e3f..4f01a0d89c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData003Test.java index 8561268976..ecaee95bfd 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData004Test.java index eedd34b598..c72ef75570 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData005Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData005Test.java index 5e4ef6be1d..cb783d4d74 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData005Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData005Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData006Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData006Test.java index 4d59e9881b..cc598391de 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData006Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData006Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData007Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData007Test.java index 9909fb6fb2..0225c66655 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData007Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksExtraneousData007Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataAbsent002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataAbsent002Test.java index 183eb85a87..9a291abd00 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataAbsent002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataAbsent002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding001Test.java index 93f0f1b845..882d1fd1d7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding002Test.java index 0d69661169..bb9b2a763c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding003Test.java index 3491194b9d..e345cd1c3a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding004Test.java index d88e99f563..6607547ba4 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksMetadataPadding004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering003Test.java index 71e155fb33..f2ae9039a8 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering004Test.java index 7fc97f8cf5..cab2300f9b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksOrdering004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate001Test.java index ff54c88973..ff68be65bc 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate002Test.java index 3936551013..03e2d20ee0 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/BlocksPrivate002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder001Test.java index a89bf3b3f5..584fc1fa0f 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder002Test.java index f09c9eb5fb..7d203d2859 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/DirectoryTableOrder002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor001Test.java index b9da04aac8..14d604a70a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor002Test.java index 494e940f68..1041e27312 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderFlavor002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength001Test.java index f05e759402..fb9763fdd9 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength002Test.java index 96d2320882..2aa7943744 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderLength002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderNumTables001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderNumTables001Test.java index e0a05bab43..b6a9fceca7 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderNumTables001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderNumTables001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderReserved001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderReserved001Test.java index cdee3d0f25..efee2719d6 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderReserved001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderReserved001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderSignature001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderSignature001Test.java index 2389cb629d..4703995d11 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderSignature001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/HeaderSignature001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataBrotli001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataBrotli001Test.java index b80469266f..5f14ace97b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataBrotli001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataBrotli001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength001Test.java index a572a16d4e..4ec49c85c2 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength002Test.java index def3611e3a..050def0095 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength003Test.java index 531be5128c..6236668b8a 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength004Test.java index 2d1584b6fb..36d76a4ba5 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataDecompressedLength004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataExtraneousData001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataExtraneousData001Test.java index 0f47efadeb..af13cae378 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataExtraneousData001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataExtraneousData001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataGlyfCompositeBbox001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataGlyfCompositeBbox001Test.java index 37be23f5fe..bd105dfa6c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataGlyfCompositeBbox001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataGlyfCompositeBbox001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform001Test.java index 0a81e180cd..48f52addf6 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform002Test.java index d2659b6817..8843e7aaaa 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform003Test.java index 185d499002..675803f70d 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataHmtxTransform003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize001Test.java index b602b0eb30..7de4bbf421 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize002Test.java index 206979d1eb..d354092600 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize003Test.java index 4d74d27e3f..3846a3f365 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataLocaSize003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca001Test.java index bc20567305..bbc2e680cd 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca002Test.java index 4aea103e93..29b6a7caa3 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformGlyfLoca002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength001Test.java index 8def22fd9e..4bc3d09f62 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength002Test.java index 9e427898aa..942b7feb68 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/TabledataTransformLength002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid001Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid001Test.java index 93aa1b75c5..a20bc5cf45 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid001Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid001Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid002Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid002Test.java index 947c67d265..2ff8e23785 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid002Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid002Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid003Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid003Test.java index 46e338a065..4175005eec 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid003Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid003Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid004Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid004Test.java index b3f4f3c090..0a07c6508c 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid004Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid004Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid005Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid005Test.java index ae3484736f..edde13b28d 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid005Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid005Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid006Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid006Test.java index 639e86aa80..bb851f621b 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid006Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid006Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid007Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid007Test.java index 4545535659..e5dc8749db 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid007Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid007Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid008Test.java b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid008Test.java index 6efd012afd..ee7f3c9732 100644 --- a/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid008Test.java +++ b/io/src/test/java/com/itextpdf/io/font/woff2/w3c/format/Valid008Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/BmpTest.java b/io/src/test/java/com/itextpdf/io/image/BmpTest.java index 28a089fe12..77ebcdf4de 100644 --- a/io/src/test/java/com/itextpdf/io/image/BmpTest.java +++ b/io/src/test/java/com/itextpdf/io/image/BmpTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/GifTest.java b/io/src/test/java/com/itextpdf/io/image/GifTest.java index b1e9f45bb1..9b05e9e9b6 100644 --- a/io/src/test/java/com/itextpdf/io/image/GifTest.java +++ b/io/src/test/java/com/itextpdf/io/image/GifTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/ImageDataFactoryTest.java b/io/src/test/java/com/itextpdf/io/image/ImageDataFactoryTest.java index 42208eccec..bc019fbe44 100644 --- a/io/src/test/java/com/itextpdf/io/image/ImageDataFactoryTest.java +++ b/io/src/test/java/com/itextpdf/io/image/ImageDataFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/ImageTypeDetectorTest.java b/io/src/test/java/com/itextpdf/io/image/ImageTypeDetectorTest.java index fce74d837b..bff19b44ee 100644 --- a/io/src/test/java/com/itextpdf/io/image/ImageTypeDetectorTest.java +++ b/io/src/test/java/com/itextpdf/io/image/ImageTypeDetectorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/Jbig2Test.java b/io/src/test/java/com/itextpdf/io/image/Jbig2Test.java index 72c21f5246..8b8a09a63a 100644 --- a/io/src/test/java/com/itextpdf/io/image/Jbig2Test.java +++ b/io/src/test/java/com/itextpdf/io/image/Jbig2Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/Jpeg2000Test.java b/io/src/test/java/com/itextpdf/io/image/Jpeg2000Test.java index 004765c15f..3150090aad 100644 --- a/io/src/test/java/com/itextpdf/io/image/Jpeg2000Test.java +++ b/io/src/test/java/com/itextpdf/io/image/Jpeg2000Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/JpegImageHelperTest.java b/io/src/test/java/com/itextpdf/io/image/JpegImageHelperTest.java index 3d37d4a770..0cefc887af 100644 --- a/io/src/test/java/com/itextpdf/io/image/JpegImageHelperTest.java +++ b/io/src/test/java/com/itextpdf/io/image/JpegImageHelperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/JpegTest.java b/io/src/test/java/com/itextpdf/io/image/JpegTest.java index 76c1597272..3ebe08487b 100644 --- a/io/src/test/java/com/itextpdf/io/image/JpegTest.java +++ b/io/src/test/java/com/itextpdf/io/image/JpegTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/PngTest.java b/io/src/test/java/com/itextpdf/io/image/PngTest.java index 7774b198e7..c080181056 100644 --- a/io/src/test/java/com/itextpdf/io/image/PngTest.java +++ b/io/src/test/java/com/itextpdf/io/image/PngTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/RawImageHelperTest.java b/io/src/test/java/com/itextpdf/io/image/RawImageHelperTest.java index bdf57819f0..6d31bcb6cd 100644 --- a/io/src/test/java/com/itextpdf/io/image/RawImageHelperTest.java +++ b/io/src/test/java/com/itextpdf/io/image/RawImageHelperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/image/TiffTest.java b/io/src/test/java/com/itextpdf/io/image/TiffTest.java index f80d700b1a..f7a190c40c 100644 --- a/io/src/test/java/com/itextpdf/io/image/TiffTest.java +++ b/io/src/test/java/com/itextpdf/io/image/TiffTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/resolver/resource/DefaultResourceRetrieverTest.java b/io/src/test/java/com/itextpdf/io/resolver/resource/DefaultResourceRetrieverTest.java index 6d4e524c69..64fb03f677 100644 --- a/io/src/test/java/com/itextpdf/io/resolver/resource/DefaultResourceRetrieverTest.java +++ b/io/src/test/java/com/itextpdf/io/resolver/resource/DefaultResourceRetrieverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,12 +24,19 @@ This file is part of the iText (R) project. import com.itextpdf.commons.utils.StringNormalizer; import com.itextpdf.io.logs.IoLogMessageConstant; +import com.itextpdf.io.util.StreamUtil; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.annotations.LogMessage; import com.itextpdf.test.annotations.LogMessages; +import java.io.InputStream; import java.net.BindException; import java.net.InetAddress; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.net.MalformedURLException; +import java.nio.charset.StandardCharsets; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -47,13 +54,14 @@ class DefaultResourceRetrieverTest extends ExtendedITextTest { // Android-Conversion-Ignore-Test DEVSIX-6459 Some different random connect exceptions on Android public void retrieveResourceReadTimeoutTest() throws IOException, InterruptedException { - TestResource thread = new TestResource(); + TestResource thread = new TestResource(1000); thread.start(); while (!thread.isStarted() && !thread.isFailed()) { Thread.sleep(250); } + Assertions.assertNull(thread.getException()); Assertions.assertFalse(thread.failed); - URL url = new URL("http://127.0.0.1:" + thread.port + "/"); + URL url = new URL("http://127.0.0.1:" + thread.getPort() + "/"); DefaultResourceRetriever resourceRetriever = new DefaultResourceRetriever(); resourceRetriever.setReadTimeout(500); @@ -101,13 +109,15 @@ public void setResourceByLimitTest() { @Test @LogMessages(messages = { @LogMessage( - messageTemplate = IoLogMessageConstant.RESOURCE_WITH_GIVEN_URL_WAS_FILTERED_OUT) + messageTemplate = IoLogMessageConstant.RESOURCE_WITH_GIVEN_URL_WAS_FILTERED_OUT, count = 2) }) public void filterOutFilteredResourcesTest() throws IOException { DefaultResourceRetriever resourceRetriever = new FilteredResourceRetriever(); Assertions.assertFalse(resourceRetriever.urlFilter(new URL("https://example.com/resource"))); Assertions.assertNull(resourceRetriever.getInputStreamByUrl(new URL("https://example.com/resource"))); + Assertions.assertNull(resourceRetriever.get(new URL("https://example.com/resource"), new byte[0], + new HashMap<>(0))); } @Test @@ -119,6 +129,78 @@ public void loadGetByteArrayByUrl() throws IOException { Assertions.assertTrue(data.length > 0); } + @Test + // Android-Conversion-Ignore-Test DEVSIX-6459 Some different random connect exceptions on Android + public void loadWithRequestAndHeaders() throws IOException { + DefaultResourceRetriever resourceRetriever = new DefaultResourceRetriever(); + Map headers = new HashMap<>(1); + headers.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36"); + InputStream is = resourceRetriever.get( + new URL("https://itextpdf.com/blog/itext-news-technical-notes/get-excited-itext-8-here"), + new byte[0], headers); + byte[] data = StreamUtil.inputStreamToArray(is); + + Assertions.assertNotNull(data); + Assertions.assertTrue(data.length > 0); + } + + @Test + // Android-Conversion-Ignore-Test DEVSIX-6459 Some different random connect exceptions on Android + public void loadWithRequestAndMixedHeaders() throws IOException, InterruptedException { + TestResource thread = new TestResource(); + thread.start(); + while (!thread.isStarted() && !thread.isFailed()) { + Thread.sleep(250); + } + Assertions.assertNull(thread.getException()); + Assertions.assertFalse(thread.failed); + URL url = new URL("http://127.0.0.1:" + thread.getPort() + "/"); + DefaultResourceRetriever resourceRetriever = new DefaultResourceRetriever(); + Map defaultHeaders = new HashMap<>(3); + defaultHeaders.put("User-Agent","DEFAULT User Agent"); + defaultHeaders.put("TEST-HEADER","DEFAULT test header"); + resourceRetriever.setRequestHeaders(defaultHeaders); + Map getHeaders = Collections.singletonMap("User-Agent","TEST User Agent"); + try { + resourceRetriever.get(url, new byte[0], getHeaders); + } catch (Exception e) { + // exception is expected here, but we do not care + } + while (thread.getException() == null && thread.getLastRequest() == null) { + Thread.sleep(100); + } + Assertions.assertNull(thread.getException()); + Assertions.assertTrue(thread.getLastRequest().contains("User-Agent: TEST User Agent")); + Assertions.assertTrue(thread.getLastRequest().contains("TEST-HEADER: DEFAULT test header")); + } + + @Test + // Android-Conversion-Ignore-Test DEVSIX-6459 Some different random connect exceptions on Android + public void userAgentTest() throws InterruptedException, MalformedURLException { + TestResource thread = new TestResource(); + thread.start(); + while (!thread.isStarted() && !thread.isFailed()) { + Thread.sleep(250); + } + Assertions.assertNull(thread.getException()); + Assertions.assertFalse(thread.failed); + URL url = new URL("http://127.0.0.1:" + thread.getPort() + "/"); + DefaultResourceRetriever resourceRetriever = new DefaultResourceRetriever(); + Map headers = Collections.singletonMap("User-Agent","TEST User Agent"); + resourceRetriever.setRequestHeaders(headers); + + try { + resourceRetriever.getInputStreamByUrl(url); + } catch (Exception e) { + // exception is expected here, but we do not care + } + while (thread.getException() == null && thread.getLastRequest() == null) { + Thread.sleep(100); + } + Assertions.assertNull(thread.getException()); + Assertions.assertTrue(thread.getLastRequest().contains("User-Agent: TEST User Agent")); + } + private static class FilteredResourceRetriever extends DefaultResourceRetriever { @Override @@ -130,9 +212,21 @@ public boolean urlFilter(URL url) { private static class TestResource extends Thread { - private int port = 8000; - private boolean started = false; - private boolean failed = false; + private final int responseWaitTime; + private volatile int port = 8000; + private volatile boolean started = false; + private volatile boolean failed = false; + private volatile String request; + private volatile Exception exception; + + public TestResource(int responseWaitTime) { + this.responseWaitTime = responseWaitTime; + } + + public TestResource() { + this.responseWaitTime = 0; + } + @Override public void run() { try { @@ -156,6 +250,14 @@ public boolean isFailed() { return failed; } + public String getLastRequest() { + return request; + } + + public Exception getException() { + return exception; + } + private void startServer() throws IOException, InterruptedException { int tryCount = 0; while (!started) { @@ -165,7 +267,9 @@ private void startServer() throws IOException, InterruptedException { server.setSoTimeout(20000); started = true; try (Socket clientSocket = server.accept()){ - Thread.sleep(1000); + if (responseWaitTime > 0) { + Thread.sleep(responseWaitTime); + } PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); String response = "HTTP/1.1 OK OKrnContent-Type: text/html; charset=UTF-8rnrn" + "\n" + @@ -176,16 +280,40 @@ private void startServer() throws IOException, InterruptedException { "\n"; out.print(response); out.flush(); - server.accept(); + + try { + int attempt = 0; + while (attempt < 10 && request == null){ + attempt++; + if (clientSocket.getInputStream().available() > 0) { + byte[] buff = new byte[clientSocket.getInputStream().available()]; + clientSocket.getInputStream().read(buff); + request = new String(buff, StandardCharsets.UTF_8); + } else { + Thread.sleep(100); + } + } + if (request == null) { + exception = new IllegalStateException("No request data available"); + } + } catch (Exception e) { + exception = e; + request = e.toString(); + } } } catch (BindException ex) { if (tryCount > 100) { failed = true; + exception = ex; throw ex; } port++; + } catch (Exception e) { + failed = true; + exception = e; + throw e; } } } } -} \ No newline at end of file +} diff --git a/io/src/test/java/com/itextpdf/io/resolver/resource/LimitedInputStreamTest.java b/io/src/test/java/com/itextpdf/io/resolver/resource/LimitedInputStreamTest.java index 52e43f22ed..a0760f8de8 100644 --- a/io/src/test/java/com/itextpdf/io/resolver/resource/LimitedInputStreamTest.java +++ b/io/src/test/java/com/itextpdf/io/resolver/resource/LimitedInputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/ASCII85OutputStreamTest.java b/io/src/test/java/com/itextpdf/io/source/ASCII85OutputStreamTest.java new file mode 100644 index 0000000000..f5fa218458 --- /dev/null +++ b/io/src/test/java/com/itextpdf/io/source/ASCII85OutputStreamTest.java @@ -0,0 +1,157 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import com.itextpdf.io.util.CloseableByteArrayOutputStream; +import com.itextpdf.test.ExtendedITextTest; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +@Tag("UnitTest") +public class ASCII85OutputStreamTest extends ExtendedITextTest { + public static Iterable encodeTestArguments() { + // These inputs were generated randomly just in case + return Arrays.asList( + new Object[]{ + new byte[0], + "~>", + "Empty input", + }, + new Object[]{ + new byte[]{0x0C}, + "$i~>", + "Single 1-byte block", + }, + new Object[]{ + new byte[]{0x39, 0x14}, + "3>;~>", + "Single 2-byte block", + }, + new Object[]{ + new byte[]{0x21, (byte) 0xD8, 0x6C}, + "+kUT~>", + "Single 3-byte block", + }, + new Object[]{ + new byte[]{0x7F, 0x1D, (byte) 0xEA, 0x50}, + "Ii[fN~>", + "Single full block", + }, + new Object[]{ + new byte[]{0x2D, 0x1E, (byte) 0xB7, 0x7D, + 0x1F}, + "/KVBL*r~>", + "Single full block + single 1-byte block", + }, + new Object[]{ + new byte[]{0x54, (byte) 0x8E, 0x0A, (byte) 0xAD, + 0x20, 0x3F}, + "", + "Single full block + single 2-byte block", + }, + new Object[]{ + new byte[]{(byte) 0xA1, 0x72, 0x6A, 0x6C, + (byte) 0xAC, 0x56, 0x09}, + "TlOmaXB#W~>", + "Single full block + single 3-byte block", + }, + new Object[]{ + new byte[]{(byte) 0x99, 0x0D, (byte) 0xCA, 0x53, + (byte) 0xFF, (byte) 0x94, (byte) 0xC4, 0x26}, + "R17;;s-1GK~>", + "Two full blocks", + }, + // Single full block + single partial zero block variations + new Object[]{ + new byte[]{(byte) 0xA9, 0x1A, (byte) 0x9D, 0x59, + 0x00}, + "W>_=1!!~>", + "Single full block + single zeroed 1-byte block", + }, + new Object[]{ + new byte[]{(byte) 0xFC, 0x17, 0x09, (byte) 0x8A, + 0x00, 0x00}, + "r\"fZs!!!~>", + "Single full block + single zeroed 2-byte block", + }, + new Object[]{ + new byte[]{0x65, (byte) 0x87, 0x11, (byte) 0xFF, + 0x00, 0x00, 0x00}, + "AVUlt!!!!~>", + "Single full block + single zeroed 3-byte block", + }, + new Object[]{ + new byte[]{0x45, 0x35, (byte) 0xD6, (byte) 0xCE, + 0x00, 0x00, 0x00, 0x00}, + "75`ZAz~>", + "Single full block + single zeroed full block", + } + ); + } + + @ParameterizedTest(name = "{2}") + @MethodSource("encodeTestArguments") + public void encodeTest(byte[] input, String output, String name) throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + try (ASCII85OutputStream encoder = new ASCII85OutputStream(baos)) { + encoder.write(input); + } + Assertions.assertEquals(output, toString(baos)); + } + + @Test + public void finishableImplTest() throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + ASCII85OutputStream encoder = new ASCII85OutputStream(baos); + + encoder.write(new byte[]{(byte) 0xBF, 0x1B, 0x25, 0x03, (byte) 0x94}); + encoder.flush(); + Assertions.assertEquals("^DeI$", toString(baos)); + + // Should add encoded partial block and EOD + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertEquals("^DeI$PQ~>", toString(baos)); + + // Should be noop, since idempotent + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertEquals("^DeI$PQ~>", toString(baos)); + + // Should not append data, since finished + encoder.close(); + Assertions.assertTrue(baos.isClosed()); + Assertions.assertEquals("^DeI$PQ~>", toString(baos)); + } + + private static String toString(java.io.ByteArrayOutputStream baos) { + return new String(baos.toByteArray(), StandardCharsets.US_ASCII); + } +} diff --git a/io/src/test/java/com/itextpdf/io/source/ASCIIHexOutputStreamTest.java b/io/src/test/java/com/itextpdf/io/source/ASCIIHexOutputStreamTest.java new file mode 100644 index 0000000000..419e416ae1 --- /dev/null +++ b/io/src/test/java/com/itextpdf/io/source/ASCIIHexOutputStreamTest.java @@ -0,0 +1,100 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import com.itextpdf.io.util.CloseableByteArrayOutputStream; +import com.itextpdf.test.ExtendedITextTest; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("UnitTest") +public class ASCIIHexOutputStreamTest extends ExtendedITextTest { + @Test + public void encodeTest() throws IOException { + byte[] input = new byte[256]; + for (int i = 0; i < input.length; ++i) { + input[i] = (byte) i; + } + String expected = "000102030405060708090a0b0c0d0e0f101112131415161718" + + "191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435" + + "363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152" + + "535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f" + + "707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c" + + "8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9" + + "aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6" + + "c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3" + + "e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff>"; + + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + try (ASCIIHexOutputStream encoder = new ASCIIHexOutputStream(baos)) { + encoder.write(input); + } + Assertions.assertEquals(expected, toString(baos)); + } + + @Test + public void emptyStreamTest() throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + ASCIIHexOutputStream encoder = new ASCIIHexOutputStream(baos); + Assertions.assertEquals("", toString(baos)); + + encoder.finish(); + Assertions.assertEquals(">", toString(baos)); + + encoder.close(); + Assertions.assertEquals(">", toString(baos)); + } + + @Test + public void finishableImplTest() throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + ASCIIHexOutputStream encoder = new ASCIIHexOutputStream(baos); + + encoder.write(new byte[]{0x1F, 0x3A, 0x7F, 0x59}); + encoder.flush(); + Assertions.assertEquals("1f3a7f59", toString(baos)); + + // Should add EOD + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertEquals("1f3a7f59>", toString(baos)); + + // Should be noop, since idempotent + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertEquals("1f3a7f59>", toString(baos)); + + // Should not append data, since finished + encoder.close(); + Assertions.assertTrue(baos.isClosed()); + Assertions.assertEquals("1f3a7f59>", toString(baos)); + } + + private static String toString(java.io.ByteArrayOutputStream baos) { + return new String(baos.toByteArray(), StandardCharsets.US_ASCII); + } +} diff --git a/io/src/test/java/com/itextpdf/io/source/ByteBufferRandomAccessSourceTest.java b/io/src/test/java/com/itextpdf/io/source/ByteBufferRandomAccessSourceTest.java index a987ca7aa5..a103f4b055 100644 --- a/io/src/test/java/com/itextpdf/io/source/ByteBufferRandomAccessSourceTest.java +++ b/io/src/test/java/com/itextpdf/io/source/ByteBufferRandomAccessSourceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/HighPrecisionOutputStreamTest.java b/io/src/test/java/com/itextpdf/io/source/HighPrecisionOutputStreamTest.java index 225e9d7a65..fbc46797f3 100644 --- a/io/src/test/java/com/itextpdf/io/source/HighPrecisionOutputStreamTest.java +++ b/io/src/test/java/com/itextpdf/io/source/HighPrecisionOutputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/PagedChannelRandomAccessSourceTest.java b/io/src/test/java/com/itextpdf/io/source/PagedChannelRandomAccessSourceTest.java index 0fbc4feb51..5ee4dc4141 100644 --- a/io/src/test/java/com/itextpdf/io/source/PagedChannelRandomAccessSourceTest.java +++ b/io/src/test/java/com/itextpdf/io/source/PagedChannelRandomAccessSourceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/PdfTokenizerTest.java b/io/src/test/java/com/itextpdf/io/source/PdfTokenizerTest.java index f847abf8fa..51c420981d 100644 --- a/io/src/test/java/com/itextpdf/io/source/PdfTokenizerTest.java +++ b/io/src/test/java/com/itextpdf/io/source/PdfTokenizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/RAFRandomAccessSourceTest.java b/io/src/test/java/com/itextpdf/io/source/RAFRandomAccessSourceTest.java index cb09c8eb67..396b688a10 100644 --- a/io/src/test/java/com/itextpdf/io/source/RAFRandomAccessSourceTest.java +++ b/io/src/test/java/com/itextpdf/io/source/RAFRandomAccessSourceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/RandomAccessSourceFactoryTest.java b/io/src/test/java/com/itextpdf/io/source/RandomAccessSourceFactoryTest.java index f970f436d1..fb0a99add5 100644 --- a/io/src/test/java/com/itextpdf/io/source/RandomAccessSourceFactoryTest.java +++ b/io/src/test/java/com/itextpdf/io/source/RandomAccessSourceFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/RunLengthOutputStreamTest.java b/io/src/test/java/com/itextpdf/io/source/RunLengthOutputStreamTest.java new file mode 100644 index 0000000000..df3f87abe8 --- /dev/null +++ b/io/src/test/java/com/itextpdf/io/source/RunLengthOutputStreamTest.java @@ -0,0 +1,179 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.source; + +import com.itextpdf.io.util.CloseableByteArrayOutputStream; +import com.itextpdf.test.ExtendedITextTest; + +import java.io.IOException; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +@Tag("UnitTest") +public class RunLengthOutputStreamTest extends ExtendedITextTest { + public static Iterable encodeTestArguments() { + return Arrays.asList( + new Object[]{ + new byte[0], + new byte[]{(byte) 0x80}, + "Empty input" + }, + new Object[]{ + // We do not collapse 2 elem repeating runs + concat(uniqueRun(1), repeatingRun(2, 0x42), uniqueRun(2), + repeatingRun(3, 0x43), + uniqueRun(3), + repeatingRun(4, 0x44), + uniqueRun(4)), + concat( 4, uniqueRun(1), repeatingRun(2, 0x42), uniqueRun(2), + 254, 0x43, + 2, uniqueRun(3), + 253, 0x44, + 3, uniqueRun(4), + 0x80), + "Variable run types" + }, + new Object[]{ + uniqueRun(300, 0x00), + concat(127, uniqueRun(128, 0x00), + 127, uniqueRun(128, 0x80), + 43, uniqueRun( 44, 0x00), + 0x80), + "Long unique run" + }, + new Object[]{ + repeatingRun(300, 0xAD), + concat(129, 0xAD, 129, 0xAD, 213, 0xAD, 0x80), + "Long repeating run" + }, + new Object[]{ + concat(uniqueRun(128, 0x40), repeatingRun(128, 0x60)), + concat(127, uniqueRun(128, 0x40), 129, 0x60, 0x80), + "128 unique run + 128 repeating run" + }, + new Object[]{ + concat(repeatingRun(128, 0x40), uniqueRun(128, 0x60)), + concat(129, 0x40, 127, uniqueRun(128, 0x60), 0x80), + "128 repeating run + 128 unique run" + } + ); + } + + @ParameterizedTest(name = "{2}") + @MethodSource("encodeTestArguments") + public void encodeTest(byte[] input, byte[] output, String name) throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + try (RunLengthOutputStream encoder = new RunLengthOutputStream(baos)) { + encoder.write(input); + } + Assertions.assertArrayEquals(output, baos.toByteArray()); + } + + @Test + public void finishableImplTest() throws IOException { + CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream(); + RunLengthOutputStream encoder = new RunLengthOutputStream(baos); + + encoder.write(uniqueRun(3, 0x00)); + encoder.write(repeatingRun(3, 0x00)); + encoder.write(repeatingRun(3, 0xFF)); + encoder.write(uniqueRun(3, 0x81)); + encoder.flush(); + Assertions.assertArrayEquals( + concat(2, uniqueRun(3, 0x00), 254, 0x00, 254, 0xFF), + baos.toByteArray() + ); + + // Should add encoded pending block and EOD + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertArrayEquals( + concat(2, uniqueRun(3, 0x00), 254, 0x00, 254, 0xFF, 2, uniqueRun(3, 0x81), 0x80), + baos.toByteArray() + ); + + // Should be noop, since idempotent + encoder.finish(); + Assertions.assertFalse(baos.isClosed()); + Assertions.assertArrayEquals( + concat(2, uniqueRun(3, 0x00), 254, 0x00, 254, 0xFF, 2, uniqueRun(3, 0x81), 0x80), + baos.toByteArray() + ); + + // Should not append data, since finished + encoder.close(); + Assertions.assertTrue(baos.isClosed()); + Assertions.assertArrayEquals( + concat(2, uniqueRun(3, 0x00), 254, 0x00, 254, 0xFF, 2, uniqueRun(3, 0x81), 0x80), + baos.toByteArray() + ); + } + + private static byte[] concat(Object... values) { + int size = 0; + for (int i = 0; i < values.length; ++i) { + if (values[i] instanceof Integer) { + ++size; + } else if (values[i] instanceof byte[]) { + size += ((byte[]) values[i]).length; + } else { + throw new IllegalArgumentException("unexpected type"); + } + } + byte[] result = new byte[size]; + int offset = 0; + for (int i = 0; i < values.length; ++i) { + if (values[i] instanceof Integer) { + result[offset] = (byte) (((Integer) values[i]) & 0xFF); + ++offset; + } else { + byte[] arr = (byte[]) values[i]; + System.arraycopy(arr, 0, result, offset, arr.length); + offset += arr.length; + } + } + return result; + } + + private static byte[] uniqueRun(int length) { + return uniqueRun(length, 0); + } + + private static byte[] uniqueRun(int length, int offset) { + byte[] run = new byte[length]; + for (int i = 0; i < length; ++i) { + run[i] = (byte) ((offset + i) & 0xFF); + } + return run; + } + + private static byte[] repeatingRun(int length, int value) { + byte[] run = new byte[length]; + Arrays.fill(run, (byte) (value & 0xFF)); + return run; + } +} diff --git a/io/src/test/java/com/itextpdf/io/source/WriteNumbersTest.java b/io/src/test/java/com/itextpdf/io/source/WriteNumbersTest.java index 55b392a224..822c2e97d3 100644 --- a/io/src/test/java/com/itextpdf/io/source/WriteNumbersTest.java +++ b/io/src/test/java/com/itextpdf/io/source/WriteNumbersTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/source/WriteStringsTest.java b/io/src/test/java/com/itextpdf/io/source/WriteStringsTest.java index df8f55ed95..b344084c7a 100644 --- a/io/src/test/java/com/itextpdf/io/source/WriteStringsTest.java +++ b/io/src/test/java/com/itextpdf/io/source/WriteStringsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/CloseableByteArrayOutputStream.java b/io/src/test/java/com/itextpdf/io/util/CloseableByteArrayOutputStream.java new file mode 100644 index 0000000000..981535e144 --- /dev/null +++ b/io/src/test/java/com/itextpdf/io/util/CloseableByteArrayOutputStream.java @@ -0,0 +1,67 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.io.util; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +/** + * A version of {@link ByteArrayOutputStream}, which cannot be written to + * after calling {@link #close()}. + */ +public class CloseableByteArrayOutputStream extends java.io.ByteArrayOutputStream { + private boolean closed = false; + + public CloseableByteArrayOutputStream() { + super(); + } + + public CloseableByteArrayOutputStream(int size) { + super(size); + } + + public boolean isClosed() { + return closed; + } + + @Override + public synchronized void write(int b) { + if (closed) { + throw new RuntimeException("Stream is closed"); + } + super.write(b); + } + + @Override + public synchronized void write(byte[] b, int off, int len) { + if (closed) { + throw new RuntimeException("Stream is closed"); + } + super.write(b, off, len); + } + + @Override + public synchronized void close() throws IOException { + closed = true; + } +} diff --git a/io/src/test/java/com/itextpdf/io/util/DateTimeUtilTest.java b/io/src/test/java/com/itextpdf/io/util/DateTimeUtilTest.java index 873564d324..8af69a5c4b 100644 --- a/io/src/test/java/com/itextpdf/io/util/DateTimeUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/DateTimeUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/EnumUtilTest.java b/io/src/test/java/com/itextpdf/io/util/EnumUtilTest.java index dd4e9f8f0f..f56bdfbf6b 100644 --- a/io/src/test/java/com/itextpdf/io/util/EnumUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/EnumUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/GhostScriptHelperUnitTest.java b/io/src/test/java/com/itextpdf/io/util/GhostScriptHelperUnitTest.java index 51613c4624..672fdc45cf 100644 --- a/io/src/test/java/com/itextpdf/io/util/GhostScriptHelperUnitTest.java +++ b/io/src/test/java/com/itextpdf/io/util/GhostScriptHelperUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/GhostscriptHelperTest.java b/io/src/test/java/com/itextpdf/io/util/GhostscriptHelperTest.java index fde6b98cf0..cda0fa200d 100644 --- a/io/src/test/java/com/itextpdf/io/util/GhostscriptHelperTest.java +++ b/io/src/test/java/com/itextpdf/io/util/GhostscriptHelperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperTest.java b/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperTest.java index b2d155186f..a2dac1dc23 100644 --- a/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperTest.java +++ b/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperUnitTest.java b/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperUnitTest.java index 0e47d3cb95..5776e6b276 100644 --- a/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperUnitTest.java +++ b/io/src/test/java/com/itextpdf/io/util/ImageMagickHelperUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/IntHashtableTest.java b/io/src/test/java/com/itextpdf/io/util/IntHashtableTest.java index daa4a941c4..84ded791c6 100644 --- a/io/src/test/java/com/itextpdf/io/util/IntHashtableTest.java +++ b/io/src/test/java/com/itextpdf/io/util/IntHashtableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/MatcherTest.java b/io/src/test/java/com/itextpdf/io/util/MatcherTest.java index 4422394733..a5e897818b 100644 --- a/io/src/test/java/com/itextpdf/io/util/MatcherTest.java +++ b/io/src/test/java/com/itextpdf/io/util/MatcherTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/PdfNameUtilTest.java b/io/src/test/java/com/itextpdf/io/util/PdfNameUtilTest.java index d8fbc4498e..bf917a4210 100644 --- a/io/src/test/java/com/itextpdf/io/util/PdfNameUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/PdfNameUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/StandardOutUtil.java b/io/src/test/java/com/itextpdf/io/util/StandardOutUtil.java index 357887f216..809f911a95 100644 --- a/io/src/test/java/com/itextpdf/io/util/StandardOutUtil.java +++ b/io/src/test/java/com/itextpdf/io/util/StandardOutUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/TextUtilTest.java b/io/src/test/java/com/itextpdf/io/util/TextUtilTest.java index 20a7cb83e6..dd41a84994 100644 --- a/io/src/test/java/com/itextpdf/io/util/TextUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/TextUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/UrlUtilTest.java b/io/src/test/java/com/itextpdf/io/util/UrlUtilTest.java index 5d907c5151..66e49daae4 100644 --- a/io/src/test/java/com/itextpdf/io/util/UrlUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/UrlUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,6 +45,8 @@ This file is part of the iText (R) project. // Android-Conversion-Skip-Line (Security provider is required for working getFinalConnection through SSL on Android) // Android-Conversion-Replace import java.security.Security; // Android-Conversion-Replace import org.bouncycastle.jce.provider.BouncyCastleProvider; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; @@ -71,7 +73,7 @@ public void getFinalConnectionWhileRedirectingTest() throws IOException { URLConnection finalConnection = null; try { - finalConnection = UrlUtil.getFinalConnection(initialUrl, 0, 0, null); + finalConnection = UrlUtil.getFinalConnection(initialUrl, 0, 0, null, null); Assertions.assertNotNull(finalConnection); Assertions.assertNotEquals(initialUrl, finalConnection.getURL()); @@ -85,7 +87,7 @@ public void getFinalConnectionWhileRedirectingTest() throws IOException { // would be thrown. @Test public void getInputStreamOfFinalConnectionThrowExceptionTest() throws IOException { - URL invalidUrl = new URL("http://itextpdf"); + URL invalidUrl = new URL("https://itextpdf"); Assertions.assertThrows(UnknownHostException.class, () -> UrlUtil.getInputStreamOfFinalConnection(invalidUrl)); } @@ -94,12 +96,25 @@ public void getInputStreamOfFinalConnectionThrowExceptionTest() throws IOExcepti // not be null. @Test public void getInputStreamOfFinalConnectionTest() throws IOException { - URL initialUrl = new URL("http://itextpdf.com"); + URL initialUrl = new URL("https://itextpdf.com"); InputStream streamOfFinalConnectionOfInvalidUrl = UrlUtil.getInputStreamOfFinalConnection(initialUrl); Assertions.assertNotNull(streamOfFinalConnectionOfInvalidUrl); } + // This test checks that when we pass valid url and trying get stream related to final redirected url, it would + // not be null. + @Test + public void getInputStreamOfFinalConnection2Test() throws IOException { + URL initialUrl = new URL("https://itextpdf.com"); + Map headers = new HashMap(); + headers.put("User-Agent", "Custom user agent"); + InputStream streamOfFinalConnectionOfInvalidUrl = UrlUtil.getInputStreamOfFinalConnection(initialUrl, 2000, 2000, headers); + + Assertions.assertNotNull(streamOfFinalConnectionOfInvalidUrl); + } + + @Test // Android-Conversion-Ignore-Test (TODO DEVSIX-7371 investigate different behavior of a few iTextCore tests on Java and Android) public void getBaseUriTest() throws IOException { diff --git a/io/src/test/java/com/itextpdf/io/util/XmlUtilTest.java b/io/src/test/java/com/itextpdf/io/util/XmlUtilTest.java index 6c0337e6bc..723e2fe9e1 100644 --- a/io/src/test/java/com/itextpdf/io/util/XmlUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/XmlUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/java/com/itextpdf/io/util/ZlibUtilTest.java b/io/src/test/java/com/itextpdf/io/util/ZlibUtilTest.java index 19e293fffa..afa3018246 100644 --- a/io/src/test/java/com/itextpdf/io/util/ZlibUtilTest.java +++ b/io/src/test/java/com/itextpdf/io/util/ZlibUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/io/src/test/resources/com/itextpdf/io/font/BSD-3.txt b/io/src/test/resources/com/itextpdf/io/font/BSD-3.txt new file mode 100644 index 0000000000..df2fdad8dd --- /dev/null +++ b/io/src/test/resources/com/itextpdf/io/font/BSD-3.txt @@ -0,0 +1,13 @@ +Note: This license has also been called the “New BSD License” or “Modified BSD License”. See also the 2-clause BSD License. + +Copyright 2026 iText + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/BellefairRegularLatin.woff2 b/io/src/test/resources/com/itextpdf/io/font/BellefairRegularLatin.woff2 new file mode 100644 index 0000000000..f47e2c4c06 Binary files /dev/null and b/io/src/test/resources/com/itextpdf/io/font/BellefairRegularLatin.woff2 differ diff --git a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/BitstreamCopyright.txt b/io/src/test/resources/com/itextpdf/io/font/BitstreamCopyright.txt similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/BitstreamCopyright.txt rename to io/src/test/resources/com/itextpdf/io/font/BitstreamCopyright.txt diff --git a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSans.ttf b/io/src/test/resources/com/itextpdf/io/font/DejaVuSans.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSans.ttf rename to io/src/test/resources/com/itextpdf/io/font/DejaVuSans.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSansMono.ttf b/io/src/test/resources/com/itextpdf/io/font/DejaVuSansMono.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSansMono.ttf rename to io/src/test/resources/com/itextpdf/io/font/DejaVuSansMono.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSerif.ttf b/io/src/test/resources/com/itextpdf/io/font/DejaVuSerif.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/DejaVuSerif.ttf rename to io/src/test/resources/com/itextpdf/io/font/DejaVuSerif.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/NOTICE.txt deleted file mode 100644 index 2916166152..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| SourceSerif4-Black.woff | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit a9eaef81588dddd479f2275d87b3707ed7ae2847 (26.01.2021) from "https://github.com/adobe-fonts/source-serif" \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/valid.woff2 b/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/valid.woff2 deleted file mode 100644 index 7b49891cce..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/valid.woff2 and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/FreeSansBold.ttf b/io/src/test/resources/com/itextpdf/io/font/FreeSansBold.ttf new file mode 100644 index 0000000000..e75685be37 Binary files /dev/null and b/io/src/test/resources/com/itextpdf/io/font/FreeSansBold.ttf differ diff --git a/io/src/test/resources/com/itextpdf/io/font/GNU General Public License.txt b/io/src/test/resources/com/itextpdf/io/font/GNU General Public License.txt new file mode 100644 index 0000000000..3b6dc96b30 --- /dev/null +++ b/io/src/test/resources/com/itextpdf/io/font/GNU General Public License.txt @@ -0,0 +1,219 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds of works. + + The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + + Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and modification follow. + + TERMS AND CONDITIONS + 0. Definitions. + “This License” refers to version 3 of the GNU General Public License. + + “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + + “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + + To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + + A “covered work” means either the unmodified Program or a work based on the Program. + + To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + + To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + + A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + + The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + + The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + + The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + + When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + + A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + + “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + + If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + + The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + + However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + + Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + + An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + + 11. Patents. + A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + + A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + + In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + + If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + + A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + + Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + + You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + + The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/LICENSE_OFL-1.1.txt similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/LICENSE_OFL.txt rename to io/src/test/resources/com/itextpdf/io/font/LICENSE_OFL-1.1.txt diff --git a/io/src/test/resources/com/itextpdf/io/font/MIT-license.txt b/io/src/test/resources/com/itextpdf/io/font/MIT-license.txt new file mode 100644 index 0000000000..6e8eeb2e4f --- /dev/null +++ b/io/src/test/resources/com/itextpdf/io/font/MIT-license.txt @@ -0,0 +1,20 @@ +Copyright (c) 2018 Evgeniy Reizner + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/NOTICE.txt deleted file mode 100644 index ce22558e2f..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/MonospaceFontTest/NOTICE.txt +++ /dev/null @@ -1,5 +0,0 @@ -These fonts are under Bitstream Vera Fonts Copyright: - -DejaVuSans.ttf -DejaVuSansMono.ttf -DejaVuSerif.ttf \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/NOTICE.txt new file mode 100644 index 0000000000..8cf50e74cb --- /dev/null +++ b/io/src/test/resources/com/itextpdf/io/font/NOTICE.txt @@ -0,0 +1,41 @@ +This software uses the following test resources under the following licenses: + +BellefairRegularLatin.woff2 | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Bellefair" (22.01.2026) +DejaVuSans.ttf | Bitstream Vera Fonts Copyright | BitstreamCopyright.txt | Based on "https://github.com/dejavu-fonts/dejavu-fonts" (05.02.2026) +DejaVuSansMono.ttf | Bitstream Vera Fonts Copyright | BitstreamCopyright.txt | Based on "https://github.com/dejavu-fonts/dejavu-fonts" (05.02.2026) +DejaVuSerif.ttf | Bitstream Vera Fonts Copyright | BitstreamCopyright.txt | | Based on "https://github.com/dejavu-fonts/dejavu-fonts" (05.02.2026) +FreeSansBold.ttf | GPL license | GNU General Public License.txt | Based on "https://savannah.gnu.org/projects/freefont" (29.01.2026) +glyphs.ttf, glyphs-fmt-6.ttf | MIT | MIT-license.txt | Based on commit 4ae8853286721f2605edb0a4e2741aec70aefe71 (01.07.2019) from repository: "https://github.com/RazrFalcon/ttf-parser/tree/337e7d1c08b06478a84c4345f4f289fc2cb9210c/tests/fonts-src" +NotoNaskhArabic-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" +NotoSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" +NotoSansAndSpaceMono.ttc | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Space+Mono" and "https://fonts.google.com/noto/specimen/Noto+Sans" (26.01.2026) +NotoSansCJK-Regular.woff2 | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansCJKjp-Bold.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansCJKtc-Regular.woff2 | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansJP-Regular_charsetDataFormat0.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+JP" (23.03.2022) +NotoSansKhmer-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" +NotoSansMyanmar-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" +NotoSansSC-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansTC-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" +Padauk-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Padauk" (26.01.2026) +Puritan-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Puritan" (26.01.2026) +SourceSerif4-Black.woff | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit a9eaef81588dddd479f2275d87b3707ed7ae2847 (26.01.2021) from "https://github.com/adobe-fonts/source-serif" +cmr10.afm | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" (13.09.2023) +cmr10.pfb | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" (13.09.2023) +cmp_NotoSansCJK-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" (05.02.2026) +cmp_NotoSansCJKtc-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" (05.02.2026) + + +subset1.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subset2.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subsetNotoSansCJKjpBoldNoUsedGlyphs.cff (NotoSansCJKjpBold subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff (NotoSansCJKjpBold subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subsetNotoSansJPRegularOneUsedGlyph.cff (NotoSansJPRegular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subsetWithoutGlyfTable.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subsetWithoutOsTable.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subset_abc.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subset_abc_def_xyz.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subset_def.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt +subset_xyz.ttf (NotoSans-Regular subset) | OFL-1.1 | LICENSE_OFL-1.1.txt + +All fonts under w3c directory | BSD-3 | BSD-3.txt | w3c.org (27.01.2026) \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NotoNaskhArabic-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/NotoNaskhArabic-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NotoNaskhArabic-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/NotoNaskhArabic-Regular.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/NotoSans-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/NotoSans-Regular.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/NotoSans-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/NotoSans-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/NotoSansAndSpaceMono.ttc b/io/src/test/resources/com/itextpdf/io/font/NotoSansAndSpaceMono.ttc similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/NotoSansAndSpaceMono.ttc rename to io/src/test/resources/com/itextpdf/io/font/NotoSansAndSpaceMono.ttc diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/NotoSansCJK-Regular.woff2 b/io/src/test/resources/com/itextpdf/io/font/NotoSansCJK-Regular.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/NotoSansCJK-Regular.woff2 rename to io/src/test/resources/com/itextpdf/io/font/NotoSansCJK-Regular.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansCJKjp-Bold.otf b/io/src/test/resources/com/itextpdf/io/font/NotoSansCJKjp-Bold.otf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansCJKjp-Bold.otf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansCJKjp-Bold.otf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/NotoSansCJKtc-Regular.woff2 b/io/src/test/resources/com/itextpdf/io/font/NotoSansCJKtc-Regular.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/NotoSansCJKtc-Regular.woff2 rename to io/src/test/resources/com/itextpdf/io/font/NotoSansCJKtc-Regular.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansJP-Regular_charsetDataFormat0.otf b/io/src/test/resources/com/itextpdf/io/font/NotoSansJP-Regular_charsetDataFormat0.otf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansJP-Regular_charsetDataFormat0.otf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansJP-Regular_charsetDataFormat0.otf diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NotoSansKhmer-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/NotoSansKhmer-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NotoSansKhmer-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansKhmer-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/NotoSansMyanmar-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/NotoSansMyanmar-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/NotoSansMyanmar-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansMyanmar-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansSC-Regular.otf b/io/src/test/resources/com/itextpdf/io/font/NotoSansSC-Regular.otf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansSC-Regular.otf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansSC-Regular.otf diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansTC-Regular.otf b/io/src/test/resources/com/itextpdf/io/font/NotoSansTC-Regular.otf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSansTC-Regular.otf rename to io/src/test/resources/com/itextpdf/io/font/NotoSansTC-Regular.otf diff --git a/io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/NOTICE.txt deleted file mode 100644 index f8cd11f64a..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -Please notice that the following fonts are used with the mentioned below licenses. - -* NotoSansAndSpaceMono - SIL Open Font License v1.1 diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/Padauk-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/Padauk-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/Padauk-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/Padauk-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/Puritan-Regular.otf b/io/src/test/resources/com/itextpdf/io/font/Puritan-Regular.otf new file mode 100644 index 0000000000..2d5428fda5 Binary files /dev/null and b/io/src/test/resources/com/itextpdf/io/font/Puritan-Regular.otf differ diff --git a/io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/SourceSerif4-Black.woff b/io/src/test/resources/com/itextpdf/io/font/SourceSerif4-Black.woff similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/FontProgramFactoryTest/SourceSerif4-Black.woff rename to io/src/test/resources/com/itextpdf/io/font/SourceSerif4-Black.woff diff --git a/io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.afm b/io/src/test/resources/com/itextpdf/io/font/TestPackage/cmr10.afm similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.afm rename to io/src/test/resources/com/itextpdf/io/font/TestPackage/cmr10.afm diff --git a/io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.pfb b/io/src/test/resources/com/itextpdf/io/font/TestPackage/cmr10.pfb similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.pfb rename to io/src/test/resources/com/itextpdf/io/font/TestPackage/cmr10.pfb diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/NOTICE.txt deleted file mode 100644 index e0bfd9bc21..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/NOTICE.txt +++ /dev/null @@ -1,10 +0,0 @@ -Please notice that the following fonts are used with the mentioned below licenses. - -* subset_abc (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subset_abc_def_xyz (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subset_def (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subset_xyz (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subset1 (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subset2 (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subsetWithoutGlyfTable (NotoSans-Regular subset) - SIL Open Font License v1.1 -* subsetWithoutOsTable (NotoSans-Regular subset) - SIL Open Font License v1.1 diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subsetWithoutGlyfTable.ttf b/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subsetWithoutGlyfTable.ttf deleted file mode 100644 index c37e0dda14..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subsetWithoutGlyfTable.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/cmp_NotoSansCJK-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/cmp_NotoSansCJK-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/cmp_NotoSansCJK-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/cmp_NotoSansCJK-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/cmp_NotoSansCJKtc-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/cmp_NotoSansCJKtc-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/SimpleWoff2Decode/cmp_NotoSansCJKtc-Regular.ttf rename to io/src/test/resources/com/itextpdf/io/font/cmp_NotoSansCJKtc-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/glyphs-fmt-6.ttf b/io/src/test/resources/com/itextpdf/io/font/glyphs-fmt-6.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/glyphs-fmt-6.ttf rename to io/src/test/resources/com/itextpdf/io/font/glyphs-fmt-6.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/glyphs.ttf b/io/src/test/resources/com/itextpdf/io/font/glyphs.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/glyphs.ttf rename to io/src/test/resources/com/itextpdf/io/font/glyphs.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/FreeSans.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/FreeSansBold.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/FreeSansBold.ttf deleted file mode 100644 index 63644e7437..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/FreeSansBold.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/NOTICE.txt deleted file mode 100644 index b7e8065f2b..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType1Test/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansMyanmar-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/BitstreamCopyright.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/BitstreamCopyright.txt deleted file mode 100644 index ce8e3a19b1..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/BitstreamCopyright.txt +++ /dev/null @@ -1,15 +0,0 @@ -Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: - -The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces. - -The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing either the words "Bitstream" or the word "Vera". - -This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names. - -The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. - -Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org. \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/DejaVuSans.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/DejaVuSans.ttf deleted file mode 100644 index e5f7eecce4..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/DejaVuSans.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NOTICE.txt deleted file mode 100644 index afc7fd35ee..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansMyanmar-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | -| DejaVuSans.ttf | BitstreamCopyright | BitstreamCopyright.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NotoSansMyanmar-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NotoSansMyanmar-Regular.ttf deleted file mode 100644 index e70e237f6d..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/NotoSansMyanmar-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/NOTICE.txt deleted file mode 100644 index 100ccdd875..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| Padauk-Regular.ttf | OFL-1.1 | LICENSE_OFL.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NOTICE.txt deleted file mode 100644 index 8b5b8a573f..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoNaskhArabic-Regular | OFL-1.1 | LICENSE_OFL.txt | In development version of font based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" -| NotoSansKhmer-Regular | OFL-1.1 | LICENSE_OFL.txt | In development version of font based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NOTICE.txt deleted file mode 100644 index b7e8065f2b..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansMyanmar-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NotoSansMyanmar-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NotoSansMyanmar-Regular.ttf deleted file mode 100644 index e70e237f6d..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType7Test/NotoSansMyanmar-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NOTICE.txt deleted file mode 100644 index 87fefad666..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NOTICE.txt +++ /dev/null @@ -1,4 +0,0 @@ -Please notice that the following fonts are used with the mentioned below licenses. - -* NotoSansMyanmar-Regular - SIL Open Font License v1.10 (obtained from https://fonts.google.com/specimen/Noto+Sans) -* Padauk-Regular.ttf - SIL Open Font License v1.1 (obtained from https://fonts.google.com/specimen/Padauk) diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NotoSansMyanmar-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NotoSansMyanmar-Regular.ttf deleted file mode 100644 index e70e237f6d..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/NotoSansMyanmar-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/Padauk-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/Padauk-Regular.ttf deleted file mode 100644 index c5a3c599df..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType8Test/Padauk-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType4Test/DejaVuSansMono.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType4Test/DejaVuSansMono.ttf deleted file mode 100644 index f5786022f1..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType4Test/DejaVuSansMono.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/NOTICE.txt deleted file mode 100644 index 4a39c514a1..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -Please notice that the following fonts are used with the mentioned below licenses. - -* Padauk-Regular.ttf - SIL Open Font License v1.1 (obtained from https://fonts.google.com/specimen/Padauk) diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/Padauk-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/Padauk-Regular.ttf deleted file mode 100644 index c5a3c599df..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/GsubLookupType6Test/Padauk-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/NOTICE.txt deleted file mode 100644 index 883e9ad309..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -This software uses the following test resources under the following licenses: -| FreeSans | GPL | https://www.gnu.org/licenses | -| FreeSansBold | GPL | https://www.gnu.org/licenses | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NOTICE.txt deleted file mode 100644 index b7e8065f2b..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansMyanmar-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NotoSansMyanmar-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NotoSansMyanmar-Regular.ttf deleted file mode 100644 index e70e237f6d..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeFontTableReaderTest/NotoSansMyanmar-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/LICENSE_OFL.txt b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/NOTICE.txt deleted file mode 100644 index 8ecdd0e60d..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| Padauk-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/Padauk-Regular.ttf b/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/Padauk-Regular.ttf deleted file mode 100644 index c5a3c599df..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/otf/OpenTypeGdefTableReaderTest/Padauk-Regular.ttf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NOTICE.txt b/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NOTICE.txt deleted file mode 100644 index a737d88707..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NOTICE.txt +++ /dev/null @@ -1,8 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansJP-Regular_charsetDataFormat0.otf | OFL-1.1 | OFL.txt | Downloaded from https://fonts.google.com/noto/specimen/Noto+Sans+JP on 23.03.2022 -| NotoSansTC-Regular.otf | OFL-1.1 | OFL.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSansSC-Regular.otf | OFL-1.1 | OFL.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSansCJKjp-Bold.otf | OFL-1.1 | OFL.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSans-Regular.ttf | OFL-1.1 | OFL.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" -| Puritan2 | OFL-1.1 | OFL.txt | -| glyphs.ttf, glyphs-fmt-6.ttf | MIT | Derived from https://github.com/RazrFalcon/ttf-parser/tree/337e7d1c08b06478a84c4345f4f289fc2cb9210c/tests/fonts-src | diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/OFL.txt b/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/OFL.txt deleted file mode 100644 index 77b17316cf..0000000000 --- a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/OFL.txt +++ /dev/null @@ -1,91 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/Puritan2.otf b/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/Puritan2.otf deleted file mode 100644 index e4c7eb15df..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/Puritan2.otf and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset1.ttf b/io/src/test/resources/com/itextpdf/io/font/subset1.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset1.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset1.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset2.ttf b/io/src/test/resources/com/itextpdf/io/font/subset2.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset2.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset2.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansCJKjpBoldNoUsedGlyphs.cff b/io/src/test/resources/com/itextpdf/io/font/subsetNotoSansCJKjpBoldNoUsedGlyphs.cff similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansCJKjpBoldNoUsedGlyphs.cff rename to io/src/test/resources/com/itextpdf/io/font/subsetNotoSansCJKjpBoldNoUsedGlyphs.cff diff --git a/io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff b/io/src/test/resources/com/itextpdf/io/font/subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff rename to io/src/test/resources/com/itextpdf/io/font/subsetNotoSansCJKjpBoldTwoUsedGlyphs.cff diff --git a/io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansJPRegularOneUsedGlyph.cff b/io/src/test/resources/com/itextpdf/io/font/subsetNotoSansJPRegularOneUsedGlyph.cff similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/CFFFontSubsetIntegrationTest/subsetNotoSansJPRegularOneUsedGlyph.cff rename to io/src/test/resources/com/itextpdf/io/font/subsetNotoSansJPRegularOneUsedGlyph.cff diff --git a/io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/subsetWithoutGlyfTable.ttf b/io/src/test/resources/com/itextpdf/io/font/subsetWithoutGlyfTable.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/OpenTypeParserTest/subsetWithoutGlyfTable.ttf rename to io/src/test/resources/com/itextpdf/io/font/subsetWithoutGlyfTable.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subsetWithoutOsTable.ttf b/io/src/test/resources/com/itextpdf/io/font/subsetWithoutOsTable.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subsetWithoutOsTable.ttf rename to io/src/test/resources/com/itextpdf/io/font/subsetWithoutOsTable.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_abc.ttf b/io/src/test/resources/com/itextpdf/io/font/subset_abc.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_abc.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset_abc.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_abc_def_xyz.ttf b/io/src/test/resources/com/itextpdf/io/font/subset_abc_def_xyz.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_abc_def_xyz.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset_abc_def_xyz.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_def.ttf b/io/src/test/resources/com/itextpdf/io/font/subset_def.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_def.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset_def.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_xyz.ttf b/io/src/test/resources/com/itextpdf/io/font/subset_xyz.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/TrueTypeFontIntegrationTest/subset_xyz.ttf rename to io/src/test/resources/com/itextpdf/io/font/subset_xyz.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.pfm b/io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.pfm deleted file mode 100644 index 76b705d27c..0000000000 Binary files a/io/src/test/resources/com/itextpdf/io/font/type1/testPackage/cmr10.pfm and /dev/null differ diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-checksum-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-checksum-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-checksum-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-checksum-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-checksum-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-checksum-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-checksum-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-checksum-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-loca-format-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-loca-format-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-loca-format-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-loca-format-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-loca-format-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-loca-format-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-loca-format-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-loca-format-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-003.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-003.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-003.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-003.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-004.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-004.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-004.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-004.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-005.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-005.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-005.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-005.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-006.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-006.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-006.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-006.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-007.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-007.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-007.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-007.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-008.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-008.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-008.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-008.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-009.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-009.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-009.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-009.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-010.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-010.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-010.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-010.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-011.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-011.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-011.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-011.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-012.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-012.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-012.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-012.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-013.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-013.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-013.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-013.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-014.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-014.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-014.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-014.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-015.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-015.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-015.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-015.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-016.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-016.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-016.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-016.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-017.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-017.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-017.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-017.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-018.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-018.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-018.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-018.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-019.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-019.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-019.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-019.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-020.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-020.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-020.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-020.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-021.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-021.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-021.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-021.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-022.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-022.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-022.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-022.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-023.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-023.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-023.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-023.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-024.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-024.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-024.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-024.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-025.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-025.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-025.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-025.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-026.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-026.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-026.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-026.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-027.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-027.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-027.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-027.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-028.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-028.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-028.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-028.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-029.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-029.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-029.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-029.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-030.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-030.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-030.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-030.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-031.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-031.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-031.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-031.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-032.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-032.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-032.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-032.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-033.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-033.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-033.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-033.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-034.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-034.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-034.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-034.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-035.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-035.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-035.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-035.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-036.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-036.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-036.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-036.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-037.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-037.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-037.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-037.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-038.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-038.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-038.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-038.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-039.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-039.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-039.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-039.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-040.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-040.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-040.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-040.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-041.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-041.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-041.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-041.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-042.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-042.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-042.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-042.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-043.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-043.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-043.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-043.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-044.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-044.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-044.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-044.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-045.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-045.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-045.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-045.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-046.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-046.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-046.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-046.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-047.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-047.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-047.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-047.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-048.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-048.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-048.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-048.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-049.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-049.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-049.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-049.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-050.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-050.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-050.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-050.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-051.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-051.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-051.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-051.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-052.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-052.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-052.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-052.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-053.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-053.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-053.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-053.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-054.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-054.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-054.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-054.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-055.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-055.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-055.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-055.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-056.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-056.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-056.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-056.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-057.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-057.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-057.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-057.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-058.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-058.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-058.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-058.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-059.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-059.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-059.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-059.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-060.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-060.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-060.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-060.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-061.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-061.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-061.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-061.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-062.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-062.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-062.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-062.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-063.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-063.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-063.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-063.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-064.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-064.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-064.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-064.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-065.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-065.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-065.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-065.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-066.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-066.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-066.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-066.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-067.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-067.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-067.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-067.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-068.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-068.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-068.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-068.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-069.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-069.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-069.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-069.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-070.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-070.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-070.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-070.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-071.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-071.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-071.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-071.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-072.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-072.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-072.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-072.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-073.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-073.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-073.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-073.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-074.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-074.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-074.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-074.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-075.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-075.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-075.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-075.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-076.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-076.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-076.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-076.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-077.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-077.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-077.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-077.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-078.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-078.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-078.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-078.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-079.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-079.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-079.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-079.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-080.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-080.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-080.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-080.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-081.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-081.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-081.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-081.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-082.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-082.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-082.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-082.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-083.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-083.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-083.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-083.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-084.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-084.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-084.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-084.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-085.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-085.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-085.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-085.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-086.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-086.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-086.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-086.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-087.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-087.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-087.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-087.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-088.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-088.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-088.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-088.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-089.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-089.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-089.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-089.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-090.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-090.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-090.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-090.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-091.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-091.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-091.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-091.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-092.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-092.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-092.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-092.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-093.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-093.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-093.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-093.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-094.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-094.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-094.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-094.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-095.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-095.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-095.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-095.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-096.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-096.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-096.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-096.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-097.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-097.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-097.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-097.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-098.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-098.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-098.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-098.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-099.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-099.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-099.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-099.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-100.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-100.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-100.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-100.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-101.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-101.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-101.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-101.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-102.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-102.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-102.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-102.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-103.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-103.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-103.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-103.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-104.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-104.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-104.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-104.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-105.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-105.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-105.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-105.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-106.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-106.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-106.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-106.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-107.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-107.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-107.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-107.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-108.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-108.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-108.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-108.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-109.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-109.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-109.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-109.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-110.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-110.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-110.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-110.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-111.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-111.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-111.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-111.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-112.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-112.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-112.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-112.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-113.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-113.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-113.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-113.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-114.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-114.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-114.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-114.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-115.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-115.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-115.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-115.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-116.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-116.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-116.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-116.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-117.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-117.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-117.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-117.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-118.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-118.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-118.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-118.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-119.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-119.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-119.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-119.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-120.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-120.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-120.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-120.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-121.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-121.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-121.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-121.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-122.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-122.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-122.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-122.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-123.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-123.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-123.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-123.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-124.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-124.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-124.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-124.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-125.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-125.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-125.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-125.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-126.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-126.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-126.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-126.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-127.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-127.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-127.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-127.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-128.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-128.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-128.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-128.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-129.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-129.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-129.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-129.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-130.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-130.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-130.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-130.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-131.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-131.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-131.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-131.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-132.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-132.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-132.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-132.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-133.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-133.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-133.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-133.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-134.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-134.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-134.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-134.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-135.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-135.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-135.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-135.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-136.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-136.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-136.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-136.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-137.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-137.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-137.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-137.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-138.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-138.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-138.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-138.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-139.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-139.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-139.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-139.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-140.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-140.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-140.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-140.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-141.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-141.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-141.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-141.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-142.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-142.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-142.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-142.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-143.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-143.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-143.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-143.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-144.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-144.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-144.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-144.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-145.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-145.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-145.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-145.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-146.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-146.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-146.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-146.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-147.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-147.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-147.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-147.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-148.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-148.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-148.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-148.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-149.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-149.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-149.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-149.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-150.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-150.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-150.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-150.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-151.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-151.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-151.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-151.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-152.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-152.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-152.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-152.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-153.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-153.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-153.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-153.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-154.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-154.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-154.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-154.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-155.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-155.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/cmp_validation-off-155.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/cmp_validation-off-155.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-checksum-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-checksum-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-checksum-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-checksum-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-checksum-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-checksum-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-checksum-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-checksum-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-loca-format-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-loca-format-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-loca-format-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-loca-format-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-loca-format-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-loca-format-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-loca-format-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-loca-format-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-005.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-005.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-005.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-005.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-006.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-006.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-006.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-006.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-007.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-007.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-007.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-007.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-008.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-008.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-008.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-008.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-009.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-009.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-009.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-009.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-010.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-010.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-010.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-010.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-011.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-011.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-011.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-011.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-012.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-012.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-012.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-012.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-013.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-013.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-013.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-013.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-014.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-014.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-014.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-014.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-015.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-015.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-015.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-015.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-016.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-016.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-016.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-016.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-017.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-017.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-017.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-017.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-018.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-018.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-018.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-018.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-019.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-019.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-019.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-019.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-020.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-020.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-020.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-020.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-021.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-021.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-021.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-021.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-022.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-022.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-022.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-022.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-023.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-023.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-023.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-023.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-024.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-024.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-024.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-024.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-025.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-025.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-025.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-025.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-026.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-026.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-026.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-026.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-027.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-027.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-027.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-027.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-028.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-028.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-028.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-028.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-029.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-029.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-029.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-029.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-030.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-030.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-030.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-030.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-031.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-031.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-031.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-031.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-032.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-032.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-032.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-032.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-033.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-033.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-033.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-033.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-034.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-034.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-034.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-034.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-035.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-035.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-035.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-035.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-036.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-036.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-036.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-036.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-037.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-037.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-037.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-037.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-038.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-038.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-038.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-038.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-039.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-039.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-039.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-039.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-040.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-040.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-040.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-040.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-041.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-041.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-041.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-041.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-042.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-042.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-042.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-042.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-043.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-043.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-043.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-043.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-044.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-044.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-044.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-044.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-045.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-045.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-045.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-045.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-046.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-046.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-046.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-046.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-047.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-047.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-047.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-047.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-048.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-048.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-048.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-048.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-049.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-049.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-049.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-049.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-050.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-050.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-050.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-050.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-051.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-051.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-051.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-051.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-052.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-052.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-052.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-052.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-053.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-053.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-053.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-053.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-054.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-054.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-054.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-054.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-055.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-055.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-055.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-055.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-056.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-056.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-056.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-056.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-057.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-057.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-057.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-057.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-058.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-058.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-058.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-058.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-059.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-059.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-059.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-059.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-060.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-060.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-060.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-060.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-061.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-061.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-061.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-061.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-062.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-062.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-062.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-062.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-063.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-063.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-063.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-063.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-064.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-064.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-064.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-064.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-065.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-065.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-065.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-065.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-066.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-066.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-066.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-066.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-067.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-067.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-067.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-067.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-068.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-068.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-068.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-068.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-069.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-069.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-069.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-069.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-070.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-070.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-070.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-070.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-071.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-071.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-071.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-071.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-072.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-072.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-072.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-072.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-073.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-073.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-073.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-073.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-074.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-074.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-074.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-074.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-075.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-075.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-075.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-075.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-076.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-076.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-076.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-076.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-077.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-077.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-077.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-077.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-078.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-078.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-078.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-078.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-079.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-079.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-079.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-079.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-080.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-080.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-080.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-080.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-081.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-081.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-081.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-081.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-082.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-082.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-082.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-082.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-083.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-083.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-083.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-083.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-084.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-084.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-084.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-084.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-085.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-085.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-085.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-085.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-086.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-086.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-086.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-086.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-087.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-087.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-087.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-087.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-088.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-088.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-088.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-088.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-089.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-089.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-089.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-089.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-090.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-090.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-090.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-090.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-091.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-091.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-091.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-091.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-092.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-092.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-092.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-092.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-093.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-093.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-093.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-093.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-094.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-094.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-094.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-094.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-095.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-095.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-095.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-095.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-096.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-096.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-096.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-096.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-097.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-097.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-097.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-097.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-098.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-098.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-098.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-098.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-099.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-099.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-099.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-099.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-100.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-100.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-100.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-100.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-101.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-101.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-101.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-101.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-102.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-102.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-102.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-102.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-103.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-103.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-103.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-103.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-104.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-104.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-104.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-104.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-105.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-105.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-105.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-105.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-106.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-106.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-106.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-106.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-107.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-107.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-107.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-107.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-108.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-108.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-108.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-108.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-109.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-109.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-109.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-109.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-110.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-110.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-110.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-110.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-111.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-111.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-111.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-111.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-112.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-112.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-112.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-112.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-113.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-113.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-113.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-113.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-114.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-114.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-114.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-114.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-115.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-115.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-115.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-115.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-116.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-116.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-116.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-116.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-117.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-117.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-117.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-117.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-118.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-118.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-118.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-118.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-119.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-119.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-119.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-119.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-120.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-120.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-120.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-120.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-121.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-121.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-121.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-121.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-122.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-122.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-122.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-122.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-123.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-123.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-123.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-123.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-124.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-124.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-124.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-124.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-125.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-125.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-125.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-125.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-126.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-126.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-126.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-126.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-127.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-127.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-127.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-127.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-128.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-128.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-128.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-128.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-129.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-129.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-129.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-129.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-130.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-130.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-130.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-130.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-131.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-131.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-131.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-131.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-132.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-132.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-132.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-132.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-133.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-133.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-133.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-133.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-134.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-134.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-134.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-134.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-135.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-135.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-135.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-135.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-136.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-136.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-136.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-136.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-137.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-137.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-137.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-137.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-138.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-138.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-138.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-138.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-139.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-139.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-139.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-139.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-140.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-140.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-140.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-140.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-141.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-141.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-141.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-141.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-142.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-142.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-142.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-142.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-143.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-143.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-143.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-143.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-144.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-144.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-144.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-144.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-145.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-145.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-145.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-145.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-146.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-146.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-146.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-146.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-147.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-147.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-147.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-147.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-148.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-148.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-148.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-148.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-149.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-149.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-149.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-149.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-150.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-150.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-150.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-150.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-151.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-151.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-151.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-151.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-152.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-152.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-152.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-152.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-153.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-153.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-153.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-153.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-154.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-154.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-154.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-154.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-155.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-155.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/decoder/validation-off-155.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/decoder/validation-off-155.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-005.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-005.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-005.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-005.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-006.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-006.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-006.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-006.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-007.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-007.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-extraneous-data-007.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-extraneous-data-007.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-absent-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-absent-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-absent-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-absent-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-metadata-padding-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-metadata-padding-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-ordering-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-ordering-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-ordering-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-ordering-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-ordering-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-ordering-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-ordering-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-ordering-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-private-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-private-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-private-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-private-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-private-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-private-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/blocks-private-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/blocks-private-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-003.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-003.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_blocks-metadata-padding-003.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_blocks-metadata-padding-003.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_directory-table-order-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_directory-table-order-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_directory-table-order-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_directory-table-order-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_directory-table-order-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_directory-table-order-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_directory-table-order-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_directory-table-order-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-flavor-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-flavor-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-flavor-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-flavor-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-flavor-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-flavor-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-flavor-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-flavor-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-reserved-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-reserved-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_header-reserved-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_header-reserved-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-glyf-composite-bbox-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-glyf-composite-bbox-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-glyf-composite-bbox-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-glyf-composite-bbox-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-hmtx-transform-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-hmtx-transform-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-hmtx-transform-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-hmtx-transform-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-hmtx-transform-003.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-hmtx-transform-003.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-hmtx-transform-003.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-hmtx-transform-003.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-003.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-003.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_tabledata-loca-size-003.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_tabledata-loca-size-003.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-001.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-001.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-001.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-001.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-002.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-002.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-002.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-002.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-003.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-003.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-003.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-003.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-004.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-004.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-004.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-004.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-005.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-005.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-005.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-005.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-006.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-006.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-006.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-006.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-007.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-007.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-007.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-007.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-008.ttf b/io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-008.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/cmp_valid-008.ttf rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/cmp_valid-008.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/directory-table-order-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/directory-table-order-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/directory-table-order-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/directory-table-order-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/directory-table-order-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/directory-table-order-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/directory-table-order-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/directory-table-order-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-flavor-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-flavor-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-flavor-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-flavor-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-flavor-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-flavor-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-flavor-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-flavor-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-length-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-length-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-length-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-length-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-length-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-length-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-length-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-length-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-numTables-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-numTables-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-numTables-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-numTables-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-reserved-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-reserved-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-reserved-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-reserved-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-signature-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/header-signature-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/header-signature-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/header-signature-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-brotli-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-brotli-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-brotli-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-brotli-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-decompressed-length-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-decompressed-length-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-extraneous-data-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-extraneous-data-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-extraneous-data-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-extraneous-data-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-glyf-composite-bbox-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-glyf-composite-bbox-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-glyf-composite-bbox-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-glyf-composite-bbox-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-hmtx-transform-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-hmtx-transform-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-loca-size-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-loca-size-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-glyf-loca-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-glyf-loca-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-glyf-loca-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-glyf-loca-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-glyf-loca-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-glyf-loca-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-glyf-loca-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-glyf-loca-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-length-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-length-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-length-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-length-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-length-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-length-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/tabledata-transform-length-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/tabledata-transform-length-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-001.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-001.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-001.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-001.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-002.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-002.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-002.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-002.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-003.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-003.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-003.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-003.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-004.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-004.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-004.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-004.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-005.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-005.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-005.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-005.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-006.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-006.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-006.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-006.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-007.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-007.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-007.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-007.woff2 diff --git a/io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-008.woff2 b/io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-008.woff2 similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/woff2/w3c/format/valid-008.woff2 rename to io/src/test/resources/com/itextpdf/io/font/w3c/format/valid-008.woff2 diff --git a/itext7core/pom.xml b/itext7core/pom.xml index 55b350b946..3e3683ae4c 100644 --- a/itext7core/pom.xml +++ b/itext7core/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.itextpdf itext7-core - 9.5.0 + 9.6.0-SNAPSHOT pom iText 7 Core A Free Java-PDF library diff --git a/itextcore/pom.xml b/itextcore/pom.xml index e23659f8da..2c1da42701 100644 --- a/itextcore/pom.xml +++ b/itextcore/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.itextpdf itext-core - 9.5.0 + 9.6.0-SNAPSHOT pom iText Core A Free Java-PDF library diff --git a/kernel/pom.xml b/kernel/pom.xml index 53d2b35064..11873c33fc 100644 --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT kernel diff --git a/kernel/src/main/java/com/itextpdf/kernel/actions/data/ITextCoreProductData.java b/kernel/src/main/java/com/itextpdf/kernel/actions/data/ITextCoreProductData.java index 6eedc6cd7e..6f05f2fc2b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/actions/data/ITextCoreProductData.java +++ b/kernel/src/main/java/com/itextpdf/kernel/actions/data/ITextCoreProductData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -30,9 +30,9 @@ This file is part of the iText (R) project. */ public final class ITextCoreProductData { private static final String CORE_PUBLIC_PRODUCT_NAME = "Core"; - private static final String CORE_VERSION = "9.5.0"; + private static final String CORE_VERSION = "9.6.0-SNAPSHOT"; private static final int CORE_COPYRIGHT_SINCE = 2000; - private static final int CORE_COPYRIGHT_TO = 2025; + private static final int CORE_COPYRIGHT_TO = 2026; private static final ProductData ITEXT_PRODUCT_DATA = new ProductData(CORE_PUBLIC_PRODUCT_NAME, ProductNameConstant.ITEXT_CORE, CORE_VERSION, CORE_COPYRIGHT_SINCE, CORE_COPYRIGHT_TO); diff --git a/kernel/src/main/java/com/itextpdf/kernel/actions/events/AddFingerPrintEvent.java b/kernel/src/main/java/com/itextpdf/kernel/actions/events/AddFingerPrintEvent.java index 76fec3e422..9b3767fce6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/actions/events/AddFingerPrintEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/actions/events/AddFingerPrintEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEvent.java b/kernel/src/main/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEvent.java index 0fb27cb64f..16a2dd9546 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/actions/events/ITextCoreProductEvent.java b/kernel/src/main/java/com/itextpdf/kernel/actions/events/ITextCoreProductEvent.java index da6c114b82..8a8f4a7358 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/actions/events/ITextCoreProductEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/actions/events/ITextCoreProductEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEvent.java b/kernel/src/main/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEvent.java index 2811e8a33f..1aeb0a529b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/CalGray.java b/kernel/src/main/java/com/itextpdf/kernel/colors/CalGray.java index 490056795a..981ced9015 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/CalGray.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/CalGray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/CalRgb.java b/kernel/src/main/java/com/itextpdf/kernel/colors/CalRgb.java index 8315b328c0..f887b6051d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/CalRgb.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/CalRgb.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/Color.java b/kernel/src/main/java/com/itextpdf/kernel/colors/Color.java index 8222931e2e..7ed893fd52 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/Color.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/Color.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/ColorConstants.java b/kernel/src/main/java/com/itextpdf/kernel/colors/ColorConstants.java index b903db323d..3bf8ed367b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/ColorConstants.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/ColorConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceCmyk.java b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceCmyk.java index 84058816f3..4c2f796357 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceCmyk.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceCmyk.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceGray.java b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceGray.java index 3d711bfef2..34a31a3a0c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceGray.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceGray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceN.java b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceN.java index f49690ad52..31679f5e63 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceN.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceN.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceRgb.java b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceRgb.java index 04365384dd..16d3653447 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceRgb.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/DeviceRgb.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/IccBased.java b/kernel/src/main/java/com/itextpdf/kernel/colors/IccBased.java index 66bf94c736..319d0ca59b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/IccBased.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/IccBased.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/Indexed.java b/kernel/src/main/java/com/itextpdf/kernel/colors/Indexed.java index 2f454e18a2..a3cf9c9ff8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/Indexed.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/Indexed.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/Lab.java b/kernel/src/main/java/com/itextpdf/kernel/colors/Lab.java index 3f9e8683e4..b381118360 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/Lab.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/Lab.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/PatternColor.java b/kernel/src/main/java/com/itextpdf/kernel/colors/PatternColor.java index 3289c1ea2a..522ceca27c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/PatternColor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/PatternColor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/Separation.java b/kernel/src/main/java/com/itextpdf/kernel/colors/Separation.java index dc234416d9..87b28ee489 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/Separation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/Separation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/WebColors.java b/kernel/src/main/java/com/itextpdf/kernel/colors/WebColors.java index 24ce922c53..f52ee3c3ff 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/WebColors.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/WebColors.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/AbstractLinearGradientBuilder.java b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/AbstractLinearGradientBuilder.java index f90becf833..ba0b91204f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/AbstractLinearGradientBuilder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/AbstractLinearGradientBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientColorStop.java b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientColorStop.java index 46ab63bb58..d059ff229c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientColorStop.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientColorStop.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientSpreadMethod.java b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientSpreadMethod.java index 7fcc27a81e..00f9ffdf1e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientSpreadMethod.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/GradientSpreadMethod.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilder.java b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilder.java index 2ff09a4d66..695bd0be1a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilder.java b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilder.java index 74cacfe589..20ed3ebd51 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/BackgroundColorInfo.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/BackgroundColorInfo.java new file mode 100644 index 0000000000..625eb7c75a --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/BackgroundColorInfo.java @@ -0,0 +1,50 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.Color; +import com.itextpdf.kernel.geom.Path; + +/** + * Represents rendering information for a background element in contrast analysis. + *

+ * This class extends {@link ColorInfo} to specifically represent + * background shapes and their colors, which are used to calculate contrast ratios + * against text elements for accessibility compliance. + *

+ * Background elements include filled paths, rectangles, and other non-text content + * that may appear behind text on a PDF page. + */ +public class BackgroundColorInfo extends ColorInfo { + + /** + * Constructs a new {@link BackgroundColorInfo} with the specified color and path. + * + * @param color the fill color of the background element + * @param path the geometric path defining the shape and position of the background element + */ + public BackgroundColorInfo(Color color, Path path) { + super(color, path); + } + +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastCalculator.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastCalculator.java new file mode 100644 index 0000000000..0ebc1374d4 --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastCalculator.java @@ -0,0 +1,182 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.DeviceRgb; + +/** + * Utility class for calculating color contrast ratios according to the Web Content Accessibility Guidelines (WCAG) 2.1. + *

+ * The contrast ratio ranges from 1:1 (no contrast) to 21:1 (maximum contrast between black and white). + */ +public final class ColorContrastCalculator { + + private static final double LUMINANCE_OFFSET = 0.05; + private static final double SRGB_LINEARIZATION_THRESHOLD = 0.04045; + private static final double SRGB_LINEARIZATION_DIVISOR = 12.92; + private static final double SRGB_LINEARIZATION_COEFFICIENT = 1.055; + private static final double SRGB_LINEARIZATION_OFFSET = 0.055; + private static final double SRGB_LINEARIZATION_EXPONENT = 2.4; + + // ITU-R BT.709 coefficients for relative luminance calculation + private static final double RED_LUMINANCE_COEFFICIENT = 0.2126; + private static final double GREEN_LUMINANCE_COEFFICIENT = 0.7152; + private static final double BLUE_LUMINANCE_COEFFICIENT = 0.0722; + + private static final int RED_COMPONENT_INDEX = 0; + private static final int GREEN_COMPONENT_INDEX = 1; + private static final int BLUE_COMPONENT_INDEX = 2; + + /** + * Private constructor to prevent instantiation of this utility class. + */ + private ColorContrastCalculator() { + // Utility class + } + + /** + * Calculates the contrast ratio between two colors according to WCAG 2.1 guidelines. + *

+ * The contrast ratio is calculated as (L1 + 0.05) / (L2 + 0.05), where L1 is the relative + * luminance of the lighter color and L2 is the relative luminance of the darker color. + *

+ * The resulting value ranges from 1:1 (identical colors) to 21:1 (black and white). + * + * @param color1 the first color to compare, must not be {@code null} + * @param color2 the second color to compare, must not be {@code null} + * + * @return the contrast ratio between the two colors, ranging from 1.0 to 21.0 + * + * @throws IllegalArgumentException if either color is {@code null} + */ + public static double contrastRatio(DeviceRgb color1, DeviceRgb color2) { + if (color1 == null || color2 == null) { + throw new IllegalArgumentException("Colors must not be null"); + } + + double[] components1 = extractRgbComponents(color1); + double[] components2 = extractRgbComponents(color2); + + return contrastRatio( + components1[RED_COMPONENT_INDEX], components1[GREEN_COMPONENT_INDEX], components1[BLUE_COMPONENT_INDEX], + components2[RED_COMPONENT_INDEX], components2[GREEN_COMPONENT_INDEX], + components2[BLUE_COMPONENT_INDEX]); + } + + /** + * Calculates the contrast ratio between two RGB colors according to WCAG 2.1 guidelines. + *

+ * The contrast ratio is calculated as (L1 + 0.05) / (L2 + 0.05), where L1 is the relative + * luminance of the lighter color and L2 is the relative luminance of the darker color. + * + * @param r1 red component of the first color (0-1) + * @param g1 green component of the first color (0-1) + * @param b1 blue component of the first color (0-1) + * @param r2 red component of the second color (0-1) + * @param g2 green component of the second color (0-1) + * @param b2 blue component of the second color (0-1) + * + * @return the contrast ratio between the two colors, ranging from 1.0 to 21.0 + */ + public static double contrastRatio( + double r1, double g1, double b1, + double r2, double g2, double b2) { + double l1 = luminance(r1, g1, b1); + double l2 = luminance(r2, g2, b2); + double lighter = Math.max(l1, l2); + double darker = Math.min(l1, l2); + return (lighter + LUMINANCE_OFFSET) / (darker + LUMINANCE_OFFSET); + } + + /** + * Extracts the RGB components from a DeviceRgb color. + * + * @param color the color to extract components from + * + * @return an array containing the red, green, and blue components (0-1) + */ + private static double[] extractRgbComponents(DeviceRgb color) { + float[] colorValues = color.getColorValue(); + return new double[] { + clampToRgbRange(colorValues[RED_COMPONENT_INDEX]), + clampToRgbRange(colorValues[GREEN_COMPONENT_INDEX]), + clampToRgbRange(colorValues[BLUE_COMPONENT_INDEX]) + }; + } + + /** + * Clamps an integer value to the valid RGB range of 0-255. + * + * @param value the value to clamp + * + * @return the clamped value, guaranteed to be between 0 and 1 inclusive + */ + private static double clampToRgbRange(float value) { + if (value < 0) { + return 0; + } + if (value > 1) { + return 1; + } + return value; + } + + /** + * Converts an sRGB color channel value to linear RGB. + *

+ * This implements the inverse of the sRGB gamma correction according to the sRGB specification. + * Values below the threshold use a linear transformation, while values above use a power function. + * + * @param channel the color channel value in the range 0-1 + * + * @return the linearized channel value in the range 0.0-1.0 + */ + private static double linearize(double channel) { + return (channel <= SRGB_LINEARIZATION_THRESHOLD) + ? (channel / SRGB_LINEARIZATION_DIVISOR) + : Math.pow((channel + SRGB_LINEARIZATION_OFFSET) / SRGB_LINEARIZATION_COEFFICIENT, + SRGB_LINEARIZATION_EXPONENT); + } + + /** + * Calculates the relative luminance of an RGB color according to WCAG 2.1. + *

+ * The relative luminance is calculated using the ITU-R BT.709 coefficients: + * L = 0.2126 * R + 0.7152 * G + 0.0722 * B, where R, G, and B are the linearized color components. + * + * @param r red component (0-1) + * @param g green component (0-1) + * @param b blue component (0-1) + * + * @return the relative luminance in the range 0.0 (black) to 1.0 (white) + */ + private static double luminance(double r, double g, double b) { + double rLin = linearize(r); + double gLin = linearize(g); + double bLin = linearize(b); + return RED_LUMINANCE_COEFFICIENT * rLin + + GREEN_LUMINANCE_COEFFICIENT * gLin + + BLUE_LUMINANCE_COEFFICIENT * bLin; + } + +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastChecker.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastChecker.java new file mode 100644 index 0000000000..a3a651a956 --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorContrastChecker.java @@ -0,0 +1,269 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.contrast.ContrastResult.OverlappingArea; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; +import com.itextpdf.kernel.pdf.PdfObject; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.validation.IValidationChecker; +import com.itextpdf.kernel.validation.IValidationContext; +import com.itextpdf.kernel.validation.ValidationType; +import com.itextpdf.kernel.validation.context.PdfPageValidationContext; + +import java.util.List; + +/** + * A validation checker that analyzes color contrast in PDF documents to ensure compliance + * with Web Content Accessibility Guidelines (WCAG) standards. + *

+ * This checker validates the contrast ratio between text and background colors to ensure + * readability for users with visual impairments. It supports both WCAG 2.0 Level AA and + * Level AAA conformance levels. + *

+ * Features: @see {@link ContrastAnalyzer} for details. + *

+ * Current Limitations @see {@link ContrastAnalyzer} for details. + */ +public class ColorContrastChecker implements IValidationChecker { + + private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(ColorContrastChecker.class); + + /** + * Flag indicating whether to analyze contrast at the individual glyph level. + * When true, each glyph is analyzed separately for precise contrast checking. + */ + private final boolean checkIndividualGlyphs; + /** + * Flag indicating whether to throw an exception when contrast requirements are not met. + * When false, warnings are logged instead. + */ + private final boolean throwExceptionOnFailure; + private double minimalPercentualCoverage = 0.1; + /** + * Flag indicating whether to check for WCAG AA compliance. + * WCAG AA requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text. + */ + private boolean checkWcagAA; + + /** + * Flag indicating whether to check for WCAG AAA compliance. + * WCAG AAA requires a contrast ratio of at least 7:1 for normal text and 4.5:1 for large text. + */ + private boolean checkWcagAAA; + + /** + * Creates a new ColorContrastChecker with the specified configuration. + * + * @param checkIndividualGlyphs if {@code true}, contrast is checked at the individual glyph level; + * if {@code false}, contrast is checked at the text block level. + * Individual glyph checking is more precise but may impact performance. + * @param throwExceptionOnFailure if {@code true}, a {@link PdfException} is thrown when contrast + * requirements are not met; if {@code false}, warnings are logged instead. + */ + public ColorContrastChecker(boolean checkIndividualGlyphs, boolean throwExceptionOnFailure) { + this.checkIndividualGlyphs = checkIndividualGlyphs; + this.throwExceptionOnFailure = throwExceptionOnFailure; + setCheckWcagAA(true); + setCheckWcagAAA(true); + setMinimalPercentualCoverage(0.1); + } + + /** + * Sets the minimal percentual coverage of text area that must be covered by a background + * element for its contrast ratio to be considered in the analysis. + *

+ * For example, if set to 0.1 (10%), only background elements that cover at least 10% of the + * text area will be included in the contrast analysis. This helps filter out insignificant backgrounds + * that do not meaningfully affect text readability. Like underlines or small decorative elements. + * + * @param minimalPercentualCoverage the minimal percentual coverage (between 0.0 and 1.0) + */ + public final void setMinimalPercentualCoverage(double minimalPercentualCoverage) { + if (minimalPercentualCoverage < 0.0 || minimalPercentualCoverage > 1.0) { + throw new IllegalArgumentException("Minimal percentual coverage must be a value between 0.0 and 1.0"); + } + this.minimalPercentualCoverage = minimalPercentualCoverage; + } + + /** + * Sets whether to check for WCAG AA compliance. + * WCAG AA requires a contrast ratio of at least 4.5:1 for normal text + * and 3:1 for large text (18pt+ or 14pt+ bold). + * + * @param checkWcagAA true to enable WCAG AA compliance checking, false to disable + * + * @return this ColorContrastChecker instance for method chaining + */ + public final ColorContrastChecker setCheckWcagAA(boolean checkWcagAA) { + this.checkWcagAA = checkWcagAA; + logWarningIfBothChecksDisabled(); + return this; + } + + /** + * Sets whether to check for WCAG AAA compliance. + * WCAG AAA requires a contrast ratio of at least 7:1 for normal text + * and 4.5:1 for large text (18pt+ or 14pt+ bold). + * + * @param checkWcagAAA true to enable WCAG AAA compliance checking, false to disable + * + * @return this ColorContrastChecker instance for method chaining + */ + public final ColorContrastChecker setCheckWcagAAA(boolean checkWcagAAA) { + this.checkWcagAAA = checkWcagAAA; + logWarningIfBothChecksDisabled(); + return this; + } + + /** + * Validates the given context for color contrast compliance. + *

+ * This method is called by the validation framework to check color contrast + * when a PDF page is being validated. It only processes validation contexts + * of type {@link ValidationType#PDF_PAGE}. + * + * @param validationContext the validation context containing the PDF page to validate + */ + @Override + public void validate(IValidationContext validationContext) { + if (validationContext.getType() == ValidationType.PDF_PAGE) { + PdfPageValidationContext pageContext = (PdfPageValidationContext) validationContext; + checkContrast(pageContext.getPage()); + } + } + + /** + * Determines if a PDF object is ready to be flushed to the output stream. + *

+ * This implementation always returns true as color contrast checking does not + * impose any restrictions on when objects can be flushed. + * + * @param object the PDF object to check + * + * @return always {@code true} + */ + @Override + public boolean isPdfObjectReadyToFlush(PdfObject object) { + return true; + } + + /** + * Logs a warning if both WCAG AA and AAA compliance checks are disabled. + * This helps alert users that no contrast validation will be performed. + */ + private void logWarningIfBothChecksDisabled() { + if (!checkWcagAA && !checkWcagAAA) { + LOGGER.warn(KernelLogMessageConstant.BOTH_WCAG_AA_AND_AAA_COMPLIANCE_CHECKS_DISABLED); + } + } + + /** + * Performs color contrast analysis on the specified PDF page. + *

+ * This method analyzes all text on the page and checks if it meets the enabled + * WCAG compliance levels (AA and/or AAA). For each non-compliant text element, + * it either throws a {@link PdfException} or logs a warning, depending on the + * configuration. + *

+ * The method skips processing entirely if both WCAG AA and AAA checks are disabled. + * + * @param page the PDF page to analyze for color contrast compliance + * + * @throws PdfException if throwExceptionOnFailure is true and non-compliant text is found + */ + private void checkContrast(PdfPage page) { + if (!checkWcagAA && !checkWcagAAA) { + // No checks enabled, skip processing + return; + } + List contrastResults = new ContrastAnalyzer(checkIndividualGlyphs).checkPageContrast(page); + for (ContrastResult contrastResult : contrastResults) { + TextColorInfo textContrastInformation = contrastResult.getTextRenderInfo(); + for (OverlappingArea overlappingArea : contrastResult.getOverlappingAreas()) { + if (overlappingArea.getOverlapRatio() < minimalPercentualCoverage) { + continue; + } + + // Only check compliance levels that are enabled + boolean isCompliantAAA = !checkWcagAAA || WCagChecker.isTextWcagAAACompliant( + textContrastInformation.getFontSize(), overlappingArea.getContrastRatio()); + boolean isCompliantAA = isCompliantAAA && (!checkWcagAA || WCagChecker.isTextWcagAACompliant( + textContrastInformation.getFontSize(), overlappingArea.getContrastRatio())); + + // Report only if at least one enabled check fails + if (!isCompliantAA || !isCompliantAAA) { + String message = generateMessage(isCompliantAAA, isCompliantAA, contrastResult, + overlappingArea.getContrastRatio()); + if (this.throwExceptionOnFailure) { + message = "Color contrast check failed: " + message; + throw new PdfException(message); + } else { + LOGGER.warn(message); + } + } + } + } + } + + private String generateMessage(boolean isCompliantAAA, boolean isCompliantAA, + ContrastResult contrastResult, double contrastRatio) { + TextColorInfo textContrastInformation = contrastResult.getTextRenderInfo(); + StringBuilder message = new StringBuilder(); + message.append("Page ").append(contrastResult.getPageNumber()).append(": "); + if (textContrastInformation.getText() != null) { + message.append("Text: '"); + message.append(textContrastInformation.getText()); + message.append("', "); + } + if (textContrastInformation.getParent() != null) { + message.append(" parent text: '"); + message.append(textContrastInformation.getParent()); + message.append("' "); + } + + message.append("with font size: ").append(contrastResult.getTextRenderInfo().getFontSize()).append(" pt "); + message.append("has contrast ratio: ").append(formatFloatWithoutStringFormat(contrastRatio)).append(". "); + + if (checkWcagAA && !isCompliantAA) { + message.append("It is not WCAG AA compliant. "); + } + if (checkWcagAAA && !isCompliantAAA) { + message.append("It is not WCAG AAA compliant. "); + } + return message.toString(); + + } + + private String formatFloatWithoutStringFormat(double value) { + //2 decimal places + long intValue = (long) value; + long decimalValue = (long) Math.round((value - intValue) * 100); + if (decimalValue < 10) { + return intValue + "." + "0" + decimalValue; + } + return intValue + "." + decimalValue; + + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfo.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfo.java new file mode 100644 index 0000000000..5fc000737f --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfo.java @@ -0,0 +1,72 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.Color; +import com.itextpdf.kernel.geom.Path; + +/** + * Abstract base class representing rendering information for contrast analysis. + *

+ * This class encapsulates the common properties shared by all render information types + * used in contrast checking: the color and geometric path of the rendered element. + *

+ * Subclasses should extend this class to represent specific types of rendered content, + * such as text or background elements. + */ +public abstract class ColorInfo { + private final Color color; + private final Path path; + + /** + * Constructs a new ContrastInformationRenderInfo with the specified color and path. + * + * @param color the color of the rendered element + * @param path the geometric path defining the shape and position of the rendered element + */ + public ColorInfo(Color color, Path path) { + this.color = color; + this.path = path; + } + + /** + * Gets the color of the rendered element. + * + * @return the color of this render information + */ + public Color getColor() { + return color; + } + + /** + * Gets the geometric path of the rendered element. + *

+ * The path defines the shape and position of the element on the page. + * + * @return the path of this render information + */ + public Path getPath() { + return path; + } + +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfoListener.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfoListener.java new file mode 100644 index 0000000000..1f90107acc --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ColorInfoListener.java @@ -0,0 +1,215 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.kernel.geom.BezierCurve; +import com.itextpdf.kernel.geom.IShape; +import com.itextpdf.kernel.geom.Line; +import com.itextpdf.kernel.geom.LineSegment; +import com.itextpdf.kernel.geom.Path; +import com.itextpdf.kernel.geom.Point; +import com.itextpdf.kernel.geom.Subpath; +import com.itextpdf.kernel.geom.Vector; +import com.itextpdf.kernel.pdf.PdfDictionary; +import com.itextpdf.kernel.pdf.PdfName; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfString; +import com.itextpdf.kernel.pdf.canvas.CanvasTag; +import com.itextpdf.kernel.pdf.canvas.parser.EventType; +import com.itextpdf.kernel.pdf.canvas.parser.data.IEventData; +import com.itextpdf.kernel.pdf.canvas.parser.data.PathRenderInfo; +import com.itextpdf.kernel.pdf.canvas.parser.data.TextRenderInfo; +import com.itextpdf.kernel.pdf.canvas.parser.listener.IEventListener; +import com.itextpdf.kernel.pdf.layer.PdfLayer; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +class ColorInfoListener implements IEventListener { + + private final PdfPage page; + private final List renderInfoList; + private final boolean checkForIndividualCharacters; + + public ColorInfoListener(PdfPage page, List renderInfoList, boolean checkForIndividualCharacters) { + this.page = page; + this.renderInfoList = renderInfoList; + this.checkForIndividualCharacters = checkForIndividualCharacters; + } + + @Override + public void eventOccurred(IEventData data, EventType type) { + if (EventType.RENDER_PATH == type) { + PathRenderInfo pathRenderInfo = (PathRenderInfo) data; + if (!this.checkIfLayerAndNeedsToBeIncluded(pathRenderInfo, page)) { + return; + } + + if (pathRenderInfo.isPathModifiesClippingPath()) { + // clipping paths also generate render_paths events, they have a + // default background black color which messes up the contrast calculation because to they + // don't get rendered with color so to the eye they are transparent so we don't need them. + // But this means in current implementation clipped out text will still be processed + //TODO DEVSIX-9718 Improve clip path handling in contrast analysis + return; + } + Path path = new Path(); + for (Subpath subpath : pathRenderInfo.getPath().getSubpaths()) { + for (IShape segment : subpath.getSegments()) { + if (segment instanceof BezierCurve) { + //flatten bezier curves to triangles + path.addSubpath(flattenBezierCurve((BezierCurve) segment)); + } else if (segment instanceof Line) { + path.addSubpath(subpath); + } else { + throw new PdfException( + "Unsupported shape segment found: " + segment.getClass().getName()); + } + } + } + renderInfoList.add(new BackgroundColorInfo(pathRenderInfo.getFillColor(), path)); + } + if (EventType.RENDER_TEXT == type) { + TextRenderInfo re = (TextRenderInfo) data; + + if (checkForIndividualCharacters) { + for (TextRenderInfo characterRenderInfo : re.getCharacterRenderInfos()) { + Path p = buildPathFromTextRenderInfo(characterRenderInfo); + final String text = characterRenderInfo.getText(); + //skip empty text render infos + if (text == null || text.isEmpty() || text.trim().isEmpty()) { + continue; + } + TextColorInfo contrastInformationRenderInfo = new TextColorInfo( + text, + re.getText(), + characterRenderInfo.getFillColor(), + p, + characterRenderInfo.getFontSize()); + renderInfoList.add(contrastInformationRenderInfo); + } + } else { + Path p = buildPathFromTextRenderInfo(re); + final String text = re.getText(); + if (text == null || text.isEmpty() || text.trim().isEmpty()) { + return; + } + TextColorInfo contrastInformationRenderInfo = new TextColorInfo( + text, null, re.getFillColor(), p, + re.getFontSize()); + renderInfoList.add(contrastInformationRenderInfo); + } + } + } + + @Override + public Set getSupportedEvents() { + return new HashSet<>(Arrays.asList(EventType.BEGIN_TEXT, EventType.RENDER_TEXT, EventType.END_TEXT, + EventType.RENDER_IMAGE, EventType.RENDER_PATH, EventType.CLIP_PATH_CHANGED)); + } + + /** + * Checks if a path render info belongs to a PDF layer and whether it should be included in analysis. + *

+ * This method examines the canvas tag hierarchy to determine if the path is part of an + * Optional Content Group (OCG/layer). If it is part of a layer, it checks whether that + * layer is currently visible. + *

+ * Note: Currently this method always returns @code{true} due a known issue. + * + * @param pathRenderInfo the path render information to check + * @param page the PDF page containing the path + * + * @return {@code true} if the path should be included in contrast analysis, {@code false} if it should be + * skipped + */ + private boolean checkIfLayerAndNeedsToBeIncluded(PathRenderInfo pathRenderInfo, PdfPage page) { + for (CanvasTag canvasTag : pathRenderInfo.getCanvasTagHierarchy()) { + // Check if it's a layer tag + PdfDictionary dict = canvasTag.getProperties(); + if (dict != null && PdfName.OCG.equals(dict.getAsName(PdfName.Type))) { + // We need to check if the layer is visible or not + PdfString layerName = dict.getAsString(PdfName.Name); + for (PdfLayer pdfLayer : page.getPdfLayers()) { + PdfDictionary layerDict = pdfLayer.getPdfObject(); + PdfString layerDictName = layerDict.getAsString(PdfName.Name); + if (layerDictName != null && layerDictName.equals(layerName)) { + return pdfLayer.isOn(); + } + } + } + } + return true; + } + + private static Path buildPathFromTextRenderInfo(TextRenderInfo characterRenderInfo) { + Path path = new Path(); + Subpath subpath = new Subpath(); + + Vector start = characterRenderInfo.getDescentLine().getStartPoint(); + + LineSegment ascent = characterRenderInfo.getAscentLine(); + LineSegment descent = characterRenderInfo.getDescentLine(); + + subpath.setStartPoint((float) start.get(0), (float) start.get(1)); + + Point[] r = new Point[] {new Point(ascent.getStartPoint().get(0), ascent.getStartPoint().get(1)), + new Point(ascent.getEndPoint().get(0), ascent.getEndPoint().get(1)), + new Point(descent.getEndPoint().get(0), descent.getEndPoint().get(1)), + new Point(descent.getStartPoint().get(0), descent.getStartPoint().get(1)),}; + + // convert rectangle to path + subpath.addSegment(new Line(r[0], r[1])); + subpath.addSegment(new Line(r[1], r[2])); + subpath.addSegment(new Line(r[2], r[3])); + subpath.setClosed(true); + + path.addSubpath(subpath); + + return path; + } + + + /** + * Flattens a Bezier curve into a series of line segments for geometric calculations. + * This is necessary because intersection algorithms work with line segments, not curves. + * + * @param bezierCurve the Bezier curve to flatten + * + * @return a Subpath containing line segments that approximate the curve + */ + private static Subpath flattenBezierCurve(BezierCurve bezierCurve) { + List p = bezierCurve.getPiecewiseLinearApproximation(BezierCurve.curveCollinearityEpsilon, 2, + BezierCurve.distanceToleranceManhattan); + Subpath subpath = new Subpath(); + subpath.setStartPoint(p.get(0)); + for (int i = 1; i < p.size(); i++) { + subpath.addSegment(new Line(p.get(i - 1), p.get(i))); + } + return subpath; + } + +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastAnalyzer.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastAnalyzer.java new file mode 100644 index 0000000000..69fde757f4 --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastAnalyzer.java @@ -0,0 +1,525 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.kernel.colors.Color; +import com.itextpdf.kernel.colors.ColorConstants; +import com.itextpdf.kernel.colors.DeviceCmyk; +import com.itextpdf.kernel.colors.DeviceGray; +import com.itextpdf.kernel.colors.DeviceRgb; +import com.itextpdf.kernel.colors.PatternColor; +import com.itextpdf.kernel.contrast.ContrastResult.OverlappingArea; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.kernel.font.PdfFont; +import com.itextpdf.kernel.geom.IShape; +import com.itextpdf.kernel.geom.Line; +import com.itextpdf.kernel.geom.Path; +import com.itextpdf.kernel.geom.Point; +import com.itextpdf.kernel.geom.Subpath; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; +import com.itextpdf.kernel.pdf.PdfDictionary; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.Point.LongPoint; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.PolyTree; +import com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.ClipperBridge; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.DefaultClipper; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.IClipper; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.IClipper.ClipType; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.IClipper.PolyFillType; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.IClipper.PolyType; +import com.itextpdf.kernel.pdf.canvas.parser.clipper.Paths; +import com.itextpdf.kernel.pdf.canvas.parser.listener.IEventListener; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Analyzes color contrast ratios between text and backgrounds in PDF pages. + * This class is designed to help identify accessibility issues related to insufficient + * contrast between text and background colors, which is important for WCAG compliance. + * + * + *

Features

+ *

+ * *Text-to-Background Contrast Analysis: Calculates contrast ratios between text + * and all overlapping background elements on a page. + * *Individual Character Analysis: Optional character-by-character analysis for + * improved accuracy (enabled by default). + * *Multiple Background Handling: Correctly handles cases where text overlaps + * multiple backgrounds by analyzing all intersecting backgrounds. + * *Color Space Support: Supports DeviceRGB, DeviceGray, and DeviceCMYK color spaces. + * Other color spaces may not be fully supported. + * *Geometric Calculations: Uses polygon intersection algorithms to accurately + * determine which backgrounds affect which text elements. + * *Default Background: Assumes a white background for text that doesn't overlap + * any explicit background elements. + * + * + *

Current Limitations

+ *

+ * *Clipping Path Support: Clipped-out text is currently still processed + * and analyzed. The analyzer does not respect clipping paths, so text that would be invisible + * due to clipping will still appear in the contrast results. + * *Layer Visibility : Content on PDF layers (Optional Content Groups) is + * always analyzed regardless of layer visibility state. Content on hidden layers will be + * included in the analysis as if they were visible. + * *Complex Color Spaces: Advanced color spaces (Lab, ICC-based, Separation, DeviceN, etc.) + * may not convert accurately to RGB for contrast calculations. + * *Transparency/Opacity: Does not account for opacity or transparency effects. + * All elements are treated as fully opaque. + * *Images as Backgrounds: Currently only analyzes vector path backgrounds. + * Images used as backgrounds are not considered in the contrast analysis. + * *Text Rendering Modes: Only analyzes fill color. Stroke color for outlined text + * is not considered. + * *Text on Text: Text on Text not supported. + * *Performance: Character-by-character analysis can be computationally expensive + * for pages with large amounts of text. + * *Images + * Text drawn over images is not analyzed for contrast currently.l + * + * @see ContrastResult + * @see OverlappingArea + * @see ColorContrastCalculator + */ +//TODO DEVSIX-9718 Improve clip path handling in contrast analysis +public class ContrastAnalyzer { + + private static final Logger LOGGER = LoggerFactory.getLogger(ContrastAnalyzer.class); + + private boolean checkForIndividualCharacters; + private int maxAmountOfPointInPolygon = 30; + + /** + * Creates a new {@link ContrastAnalyzer} with default settings. + * + * @param checkForIndividualCharacters {@code true} to analyze each character separately, {@code false} to analyze + * whole text as it + * would be processed by the PDF renderer. @see + * ContrastAnalyzer#setCheckForIndividualCharacters(boolean) + */ + public ContrastAnalyzer(boolean checkForIndividualCharacters) { + setCheckForIndividualCharacters(checkForIndividualCharacters); + } + + /** + * Sets the maximum number of points allowed in a polygon for contrast calculations. + *

+ * This setting helps prevent performance issues when processing complex shapes. + * If either the text or background polygon exceeds this number of points, + * the contrast calculation between them will be skipped. + * This is particularly useful for handling complex vector graphics + * The default value is 30 points. + * + * @param maxAmountOfPointInPolygon the maximum number of points allowed in a polygon + */ + public void setMaxAmountOfPointInPolygon(int maxAmountOfPointInPolygon) { + this.maxAmountOfPointInPolygon = maxAmountOfPointInPolygon; + } + + /** + * Sets whether to check contrast for individual characters. + *

+ * When enabled (default), each character in a text string is analyzed separately for contrast. + * This provides more accurate results as different characters may have different backgrounds, + * but it significantly impacts performance on pages with large amounts of text. + *

+ * When disabled, entire text render operations are analyzed as a single unit, which is faster + * but may miss contrast issues that only affect specific characters within a text string. + * + * @param checkForIndividualCharacters true to analyze each character separately, false to analyze whole text as it + * would be processed by the PDF renderer + * + * @return the {@link ContrastAnalyzer} instance for method chaining + */ + public final ContrastAnalyzer setCheckForIndividualCharacters(boolean checkForIndividualCharacters) { + this.checkForIndividualCharacters = checkForIndividualCharacters; + return this; + } + + /** + * Analyzes the contrast ratios between text and backgrounds on the given PDF page. + *

+ * This method processes all text and background elements on the page, calculating contrast + * ratios for each text element against all overlapping backgrounds. The analysis includes: + *

+ * *Extracting all text render operations and their bounding boxes + * *Extracting all path render operations that serve as backgrounds + * *Computing geometric intersections between text and backgrounds + * *Calculating contrast ratios using WCAG formulas + * *Handling cases where text overlaps multiple backgrounds + * + * @param page the PDF page to analyze for contrast issues + * + * @return a list of contrast results, one for each text element that has overlapping backgrounds. + * Returns an empty list if no text elements with backgrounds are found. + * + * @throws PdfException if unsupported shape segments are encountered during analysis + */ + public List checkPageContrast(PdfPage page) { + if (isPageOrUnderlyingStreamFlushed(page)) { + LOGGER.warn(KernelLogMessageConstant.PAGE_IS_FLUSHED_NO_CONTRAST); + return new ArrayList<>(); + } + + List contrastResults = new ArrayList<>(); + List renderInfoList = new ArrayList<>(); + //Add one render info with white background to compare with all other render infos + addDefaultBackground(renderInfoList, page); + IEventListener listener = new ColorInfoListener(page, renderInfoList, this.checkForIndividualCharacters); + PdfCanvasProcessor canvasProcessor = new FontResolvingDocumentProcessor(listener, + (fontDict) -> page.getDocument().getFont(fontDict)); + + int pageNumber = page.getDocument().getPageNumber(page); + canvasProcessor.processPageContent(page); + for (int i = 0; i < renderInfoList.size(); i++) { + ContrastResult textContrastInformation = calculateContrastOfTextRenderer(renderInfoList, + renderInfoList.get(i), pageNumber, i); + if (textContrastInformation != null) { + contrastResults.add(textContrastInformation); + } + } + return contrastResults; + } + + /** + * Checks if the page or any of its underlying content streams have been flushed. + *

+ * Flushed content cannot be processed for contrast analysis as the content stream + * data is no longer available in memory. This method verifies both the page itself + * and all its content streams to determine if analysis is possible. + * + * @param page the PDF page to check + * + * @return {@code true} if the page or any of its content streams are flushed, {@code false} otherwise + */ + private boolean isPageOrUnderlyingStreamFlushed(PdfPage page) { + if (page.isFlushed()) { + return true; + } + + for (int i = 0; i < page.getContentStreamCount(); i++) { + if (page.getContentStream(i).isFlushed()) { + return true; + } + } + return false; + } + + + /** + * Calculates the contrast result for a single text renderer against all background elements. + *

+ * This method processes backgrounds from top to bottom (end to start of the list) to prioritize + * topmost elements. If the text is fully covered by the topmost element(s), processing stops. + * Otherwise, it continues analyzing all background elements below and sums up the intersection + * areas until reaching a background that completely covers the text. + *

+ * Only text render information is processed; background elements passed as possibleTextRenderer + * will return null. + * + * @param allRenderers the complete list of all render information objects (text and backgrounds) on the + * page + * @param possibleTextRenderer the renderer to analyze, must be a TextContrastInformation to be processed + * @param pageNumber the page number where the renderer is located + * + * @return a {@link ContrastResult} containing all background intersections and their contrast ratios, + * or {@code null} if possibleTextRenderer is not text or has no intersecting backgrounds + */ + private ContrastResult calculateContrastOfTextRenderer(List allRenderers, ColorInfo possibleTextRenderer, + int pageNumber, int currentDepth) { + if (!(possibleTextRenderer instanceof TextColorInfo)) { + // we only calculate contrast between text and background + // so we will only process text render infos here + return null; + } + TextColorInfo textContrastInfo = (TextColorInfo) possibleTextRenderer; + final ContrastResult contrastResult = new ContrastResult(textContrastInfo, pageNumber); + + for (int j = currentDepth - 1; j >= 0; j--) { + final ColorInfo backGround = allRenderers.get(j); + if (backGround instanceof TextColorInfo) { + //We are only interested in background and clip render infos here + continue; + } + + final boolean hasTooManyPoints = + textContrastInfo.getPath().getSubpaths().size() > this.maxAmountOfPointInPolygon + || backGround.getPath().getSubpaths().size() > this.maxAmountOfPointInPolygon; + + if (hasTooManyPoints) { + // instead of warning we could kinda flatten the paths here to reduce the amount of points + // the big amount of background mainly happens on svg images with lot of details + LOGGER.warn("Skipping contrast calculation between text and background for " + + "text: '" + textContrastInfo.getText() + "' on page " + pageNumber + + " because one of them has too " + + "many points in polygon. Text points: " + textContrastInfo.getPath().getSubpaths().size() + + " Background points: " + backGround.getPath().getSubpaths().size() + + " if this is intended you can increase the maxAmountOfPointInPolygon property."); + continue; + } + + final PolyTree intersectionPathBetweenTextAndBackground = calculateIntersectionPath( + textContrastInfo.getPath(), backGround.getPath()); + + if (intersectionPathBetweenTextAndBackground.getTotalSize() != 0) { + final DeviceRgb color1 = convertToRGB(textContrastInfo.getColor()); + final DeviceRgb color2 = convertToRGB(backGround.getColor()); + //fast check first for unsupported color spaces to avoid unnecessary calculations + if (color1 == null || color2 == null) { + //Means color space can't be converted to be usable for contrast calculation + continue; + } + + final OverlappingArea overlappingArea = new OverlappingArea((BackgroundColorInfo) backGround, + ColorContrastCalculator.contrastRatio(color1, color2)); + + contrastResult.addContrastResult(overlappingArea); + final Path unionOfAllIntersectionPaths = getOutlinesOfAllPoints( + contrastResult.getOverlappingAreas().stream().map(p -> p.getBackgroundRenderInfo().getPath()) + .collect(Collectors.toList())); + + final PolyTree outlinePaths = calculateIntersectionPath(textContrastInfo.getPath(), + unionOfAllIntersectionPaths); + final Path intersectionOutlinePath = new ClipperBridge(unionOfAllIntersectionPaths).convertToPath( + outlinePaths); + final double intersectionAreaAll = calculatePolygonArea(convertPathToPoints(intersectionOutlinePath)); + final double textRenderArea = calculatePolygonArea(convertPathToPoints(textContrastInfo.getPath())); + final double intersectionAreaCoversText = intersectionAreaAll / textRenderArea; + overlappingArea.setOverlapRatio(intersectionAreaCoversText); + + if (intersectionAreaAll >= textRenderArea - 0.01) { + //The text render info is completely covered by the union of all background render infos + // we can stop processing more background render infos because all the underlying colors + // do not + // matter for the final contrast ratio as they should not be visible anyway + break; + } + } + } + final boolean hasIntersectionWithBackGround = !contrastResult.getOverlappingAreas().isEmpty(); + return hasIntersectionWithBackGround ? contrastResult : null; + } + + + private static DeviceRgb convertToRGB(Color color) { + if (color == null) { + return null; + } + if (color instanceof DeviceRgb) { + return (DeviceRgb) color; + } else if (color instanceof DeviceGray) { + float gray = color.getColorValue()[0]; + return new DeviceRgb(gray, gray, gray); + } else if (color instanceof DeviceCmyk) { + return Color.convertCmykToRgb((DeviceCmyk) color); + } else if (color instanceof PatternColor) { + return null; + } else { + float[] components = color.getColorValue(); + if (components.length == 1) { + return new DeviceRgb(components[0], components[0], components[0]); + } else if (components.length == 3) { + return new DeviceRgb(components[0], components[1], components[2]); + } else { + LOGGER.warn(MessageFormatUtil.format(KernelLogMessageConstant.UNSUPPORTED_COLOR_SPACE_CONTRAST, + color.getClass().getName())); + return null; + } + } + } + + + /** + * Calculates the area of a polygon defined by an array of vertices. + * This method first computes the convex hull of the points to handle cases where + * the points may not be in order or form a complex polygon, then calculates the + * area using the shoelace formula. + * + * @param vertices the array of points defining the polygon vertices + * + * @return the area of the polygon in square units + */ + private static double calculatePolygonArea(Point[] vertices) { + //We calculate the convex hull of the points to avoid issues with complex polygons and the Points not being + // in order. + List hull = ConvexHullArea.convexHull(Arrays.asList(vertices)); + return polygonArea(hull); + } + + + /** + * Calculates the area of a polygon using the shoelace formula. + * The polygon is defined by an ordered list of vertices. + * + * @param polygon the list of points defining the polygon vertices in order + * + * @return the area of the polygon, or 0 if the polygon has fewer than 3 vertices + */ + //Shoelace formula + private static double polygonArea(List polygon) { + int n = polygon.size(); + if (n < 3) { + return 0; + } + + double area = 0; + for (int i = 0; i < n; i++) { + Point p1 = polygon.get(i); + Point p2 = polygon.get((i + 1) % n); + area += (p1.getX() * p2.getY()) - (p2.getX() * p1.getY()); + } + return Math.abs(area) / 2.0; + } + + /** + * Computes the union of multiple paths to create a single outline path. + * This is used to determine the total area covered by multiple overlapping backgrounds. + * Uses the Clipper library to perform polygon union operations. + * + * @param pathPoints the list of paths to combine + * + * @return a {@link Path} representing the union of all input paths, or an empty Path if the operation fails + */ + private static Path getOutlinesOfAllPoints(List pathPoints) { + Path[] pathsArray = pathPoints.toArray(new Path[0]); + ClipperBridge clipperBridge = new ClipperBridge(pathsArray); + DefaultClipper clipper = new DefaultClipper(); + + for (Path path : pathPoints) { + Point[] pathAsPointsTextRender = convertPathToPoints(path); + clipperBridge.addPolygonToClipper(clipper, pathAsPointsTextRender, IClipper.PolyType.SUBJECT); + } + + Paths paths = new Paths(); + boolean result = clipper.execute(ClipType.UNION, paths, IClipper.PolyFillType.NON_ZERO, PolyFillType.NON_ZERO); + if (!result) { + return new Path(); + } + Path resultPath = new Path(); + for (List longPoints : paths) { + List floatPoints = clipperBridge.convertToFloatPoints(longPoints); + Subpath subpath = new Subpath(); + if (floatPoints.isEmpty()) { + continue; + } + subpath.setStartPoint(floatPoints.get(0)); + for (int i = 1; i < floatPoints.size(); i++) { + subpath.addSegment(new Line(floatPoints.get(i - 1), floatPoints.get(i))); + } + subpath.setClosed(true); + resultPath.addSubpath(subpath); + } + + return resultPath; + } + + /** + * Calculates the intersection between a text path and a background path. + * This determines which parts of the text overlap with which backgrounds, enabling + * accurate contrast calculations only for overlapping regions. + * Uses the Clipper library for polygon intersection operations. + * + * @param textPath the path representing the text bounding box + * @param backgroundPath the path representing the background shape + * + * @return a {@link PolyTree} representing the intersection, or an empty {@link PolyTree} + * if there is no intersection + */ + private static PolyTree calculateIntersectionPath(Path textPath, Path backgroundPath) { + final ClipperBridge clipperBridge = new ClipperBridge(textPath, backgroundPath); + final DefaultClipper clipper = new DefaultClipper(); + + final Point[] pathAsPointsTextRender = convertPathToPoints(textPath); + clipperBridge.addPolygonToClipper(clipper, pathAsPointsTextRender, IClipper.PolyType.SUBJECT); + + final Point[] pathsAsPointBackgroundRender = convertPathToPoints(backgroundPath); + clipperBridge.addPolygonToClipper(clipper, pathsAsPointBackgroundRender, PolyType.CLIP); + + final PolyTree paths = new PolyTree(); + boolean result = clipper.execute(ClipType.INTERSECTION, paths, IClipper.PolyFillType.NON_ZERO, + PolyFillType.NON_ZERO); + if (!result) { + return new PolyTree(); + } + return paths; + } + + private static Point[] convertPathToPoints(Path path) { + List points = new ArrayList<>(); + for (Subpath subpath : path.getSubpaths()) { + for (IShape segment : subpath.getSegments()) { + points.addAll(segment.getBasePoints()); + } + } + return points.toArray(new Point[0]); + } + + /** + * Adds a default white background that covers the entire page to the contrast information list. + * This ensures that all text elements have at least one background to compare against, even if + * they don't overlap with any explicitly drawn backgrounds in the PDF. + * + * @param contrastInfoList the list to add the default background to + * @param page the PDF page whose dimensions define the background rectangle + */ + private static void addDefaultBackground(List contrastInfoList, PdfPage page) { + Path backgroundPath = new Path(); + Subpath backgroundSubpath = new Subpath(); + backgroundSubpath.setStartPoint(0, 0); + backgroundSubpath.addSegment(new Line(new Point(0, 0), new Point(page.getPageSize().getWidth(), 0))); + backgroundSubpath.addSegment(new Line(new Point(page.getPageSize().getWidth(), 0), + new Point(page.getPageSize().getWidth(), page.getPageSize().getHeight()))); + backgroundSubpath.addSegment(new Line(new Point(page.getPageSize().getWidth(), page.getPageSize().getHeight()), + new Point(0, page.getPageSize().getHeight()))); + backgroundSubpath.addSegment(new Line(new Point(0, page.getPageSize().getHeight()), new Point(0, 0))); + backgroundPath.addSubpath(backgroundSubpath); + + contrastInfoList.add(new BackgroundColorInfo(ColorConstants.WHITE, backgroundPath)); + } + + private static final class FontResolvingDocumentProcessor extends PdfCanvasProcessor { + private final Function fontSupplier; + + public FontResolvingDocumentProcessor(IEventListener listener, Function fontSupplier) { + super(listener); + this.fontSupplier = fontSupplier; + } + + @Override + protected PdfFont getFont(PdfDictionary fontDict) { + PdfFont font = fontSupplier.apply(fontDict); + if (font != null) { + return font; + } + return super.getFont(fontDict); + } + } +} + diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastResult.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastResult.java new file mode 100644 index 0000000000..d928f339bf --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ContrastResult.java @@ -0,0 +1,187 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + + +import java.util.ArrayList; +import java.util.List; + +/** + * Represents the complete contrast analysis result for a single text element. + *

+ * This class encapsulates all the contrast information for a text element, including + * the text itself and a list of all background elements that it overlaps with, along + * with their respective contrast ratios. + *

+ * Each text element may have multiple background elements behind it, especially in + * complex PDF layouts. This class collects all such relationships to provide a + * comprehensive view of the text's contrast characteristics for accessibility analysis. + */ +public class ContrastResult { + private final TextColorInfo textRenderInfo; + private final List overlappingAreas; + private final int pageNumber; + + /** + * Constructs a new {@link ContrastResult} for the specified text element. + *

+ * The result is initialized with an empty list of background entries, which should + * be populated using {@link #addContrastResult(OverlappingArea)}. + * + * @param textRenderInfo the text element for which contrast is being analyzed + * @param pageNumber the page number where the text element is located + * + */ + public ContrastResult(TextColorInfo textRenderInfo, int pageNumber) { + this.textRenderInfo = textRenderInfo; + this.pageNumber = pageNumber; + this.overlappingAreas = new ArrayList<>(); + } + + /** + * Gets the page number where the text element is located. + * + * @return the page number + */ + public int getPageNumber() { + return pageNumber; + } + + + /** + * Gets the text render information for this contrast result. + *

+ * The text information includes the character, parent text, color, geometric path, + * and font size of the text element being analyzed. + * + * @return the text render information + */ + public TextColorInfo getTextRenderInfo() { + return textRenderInfo; + } + + /** + * Adds a background contrast entry to this result. + *

+ * Each entry represents a background element that the text overlaps with, along + * with the calculated contrast ratio between the text color and background color. + * Multiple entries indicate that the text appears over multiple backgrounds. + * + * @param overlappingArea the contrast result entry containing background information and contrast ratio + */ + public void addContrastResult(OverlappingArea overlappingArea) { + this.overlappingAreas.add(overlappingArea); + } + + /** + * Gets all the background contrast entries for this text element. + *

+ * Each entry in the list represents a background element that the text overlaps with, + * containing the background's color, path, and the calculated contrast ratio. + * The list may be empty if no backgrounds were detected, or may contain multiple + * entries if the text overlaps multiple background elements. + * + * @return an unmodifiable view of the list of contrast result entries + */ + public List getOverlappingAreas() { + return new ArrayList<>(overlappingAreas); + } + + /** + * Represents a single contrast analysis result entry between text and a background element. + *

+ * This class encapsulates the information about a specific background element that intersects + * with a text element, along with the calculated contrast ratio between them. It is used as + * part of a {@link ContrastResult} to provide detailed information about all backgrounds + * that contribute to the overall contrast of a text element. + *

+ * The contrast ratio is calculated according to WCAG 2.1 guidelines and ranges from 1:1 + * (no contrast) to 21:1 (maximum contrast between black and white). + */ + public static class OverlappingArea { + + private final BackgroundColorInfo backgroundRenderInfo; + private final double contrastRatio; + private double overlapRatio; + + /** + * Constructs a new ContrastResultEntry with the specified background information and contrast ratio. + * + * @param backgroundRenderInfo the background element that was analyzed for contrast + * @param contrastRatio the calculated contrast ratio between the text and this background, + * according to WCAG 2.1 guidelines (ranges from 1.0 to 21.0) + */ + public OverlappingArea(BackgroundColorInfo backgroundRenderInfo, double contrastRatio) { + this.backgroundRenderInfo = backgroundRenderInfo; + this.contrastRatio = contrastRatio; + } + + /** + * Gets the background render information for this contrast entry. + *

+ * The background information includes the color and geometric path of the background + * element that was compared against the text. + * + * @return the background render information + */ + public BackgroundColorInfo getBackgroundRenderInfo() { + return backgroundRenderInfo; + } + + /** + * Gets the contrast ratio between the text and this background element. + *

+ * The contrast ratio is calculated according to WCAG 2.1 guidelines: + *

+ * *1.0 indicates no contrast (identical colors) + * *21.0 is the maximum contrast (black and white) + * + * @return the contrast ratio value, ranging from 1.0 to 21.0 + */ + public double getContrastRatio() { + return contrastRatio; + } + + /** + * Gets the percentage of the text area that overlaps with this background element. + * + * @return the overlapping area in percentage. + */ + public double getOverlapRatio() { + return overlapRatio; + } + + /** + * Sets the percentage of the text area that overlaps with this background element. + * Should be a value between 0 and 1 representing 0% to 100%. + * + * @param overlappingAreaInPercentage the overlapping area in percentage. + */ + public void setOverlapRatio(double overlappingAreaInPercentage) { + if (overlappingAreaInPercentage < 0 || overlappingAreaInPercentage > 1) { + throw new IllegalArgumentException("Overlap ratio must be between 0 and 1."); + } + this.overlapRatio = overlappingAreaInPercentage; + } + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/ConvexHullArea.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/ConvexHullArea.java new file mode 100644 index 0000000000..519345ad9c --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/ConvexHullArea.java @@ -0,0 +1,146 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + + +import com.itextpdf.kernel.geom.Point; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Utility class for computing the convex hull of a set of points in 2D space. + *

+ * The convex hull is the smallest convex polygon that contains all the given points. + * This implementation uses Andrew's monotone chain algorithm, which is a variant of + * Graham's scan with improved stability and efficiency. + *

+ * The algorithm runs in O(n log n) time complexity, where n is the number of input points. + */ +final class ConvexHullArea { + + private static final int MIN_POINTS_FOR_HULL = 2; + private static final double EPSILON = 1e-6; + + /** + * Private constructor to prevent instantiation of this utility class. + */ + private ConvexHullArea() { + // Utility class + } + + /** + * Computes the convex hull of a set of points using Andrew's monotone chain algorithm. + *

+ * The algorithm works by: + *

    + * * Sorting all points lexicographically (first by x-coordinate, then by y-coordinate) + * * Constructing the lower hull by scanning from left to right + * * Constructing the upper hull by scanning from right to left + * * Combining both hulls to form the complete convex hull + *
+ *

+ * The returned list of points represents the vertices of the convex hull in counter-clockwise order. + *

+ * + * @param points the list of points for which to compute the convex hull. Must not be {@code null}. + * Points may be in any order and may include duplicates. + * + * @return a list of points representing the vertices of the convex hull in counter-clockwise order. + * If the input contains 0 or 1 points, returns the input list unchanged. + * If all points are collinear, returns the two extreme points. + */ + public static List convexHull(List points) { + List copiedPoints = new ArrayList<>(points); + if (copiedPoints.size() <= 1) { + return copiedPoints; + } + + // Sort copiedPoints lexicographically (first by x, then by y) + + Collections.sort(copiedPoints, (p1, p2) -> { + if (p1.getX() == p2.getX()) { + return Double.compare(p1.getY(), p2.getY()); + } + return Double.compare(p1.getX(), p2.getX()); + }); + + // Build lower hull + List lower = new ArrayList<>(); + for (Point p : copiedPoints) { + buildHull(lower, p); + } + + // Build upper hull + List upper = new ArrayList<>(); + for (int i = copiedPoints.size() - 1; i >= 0; i--) { + Point p = copiedPoints.get(i); + buildHull(upper, p); + } + + // Remove last point of each half because it's repeated at the beginning of the other half + lower.remove(lower.size() - 1); + upper.remove(upper.size() - 1); + + // Combine lower and upper hulls + lower.addAll(upper); + + return lower; + } + + private static void buildHull(List lower, Point p) { + while (lower.size() >= MIN_POINTS_FOR_HULL) { + double crossProduct = cross(lower.get(lower.size() - 2), + lower.get(lower.size() - 1), p); + if (crossProduct > EPSILON) { + break; + } + lower.remove(lower.size() - 1); + } + lower.add(p); + } + + /** + * Calculates the cross product of vectors OA and OB, where O, A, and B are points in 2D space. + *

+ * The cross product is used to determine the orientation of three points: + *

+ * * Positive value: counter-clockwise turn (left turn) + * * Negative value: clockwise turn (right turn) + * * Zero: collinear points (no turn) + * + *

+ * The formula used is: (A.x - O.x) * (B.y - O.y) - (A.y - O.y) * (B.x - O.x) + * + * @param o the origin point + * @param a the first point forming vector OA + * @param b the second point forming vector OB + * + * @return the cross product value. Positive indicates a counter-clockwise turn, + * negative indicates a clockwise turn, and zero indicates collinear points. + */ + private static double cross(Point o, Point a, Point b) { + return (a.getX() - o.getX()) * (b.getY() - o.getY()) - (a.getY() - o.getY()) * (b.getX() - o.getX()); + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/TextColorInfo.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/TextColorInfo.java new file mode 100644 index 0000000000..4078af5add --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/TextColorInfo.java @@ -0,0 +1,98 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.Color; +import com.itextpdf.kernel.geom.Path; + +/** + * Represents rendering information for a text element in contrast analysis. + */ +public class TextColorInfo extends ColorInfo { + private final String text; + private final String parent; + private final float fontSize; + + /** + * Constructs a new {@link TextColorInfo} with the specified text properties. + * + * @param text the text content (typically a single character) being rendered + * @param parent the parent text string that this text is part of, providing context + * @param color the fill color of the text + * @param path the geometric path defining the shape and position of the text element + * @param fontSize the font size in points. + */ + public TextColorInfo(String text, String parent, Color color, Path path, float fontSize) { + super(color, path); + this.text = text; + this.parent = parent; + this.fontSize = fontSize; + } + + /** + * Gets the text content being rendered. + *

+ * This typically represents a single character or glyph from the PDF content stream. + * + * @return the text content as a String + */ + public String getText() { + return text; + } + + /** + * Gets the parent text string that this text is part of. + *

+ * This provides context about the larger text block or string that contains this + * individual text element, which can be useful for debugging and analysis. + * + * @return the parent text string + */ + public String getParent() { + return parent; + } + + /** + * Gets the font size of the text in points. + * + * @return the font size in points + */ + public float getFontSize() { + return fontSize; + } + + /** + * Returns a string representation of this text render information. + * + * @return a string containing the text, parent, color, and path information + */ + @Override + public String toString() { + return "TextRenderInfo{" + + "character=" + text + + ", parent=" + parent + + ", color=" + getColor() + + ", path=" + getPath() + + '}'; + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/contrast/WCagChecker.java b/kernel/src/main/java/com/itextpdf/kernel/contrast/WCagChecker.java new file mode 100644 index 0000000000..b8912c8cb2 --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/contrast/WCagChecker.java @@ -0,0 +1,78 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +/** + * Utility class for checking WCAG (Web Content Accessibility Guidelines) compliance for text contrast. + * + * @see WCAG 2.1 Contrast (Minimum) + * @see WCAG 2.1 Contrast (Enhanced) + */ +public final class WCagChecker { + + // 14pt in pixels (1pt = 1.333px) + private static final double LARGE_TEXT_MIN_FONT_SIZE_PX = 18.66; + + /** + * Private constructor to prevent instantiation of this utility class. + */ + private WCagChecker() { + // Utility class + } + + /** + * Checks for WCAG AA compliance. + * + * @param fontSize The font size in pixels + * @param contrastRatio The contrast ratio between text and background + * + * @return {@code true} if the text meets WCAG AA compliance, {@code false} otherwise + */ + public static boolean isTextWcagAACompliant(double fontSize, double contrastRatio) { + boolean isLargeText = fontSize >= LARGE_TEXT_MIN_FONT_SIZE_PX; + + if (isLargeText) { + return contrastRatio >= 3.0; + } else { + return contrastRatio >= 4.5; + } + } + + /** + * Checks for WCAG AAA compliance. + * + * @param fontSize The font size in pixels + * @param contrastRatio The contrast ratio between text and background + * + * @return {@code true} if the text meets WCAG AAA compliance, {@code false} otherwise + */ + public static boolean isTextWcagAAACompliant(double fontSize, double contrastRatio) { + boolean isLargeText = fontSize >= LARGE_TEXT_MIN_FONT_SIZE_PX; + + if (isLargeText) { + return contrastRatio >= 4.5; + } else { + return contrastRatio >= 7.0; + } + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipher.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipher.java index df05f5edaf..a1bbd8ed92 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipher.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipherCBCnoPad.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipherCBCnoPad.java index ecb01ca287..c10647fe03 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipherCBCnoPad.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESCipherCBCnoPad.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESGCMCipher.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESGCMCipher.java index 615917edf3..e4289b045a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/AESGCMCipher.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/AESGCMCipher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/ARCFOUREncryption.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/ARCFOUREncryption.java index 6a299861c0..b470803f18 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/ARCFOUREncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/ARCFOUREncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/AesDecryptor.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/AesDecryptor.java index 8be484c9cc..b30812583d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/AesDecryptor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/AesDecryptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/AesGcmDecryptor.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/AesGcmDecryptor.java index 997c76f8c2..2841daa380 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/AesGcmDecryptor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/AesGcmDecryptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/CryptoUtil.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/CryptoUtil.java index bd236754f8..3a27041423 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/CryptoUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/CryptoUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/DigestAlgorithms.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/DigestAlgorithms.java index 05cf73f127..30f1419d3f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/DigestAlgorithms.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/DigestAlgorithms.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/IDecryptor.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/IDecryptor.java index 54fa9ad4c3..ce83781923 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/IDecryptor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/IDecryptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/IVGenerator.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/IVGenerator.java index 498e93bc31..266c437b89 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/IVGenerator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/IVGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/OID.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/OID.java index 7ce6b21476..99bca17e1c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/OID.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/OID.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesEncryption.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesEncryption.java index d2a51ed4f1..cc9f6c73cd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesEncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesEncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesGcmEncryption.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesGcmEncryption.java index 6bb5b297b2..fdaff1bc31 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesGcmEncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamAesGcmEncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamEncryption.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamEncryption.java index 6e015e85cd..d693eae495 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamEncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamEncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamStandardEncryption.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamStandardEncryption.java index 8f50bed27d..2de4288096 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamStandardEncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/OutputStreamStandardEncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/StandardDecryptor.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/StandardDecryptor.java index 6985af56a0..0e63c966bc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/StandardDecryptor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/StandardDecryptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/AESCipherCBCnoPad.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/AESCipherCBCnoPad.java index 4b1d046c30..d3d89f41b4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/AESCipherCBCnoPad.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/AESCipherCBCnoPad.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtils.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtils.java index 10b0421bd6..ea70edf832 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtils.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandler.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandler.java index 18e5b87390..5bd3e6efa5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes128.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes128.java index 492b81c4b8..03c3671d99 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes128.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes128.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes256.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes256.java index be127ff0aa..b3161eba7d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes256.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAes256.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcm.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcm.java index ca30f28f2b..ebc6aeefa9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcm.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcm.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard128.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard128.java index edbb1b126d..eb99bea2bd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard128.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard128.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard40.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard40.java index 0a403db6e3..6eec9cb6e4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard40.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingStandard40.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PublicKeyRecipient.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PublicKeyRecipient.java index 5b9826a0c2..7307abe3b9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PublicKeyRecipient.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/PublicKeyRecipient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/SecurityHandler.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/SecurityHandler.java index ec7689d4ff..eca06f4d7f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/SecurityHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/SecurityHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes128.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes128.java index e1875983cc..a46bcc709f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes128.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes128.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes256.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes256.java index 0d0bd890d5..fd6fafe78e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes256.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAes256.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcm.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcm.java index 802a28fe7b..68cd28776d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcm.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcm.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard128.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard128.java index c0d464a175..96e66204a7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard128.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard128.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.java index ab92f952f4..3a4ccd0c7f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingStandard40.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardSecurityHandler.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardSecurityHandler.java index d7712017cf..e496d0014e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardSecurityHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/StandardSecurityHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/UnsupportedSecurityHandlerException.java b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/UnsupportedSecurityHandlerException.java index 31087119dd..c70b62768f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/UnsupportedSecurityHandlerException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/crypto/securityhandler/UnsupportedSecurityHandlerException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/DefaultPageTreeListFactory.java b/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/DefaultPageTreeListFactory.java index a3a6de703a..7083aa621f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/DefaultPageTreeListFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/DefaultPageTreeListFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/IPageTreeListFactory.java b/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/IPageTreeListFactory.java index 27f43ba244..d8e87d0055 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/IPageTreeListFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/di/pagetree/IPageTreeListFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/BadPasswordException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/BadPasswordException.java index 0d5bdea291..9ca71d26e6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/BadPasswordException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/BadPasswordException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/InvalidXRefPrevException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/InvalidXRefPrevException.java index 627f459cb6..69d0b39f9c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/InvalidXRefPrevException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/InvalidXRefPrevException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/KernelExceptionMessageConstant.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/KernelExceptionMessageConstant.java index 01443e858b..f33f298417 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/KernelExceptionMessageConstant.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/KernelExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -263,29 +263,29 @@ public final class KernelExceptionMessageConstant { "Invalid PDF Type 2 Function object, \"N\" field should exist and must be a number."; public static final String INVALID_TYPE_2_FUNCTION_N_NEGATIVE = "Invalid PDF Type 2 Function object, when \"N\" is negative, values of \"Domain\" shall " - + "not allow zero as input value."; + + "not allow zero as input value."; public static final String INVALID_TYPE_2_FUNCTION_N_NOT_INTEGER = "Invalid PDF Type 2 Function object, when \"N\" is not an integer, values of \"Domain\" shall " - + "define the input value as non-negative."; + + "define the input value as non-negative."; public static final String INVALID_TYPE_2_FUNCTION_OUTPUT_SIZE = "Invalid PDF Type 2 Function object, if present the size of \"C0\", \"C1\" and half " + "\"Range\" shall be equal."; public static final String INVALID_TYPE_3_FUNCTION_BOUNDS = "Invalid PDF Type 3 Function object, \"Bounds\" elements shall be in order of increasing value, and " - + "each value shall be within the domain defined by \"Domain\"."; + + "each value shall be within the domain defined by \"Domain\"."; public static final String INVALID_TYPE_3_FUNCTION_DOMAIN = "Invalid PDF Type 3 Function object, \"Domain\" array shall consist of 2 numbers."; public static final String INVALID_TYPE_3_FUNCTION_FUNCTIONS_INPUT = "Invalid PDF Type 3 Function object, all functions shall have 1 input value."; public static final String INVALID_TYPE_3_FUNCTION_FUNCTIONS_OUTPUT = "Invalid PDF Type 3 Function object, the output dimensionality of all functions shall be the same, " - + "and compatible with the value of \"Range\"."; + + "and compatible with the value of \"Range\"."; public static final String INVALID_TYPE_3_FUNCTION_NULL_BOUNDS = "Invalid PDF Type 3 Function object, \"Bounds\" array should exist and its size should correspond " - + "to the size of the \"Functions\" array."; + + "to the size of the \"Functions\" array."; public static final String INVALID_TYPE_3_FUNCTION_NULL_ENCODE = "Invalid PDF Type 3 Function object, \"Encode\" array should exist and its size should be 2 times " - + "more than the size of the \"Functions\" array."; + + "more than the size of the \"Functions\" array."; public static final String INVALID_TYPE_3_FUNCTION_NULL_FUNCTIONS = "Invalid PDF Type 3 Function object, \"Functions\" array should exist and can't be empty."; public static final String INVALID_XREF_STREAM = "Invalid xref stream."; @@ -349,7 +349,8 @@ public final class KernelExceptionMessageConstant { + "truetype"; public static final String OPERATOR_EI_NOT_FOUND_AFTER_END_OF_IMAGE_DATA = "Operator EI not found after the end " + "of image data."; - public static final String ORDERING_SHOULD_BE_DETERMINED = "Ordering should be determined for CIDFont of Type0 font."; + public static final String ORDERING_SHOULD_BE_DETERMINED = "Ordering should be determined for CIDFont of Type0 " + + "font."; public static final String PAGE_ALREADY_FLUSHED = "The page has been already flushed."; public static final String PAGE_CANNOT_BE_ADDED_TO_DOCUMENT_BECAUSE_IT_BELONGS_TO_ANOTHER_DOCUMENT = "The passed page belongs to document {0} (page {1} of the document) and therefore cannot be added " @@ -436,8 +437,8 @@ public final class KernelExceptionMessageConstant { public static final String THIS_FILTER_IS_NOT_SUPPORTED = "Filter {0} is not supported."; public static final String TOTAL_XOBJECT_SIZE_ONE_PAGE_EXCEEDED_THE_LIMIT = "Pdf contains too many xObject elements on a page " - + "and may cause OOM exception. You can increase page size limit by setting custom " - + "MemoryLimitsAwareHandler."; + + "and may cause OOM exception. You can increase page size limit by setting custom " + + "MemoryLimitsAwareHandler."; public static final String TO_FLUSH_THIS_WRAPPER_UNDERLYING_OBJECT_MUST_BE_ADDED_TO_DOCUMENT = "To manually " + "flush this wrapper, you have to ensure that the object behind this wrapper is added to the document, " + "i.e. it has an indirect reference."; @@ -452,8 +453,8 @@ public final class KernelExceptionMessageConstant { @Deprecated public static final String UNABLE_TO_ADD_SECOND_PARENT_LAYER = "Unable to add second parent layer to " + "{0} ocg layer"; - public static final String UNABLE_TO_READ_OBJECT_STREAM ="Unable to read object stream."; - public static final String UNABLE_TO_READ_STREAM_BYTES ="Unable to read stream bytes because stream is null."; + public static final String UNABLE_TO_READ_OBJECT_STREAM = "Unable to read object stream."; + public static final String UNABLE_TO_READ_STREAM_BYTES = "Unable to read stream bytes because stream is null."; @Deprecated public static final String UNABLE_TO_REMOVE_DUPLICATE_LAYER = "Unable to remove duplicated layer {0} " + "because it has child layers."; @@ -491,7 +492,8 @@ public final class KernelExceptionMessageConstant { + " contain version identifier pdfaid:rev with four digit integer value"; public static final String XOBJECT_STRUCT_PARENT_INDEX_MISSED = "XObject has no StructParents index in its stream."; public static final String XREF_HAS_AN_ENTRY_WITH_TOO_BIG_OFFSET = "Pdf document is to large to " - + "use normal cross reference table. Use cross reference streams instead. To enable feature use com.itextpdf" + + "use normal cross reference table. Use cross reference streams instead. To enable feature use com" + + ".itextpdf" + ".kernel.pdf.WriterProperties#setFullCompressionMode(true). "; public static final String XREF_PREV_SHALL_BE_DIRECT_NUMBER_OBJECT = "Prev pointer in xref structure shall be " + "direct number object."; diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/MemoryLimitsAwareException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/MemoryLimitsAwareException.java index cedc62abcf..2a7e8ff48c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/MemoryLimitsAwareException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/MemoryLimitsAwareException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/Pdf20ConformanceException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/Pdf20ConformanceException.java index 31da2dddee..899dd9f11a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/Pdf20ConformanceException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/Pdf20ConformanceException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/PdfException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/PdfException.java index a668bfe8af..25c30761de 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/PdfException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/PdfException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/exceptions/XrefCycledReferencesException.java b/kernel/src/main/java/com/itextpdf/kernel/exceptions/XrefCycledReferencesException.java index 9f1c93f4b4..37a28151d6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/exceptions/XrefCycledReferencesException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/exceptions/XrefCycledReferencesException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/DocFontEncoding.java b/kernel/src/main/java/com/itextpdf/kernel/font/DocFontEncoding.java index 7f8576e52f..b64db41739 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/DocFontEncoding.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/DocFontEncoding.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/DocTrueTypeFont.java b/kernel/src/main/java/com/itextpdf/kernel/font/DocTrueTypeFont.java index 1604a5c729..7e06da87eb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/DocTrueTypeFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/DocTrueTypeFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/DocType1Font.java b/kernel/src/main/java/com/itextpdf/kernel/font/DocType1Font.java index e39a425106..26fcefcb81 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/DocType1Font.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/DocType1Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/FontUtil.java b/kernel/src/main/java/com/itextpdf/kernel/font/FontUtil.java index 534b2481c0..bb99564336 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/FontUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/FontUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/IDocFontProgram.java b/kernel/src/main/java/com/itextpdf/kernel/font/IDocFontProgram.java index b96dfd9b78..4a2db636b9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/IDocFontProgram.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/IDocFontProgram.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfFont.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfFont.java index e0792cdeec..0e44d5a2d2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfFontFactory.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfFontFactory.java index d0bf5bba20..d724dfb2c2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfFontFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfFontFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfSimpleFont.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfSimpleFont.java index 7cafc3eae5..bf2b6bcfa9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfSimpleFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfSimpleFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,7 +51,8 @@ This file is part of the iText (R) project. public abstract class PdfSimpleFont extends PdfFont { - + @Deprecated + // Make private protected FontEncoding fontEncoding; /** @@ -62,11 +63,6 @@ public abstract class PdfSimpleFont extends PdfFont { * The array used with single byte encodings. */ protected byte[] usedGlyphs = new byte[PdfFont.SIMPLE_FONT_MAX_CHAR_CODE_VALUE + 1]; - - /** - * Currently only exists for the fonts that are parsed from the document. - * In the future, we might provide possibility to add custom mappings after a font has been created from a font file. - */ protected CMapToUnicode toUnicode; protected PdfSimpleFont(PdfDictionary fontDictionary) { @@ -171,6 +167,18 @@ public FontEncoding getFontEncoding() { return fontEncoding; } + /** + * Set the font encoding. + * + * @param fontEncoding the {@link FontEncoding} to set + */ + public final void setFontEncoding(FontEncoding fontEncoding) { + this.fontEncoding = fontEncoding; + if (toUnicode == null && fontEncoding != null && !fontEncoding.isFontSpecific()) { + this.toUnicode = CMapToUnicode.createToUnicodeCmap(this.fontEncoding); + } + } + /** * Get the mapping of character codes to unicode values based on /ToUnicode entry of font dictionary. * @@ -248,6 +256,7 @@ public void writeText(GlyphLine text, int from, int to, PdfOutputStream stream) } } } + bytes = ArrayUtil.shortenArray(bytes, ptr); for (byte b : bytes) { usedGlyphs[b & 0xff] = 1; diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfTrueTypeFont.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfTrueTypeFont.java index 0d7e84dbb9..128dc694e3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfTrueTypeFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfTrueTypeFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -62,9 +62,9 @@ public class PdfTrueTypeFont extends PdfSimpleFont { } if (encoding != null && StringNormalizer.toLowerCase(FontEncoding.FONT_SPECIFIC).equals(StringNormalizer.toLowerCase(encoding))) { - fontEncoding = FontEncoding.createFontSpecificEncoding(); + setFontEncoding(FontEncoding.createFontSpecificEncoding()); } else { - fontEncoding = FontEncoding.createFontEncoding(encoding); + setFontEncoding(FontEncoding.createFontEncoding(encoding)); } } @@ -72,7 +72,7 @@ public class PdfTrueTypeFont extends PdfSimpleFont { super(fontDictionary); newFont = false; subset = false; - fontEncoding = DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode); + setFontEncoding(DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode)); PdfName baseFontName = fontDictionary.getAsName(PdfName.BaseFont); // Section 9.6.3 (ISO-32000-1): A TrueType font dictionary may contain the same entries as a Type 1 font @@ -89,7 +89,7 @@ public class PdfTrueTypeFont extends PdfSimpleFont { throw new PdfException(KernelExceptionMessageConstant.IO_EXCEPTION_WHILE_CREATING_FONT, e); } } else { - fontProgram = DocTrueTypeFont.createFontProgram(fontDictionary, fontEncoding, toUnicode); + fontProgram = DocTrueTypeFont.createFontProgram(fontDictionary, getFontEncoding(), toUnicode); } embedded = fontProgram instanceof IDocFontProgram && ((IDocFontProgram) fontProgram).getFontFile() != null; @@ -97,8 +97,8 @@ public class PdfTrueTypeFont extends PdfSimpleFont { @Override public Glyph getGlyph(int unicode) { - if (fontEncoding.canEncode(unicode)) { - Glyph glyph = getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)); + if (getFontEncoding().canEncode(unicode)) { + Glyph glyph = getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)); if (glyph == null && (glyph = notdefGlyphs.get(unicode)) == null) { final Glyph notdef = getFontProgram().getGlyphByCode(0); if (notdef != null) { @@ -113,11 +113,11 @@ public Glyph getGlyph(int unicode) { @Override public boolean containsGlyph(int unicode) { - if (fontEncoding.isFontSpecific()) { + if (getFontEncoding().isFontSpecific()) { return fontProgram.getGlyphByCode(unicode) != null; } else { - return fontEncoding.canEncode(unicode) - && getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)) != null; + return getFontEncoding().canEncode(unicode) + && getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)) != null; } } @@ -173,7 +173,7 @@ protected void addFontStream(PdfDictionary fontDescriptor) { SortedSet glyphs = new TreeSet<>(); for (int k = 0; k < usedGlyphs.length; k++) { if (usedGlyphs[k] != 0) { - int uni = fontEncoding.getUnicode(k); + int uni = getFontEncoding().getUnicode(k); Glyph glyph = uni > -1 ? fontProgram.getGlyph(uni) : fontProgram.getGlyphByCode(k); if (glyph != null) { glyphs.add(glyph.getCode()); diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType0Font.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType0Font.java index 4d09cdf889..96b162d614 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType0Font.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType0Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType1Font.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType1Font.java index f7e325fbd5..b3669508c1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType1Font.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType1Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -43,9 +43,9 @@ public class PdfType1Font extends PdfSimpleFont { } if (encoding != null && StringNormalizer.toLowerCase(FontEncoding.FONT_SPECIFIC).equals(StringNormalizer.toLowerCase(encoding))) { - fontEncoding = FontEncoding.createFontSpecificEncoding(); + setFontEncoding(FontEncoding.createFontSpecificEncoding()); } else { - fontEncoding = FontEncoding.createFontEncoding(encoding); + setFontEncoding(FontEncoding.createFontEncoding(encoding)); } } @@ -56,8 +56,8 @@ public class PdfType1Font extends PdfSimpleFont { PdfType1Font(PdfDictionary fontDictionary) { super(fontDictionary); newFont = false; - fontEncoding = DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode); - fontProgram = DocType1Font.createFontProgram(fontDictionary, fontEncoding, toUnicode); + setFontEncoding(DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode)); + fontProgram = DocType1Font.createFontProgram(fontDictionary, getFontEncoding(), toUnicode); if (fontProgram instanceof IDocFontProgram) { embedded = ((IDocFontProgram) fontProgram).getFontFile() != null; @@ -87,12 +87,12 @@ public void flush() { @Override public Glyph getGlyph(int unicode) { - if (fontEncoding.canEncode(unicode)) { + if (getFontEncoding().canEncode(unicode)) { Glyph glyph; - if (fontEncoding.isFontSpecific()) { + if (getFontEncoding().isFontSpecific()) { glyph = getFontProgram().getGlyphByCode(unicode); } else { - glyph = getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)); + glyph = getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)); if (glyph == null && (glyph = notdefGlyphs.get(unicode)) == null) { // Handle special layout characters like sfthyphen (00AD). // This glyphs will be skipped while converting to bytes @@ -107,11 +107,11 @@ public Glyph getGlyph(int unicode) { @Override public boolean containsGlyph(int unicode) { - if (fontEncoding.canEncode(unicode)) { - if (fontEncoding.isFontSpecific()) { + if (getFontEncoding().canEncode(unicode)) { + if (getFontEncoding().isFontSpecific()) { return getFontProgram().getGlyphByCode(unicode) != null; } else { - return getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)) != null; + return getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)) != null; } } else { return false; diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType3Font.java b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType3Font.java index df551c13a0..97c4042f6e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/PdfType3Font.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/PdfType3Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -115,7 +115,7 @@ private double[] getFontMatrix() { subset = true; embedded = true; fontProgram = new Type3Font(colorized); - fontEncoding = FontEncoding.createEmptyFontEncoding(); + setFontEncoding(FontEncoding.createEmptyFontEncoding()); setGlyphSpaceNormalizationFactor(1.0f); } @@ -144,7 +144,7 @@ private double[] getFontMatrix() { subset = true; embedded = true; fontProgram = new Type3Font(false); - fontEncoding = DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode); + setFontEncoding(DocFontEncoding.createDocFontEncoding(fontDictionary.get(PdfName.Encoding), toUnicode)); double[] fontMatrixArray = readFontMatrix(); double[] fontBBoxRect = readFontBBox(); @@ -297,7 +297,7 @@ public Type3Glyph addGlyph(char c, int wx, int llx, int lly, int urx, int ury) { int code = getFirstEmptyCode(); glyph = new Type3Glyph(getDocument(), wx, llx, lly, urx, ury, ((Type3Font) getFontProgram()).isColorized()); ((Type3Font) getFontProgram()).addGlyph(code, c, wx, new int[]{llx, lly, urx, ury}, glyph); - fontEncoding.addSymbol(code, c); + getFontEncoding().addSymbol(code, c); if (!((Type3Font) getFontProgram()).isColorized()) { if (fontProgram.countOfGlyphs() == 0) { @@ -316,8 +316,8 @@ public Type3Glyph addGlyph(char c, int wx, int llx, int lly, int urx, int ury) { @Override public Glyph getGlyph(int unicode) { - if (fontEncoding.canEncode(unicode) || unicode < 33) { - Glyph glyph = getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)); + if (getFontEncoding().canEncode(unicode) || unicode < 33) { + Glyph glyph = getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)); if (glyph == null && (glyph = notdefGlyphs.get(unicode)) == null) { // Handle special layout characters like sfthyphen (00AD). // This glyphs will be skipped while converting to bytes @@ -331,8 +331,8 @@ public Glyph getGlyph(int unicode) { @Override public boolean containsGlyph(int unicode) { - return (fontEncoding.canEncode(unicode) || unicode < 33) - && getFontProgram().getGlyph(fontEncoding.getUnicodeDifference(unicode)) != null; + return (getFontEncoding().canEncode(unicode) || unicode < 33) + && getFontProgram().getGlyph(getFontEncoding().getUnicodeDifference(unicode)) != null; } @Override @@ -367,7 +367,7 @@ protected PdfDictionary getFontDescriptor(String fontName) { // reset both flags flags &= ~(FontDescriptorFlags.SYMBOLIC | FontDescriptorFlags.NONSYMBOLIC); // set fontSpecific based on font encoding - flags |= fontEncoding.isFontSpecific() ? + flags |= getFontEncoding().isFontSpecific() ? FontDescriptorFlags.SYMBOLIC : FontDescriptorFlags.NONSYMBOLIC; fontDescriptor.put(PdfName.Flags, new PdfNumber(flags)); @@ -427,10 +427,10 @@ private void addGlyphsFromDifferences(PdfArray differences, PdfDictionary charPr // Skip glyphs with id greater than 255 } else { String glyphName = ((PdfName) obj).getValue(); - int unicode = fontEncoding.getUnicode(currentNumber); + int unicode = getFontEncoding().getUnicode(currentNumber); if (getFontProgram().getGlyphByCode(currentNumber) == null && charProcsDic.containsKey(new PdfName(glyphName))) { - fontEncoding.setDifference(currentNumber, glyphName); + getFontEncoding().setDifference(currentNumber, glyphName); ((Type3Font) getFontProgram()).addGlyph(currentNumber, unicode, widths[currentNumber], null, new Type3Glyph(charProcsDic.getAsStream(new PdfName(glyphName)), getDocument())); } @@ -447,7 +447,7 @@ private void addGlyphsFromDifferences(PdfArray differences, PdfDictionary charPr private int getFirstEmptyCode() { final int startFrom = 1; for (int i = startFrom; i <= PdfFont.SIMPLE_FONT_MAX_CHAR_CODE_VALUE; i++) { - if (!fontEncoding.canDecode(i) && fontProgram.getGlyphByCode(i) == null) { + if (!getFontEncoding().canDecode(i) && fontProgram.getGlyphByCode(i) == null) { return i; } } @@ -466,8 +466,8 @@ private void addGlyphsFromCharProcs(PdfDictionary charProcsDic, int[] widths) { for (PdfName glyphName : charProcsDic.keySet()) { int unicode = AdobeGlyphList.nameToUnicode(glyphName.getValue()); int code = -1; - if (fontEncoding.canEncode(unicode)) { - code = fontEncoding.convertToByte(unicode); + if (getFontEncoding().canEncode(unicode)) { + code = getFontEncoding().convertToByte(unicode); } else if (unicodeToCode != null && unicodeToCode.containsKey(unicode)) { code = (int) unicodeToCode.get(unicode); } @@ -485,14 +485,14 @@ private void flushFontData() { PdfDictionary charProcs = new PdfDictionary(); for (int i = 0; i <= PdfFont.SIMPLE_FONT_MAX_CHAR_CODE_VALUE; i++) { Type3Glyph glyph = null; - if (fontEncoding.canDecode(i)) { - glyph = getType3Glyph(fontEncoding.getUnicode(i)); + if (getFontEncoding().canDecode(i)) { + glyph = getType3Glyph(getFontEncoding().getUnicode(i)); } if (glyph == null) { glyph = ((Type3Font) getFontProgram()).getType3GlyphByCode(i); } if (glyph != null) { - charProcs.put(new PdfName(fontEncoding.getDifference(i)), glyph.getContentStream()); + charProcs.put(new PdfName(getFontEncoding().getDifference(i)), glyph.getContentStream()); glyph.getContentStream().flush(); } } diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/Type3Font.java b/kernel/src/main/java/com/itextpdf/kernel/font/Type3Font.java index 4b6cfa00e6..e30087de24 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/Type3Font.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/Type3Font.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/font/Type3Glyph.java b/kernel/src/main/java/com/itextpdf/kernel/font/Type3Glyph.java index 9507241fc7..02b32bc534 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/font/Type3Glyph.java +++ b/kernel/src/main/java/com/itextpdf/kernel/font/Type3Glyph.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/AffineTransform.java b/kernel/src/main/java/com/itextpdf/kernel/geom/AffineTransform.java index 94f43c39df..b6ed8c9337 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/AffineTransform.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/AffineTransform.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -324,6 +324,17 @@ public boolean isIdentity() { return getType() == TYPE_IDENTITY; } + /** + * Gets an array filled with the values of this {@link AffineTransform} instance. + * + * @return an array filled with the values of this {@link AffineTransform} instance. + */ + public float[] getMatrix() { + float[] matrix = new float[6]; + getMatrix(matrix); + return matrix; + } + /** * Fills the matrix parameter with the values of this {@link AffineTransform} instance. * diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/BezierCurve.java b/kernel/src/main/java/com/itextpdf/kernel/geom/BezierCurve.java index 98a41cb5b8..160af72d38 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/BezierCurve.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/BezierCurve.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,8 +41,8 @@ public class BezierCurve implements IShape { * through both (x2, y2) and (x3, y3) nor (x1, y1) = (x4, y4) we * use the square of the sum of the distances mentioned below in * compare to this field as the criterion of good approximation. - * 1. The distance between the line and (x2, y2) - * 2. The distance between the line and (x3, y3) + * 1. The distance between the line and (x2, y2) + * 2. The distance between the line and (x3, y3) */ public static double distanceToleranceSquare = 0.025D; @@ -82,7 +82,7 @@ public List getBasePoints() { * {@link #distanceToleranceManhattan}. * * @return {@link java.util.List} containing points of piecewise linear approximation - * for this bezier curve. + * for this bezier curve. */ public List getPiecewiseLinearApproximation() { List points = new ArrayList<>(); @@ -91,15 +91,47 @@ public List getPiecewiseLinearApproximation() { recursiveApproximation(controlPoints.get(0).getX(), controlPoints.get(0).getY(), controlPoints.get(1).getX(), controlPoints.get(1).getY(), controlPoints.get(2).getX(), controlPoints.get(2).getY(), - controlPoints.get(3).getX(), controlPoints.get(3).getY(), points); + controlPoints.get(3).getX(), controlPoints.get(3).getY(), points, curveCollinearityEpsilon, + distanceToleranceSquare, distanceToleranceManhattan); + + points.add(controlPoints.get(controlPoints.size() - 1)); + return points; + } + + /** + * You can adjust precision of the approximation by varying the following + * parameters: {@link #curveCollinearityEpsilon}, {@link #distanceToleranceSquare}, + * {@link #distanceToleranceManhattan}. + * + * @param curveCollinearityEpsilon Epsilon for curve collinearity. + * @param distanceToleranceSquare Distance tolerance square. + * @param distanceToleranceManhattan Distance tolerance Manhattan. + * + * @return {@link java.util.List} containing points of piecewise linear approximation + * for this bezier curve. + */ + public List getPiecewiseLinearApproximation( + double curveCollinearityEpsilon, + double distanceToleranceSquare, + double distanceToleranceManhattan + ) { + List points = new ArrayList<>(); + points.add(controlPoints.get(0)); + + recursiveApproximation(controlPoints.get(0).getX(), controlPoints.get(0).getY(), + controlPoints.get(1).getX(), controlPoints.get(1).getY(), + controlPoints.get(2).getX(), controlPoints.get(2).getY(), + controlPoints.get(3).getX(), controlPoints.get(3).getY(), points, curveCollinearityEpsilon, + distanceToleranceSquare, distanceToleranceManhattan); points.add(controlPoints.get(controlPoints.size() - 1)); return points; } // Based on the De Casteljau's algorithm - private void recursiveApproximation(double x1, double y1, double x2, double y2, - double x3, double y3, double x4, double y4, List points) { + private static void recursiveApproximation(double x1, double y1, double x2, double y2, + double x3, double y3, double x4, double y4, List points, + double curveCollinearityEpsilon, double distanceToleranceSquare, double distanceToleranceManhattan) { // Subdivision using the De Casteljau's algorithm (t = 0.5) double x12 = (x1 + x2) / 2; double y12 = (y1 + y2) / 2; @@ -142,7 +174,9 @@ private void recursiveApproximation(double x1, double y1, double x2, double y2, } } - recursiveApproximation(x1, y1, x12, y12, x123, y123, x1234, y1234, points); - recursiveApproximation(x1234, y1234, x234, y234, x34, y34, x4, y4, points); + recursiveApproximation(x1, y1, x12, y12, x123, y123, x1234, y1234, points, + curveCollinearityEpsilon, distanceToleranceSquare, distanceToleranceManhattan); + recursiveApproximation(x1234, y1234, x234, y234, x34, y34, x4, y4, points, + curveCollinearityEpsilon, distanceToleranceSquare, distanceToleranceManhattan); } } diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/IShape.java b/kernel/src/main/java/com/itextpdf/kernel/geom/IShape.java index f62f178c27..9e5d1ebf4c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/IShape.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/IShape.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Line.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Line.java index 6d2c4082ff..de2f9f2466 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Line.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Line.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/LineSegment.java b/kernel/src/main/java/com/itextpdf/kernel/geom/LineSegment.java index 8b7279e0df..c5e39074d6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/LineSegment.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/LineSegment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Matrix.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Matrix.java index 754fc39a77..eda3aff0b0 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Matrix.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Matrix.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/PageSize.java b/kernel/src/main/java/com/itextpdf/kernel/geom/PageSize.java index bcf7920826..87fb713204 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/PageSize.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/PageSize.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Path.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Path.java index 0fe82635c7..d96d945169 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Path.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Path.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Rectangle.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Rectangle.java index 8de7d4c4f6..4b2e73e1bb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Rectangle.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Rectangle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/ShapeTransformUtil.java b/kernel/src/main/java/com/itextpdf/kernel/geom/ShapeTransformUtil.java index 5fb53089fc..7e70a3bdb1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/ShapeTransformUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/ShapeTransformUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Subpath.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Subpath.java index 0981cc75e8..12fe11dfa7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Subpath.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Subpath.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/geom/Vector.java b/kernel/src/main/java/com/itextpdf/kernel/geom/Vector.java index 02d3a2fec8..efc0ee95e4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/geom/Vector.java +++ b/kernel/src/main/java/com/itextpdf/kernel/geom/Vector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/logs/KernelLogMessageConstant.java b/kernel/src/main/java/com/itextpdf/kernel/logs/KernelLogMessageConstant.java index b922f8f385..41c97b2d75 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/logs/KernelLogMessageConstant.java +++ b/kernel/src/main/java/com/itextpdf/kernel/logs/KernelLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -111,6 +111,19 @@ public final class KernelLogMessageConstant { public static final String MEMORYLIMITAWAREHANDLER_OVERRIDE_CREATENEWINSTANCE_METHOD = "MemoryLimitsAwareHandler#createNewInstance method must be overriden."; + public static final String FAILED_TO_PROCESS_A_TRANSFORMATION_MATRIX = + "Failed to process a transformation matrix which is noninvertible. Some content may be placed not as " + + "expected."; + public static final String PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY = + "The PDF contains a BDC operator which refers to a not existing Property dictionary: {0}."; + public static final String UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS = + "Unable to parse operator '{0}', wrong number of operands {1}"; + public static final String PAGE_IS_FLUSHED_NO_CONTRAST = "Page content is flushed and cannot be processed for " + + "contrast analysis."; + public static final String UNSUPPORTED_COLOR_SPACE_CONTRAST = "Unsupported color space for contrast calculation: " + + "{0}"; + public static final String BOTH_WCAG_AA_AND_AAA_COMPLIANCE_CHECKS_DISABLED = "Both WCAG AA and AAA compliance " + + "checks are disabled. No contrast checks will be performed."; private KernelLogMessageConstant() { //Private constructor will prevent the instantiation of this class directly diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/AbstractMacIntegrityProtector.java b/kernel/src/main/java/com/itextpdf/kernel/mac/AbstractMacIntegrityProtector.java index 8f968d1a22..61b531fd4b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/AbstractMacIntegrityProtector.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/AbstractMacIntegrityProtector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/IMacContainerLocator.java b/kernel/src/main/java/com/itextpdf/kernel/mac/IMacContainerLocator.java index 0c5f3f3e48..3a65726057 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/IMacContainerLocator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/IMacContainerLocator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacContainerReader.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacContainerReader.java index caeda4072c..a068171781 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacContainerReader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacContainerReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacPdfObject.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacPdfObject.java index acde0dc591..e99e7aed23 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacPdfObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacPdfObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacProperties.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacProperties.java index ab2ac97237..f39f2e08c2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacSignatureContainerReader.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacSignatureContainerReader.java index 631b318c2a..6dfa9d9418 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacSignatureContainerReader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacSignatureContainerReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacStandaloneContainerReader.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacStandaloneContainerReader.java index b6ff355479..f287384e0f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacStandaloneContainerReader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacStandaloneContainerReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/MacValidationException.java b/kernel/src/main/java/com/itextpdf/kernel/mac/MacValidationException.java index 855bcfddd8..4d0aecbbc9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/MacValidationException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/MacValidationException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacContainerLocator.java b/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacContainerLocator.java index 7db971744c..6fc15d1f84 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacContainerLocator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacContainerLocator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacIntegrityProtector.java b/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacIntegrityProtector.java index 10fcc814b4..367bb08565 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacIntegrityProtector.java +++ b/kernel/src/main/java/com/itextpdf/kernel/mac/StandaloneMacIntegrityProtector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/AlphabetNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/AlphabetNumbering.java index 9967825358..5234f7ceba 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/AlphabetNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/AlphabetNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/ArmenianNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/ArmenianNumbering.java index e563cc832d..309c68104a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/ArmenianNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/ArmenianNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/EnglishAlphabetNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/EnglishAlphabetNumbering.java index 09e5240139..b130e55081 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/EnglishAlphabetNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/EnglishAlphabetNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/GeorgianNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/GeorgianNumbering.java index 1b88b4e595..5e72e5f573 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/GeorgianNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/GeorgianNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/GreekAlphabetNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/GreekAlphabetNumbering.java index 0267a68c32..db790a7b21 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/GreekAlphabetNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/GreekAlphabetNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/numbering/RomanNumbering.java b/kernel/src/main/java/com/itextpdf/kernel/numbering/RomanNumbering.java index 360c9a0721..7701898d5f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/numbering/RomanNumbering.java +++ b/kernel/src/main/java/com/itextpdf/kernel/numbering/RomanNumbering.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCII85CompressionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCII85CompressionStrategy.java new file mode 100644 index 0000000000..d4958e388d --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCII85CompressionStrategy.java @@ -0,0 +1,89 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.pdf; + +import com.itextpdf.io.source.ASCII85OutputStream; + +import java.io.OutputStream; + +/** + * A compression strategy that uses the {@code ASCII85Decode} filter for PDF + * streams. + * + *

+ * This strategy implements the {@link IStreamCompressionStrategy} interface + * and provides {@code ASCII85Decode} encoding. + * + *

+ * The strategy ensures, that streams are saved using just 7-bit ASCII + * characters, but it typically increases sizes of streams by 25% compared to + * just saving them as-is. So calling this a "compression strategy" is a + * misnomer. + */ +public class ASCII85CompressionStrategy implements IStreamCompressionStrategy { + /** + * Constructs a new {@link ASCII85CompressionStrategy} instance. + */ + public ASCII85CompressionStrategy() { + // empty constructor + } + + /** + * Returns the name of the compression filter. + * + * @return {@link PdfName#ASCII85Decode} representing the {@code ASCII85Decode} filter + */ + @Override + public PdfName getFilterName() { + return PdfName.ASCII85Decode; + } + + /** + * Returns the decode parameters for the {@code ASCII85Decode} filter. + *

+ * This implementation returns {@code null} as no special decode parameters + * are required for standard ASCII85 compression. + * + * @return {@code null} as no decode parameters are needed + */ + @Override + public PdfObject getDecodeParams() { + return null; + } + + /** + * Creates a new output stream with ASCII85 compression applied. + *

+ * This method wraps the original output stream in a {@link ASCII85OutputStream} + * that applies ASCII85 compression. + * + * @param original the original output stream to wrap + * @param stream the PDF stream containing compression configuration + * + * @return a new {@link ASCII85OutputStream} that compresses data using the ASCII85 algorithm + */ + @Override + public OutputStream createNewOutputStream(OutputStream original, PdfStream stream) { + return new ASCII85OutputStream(original); + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCIIHexCompressionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCIIHexCompressionStrategy.java new file mode 100644 index 0000000000..6cd5374764 --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/ASCIIHexCompressionStrategy.java @@ -0,0 +1,88 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.pdf; + +import com.itextpdf.io.source.ASCIIHexOutputStream; + +import java.io.OutputStream; + +/** + * A compression strategy that uses the {@code ASCIIHexDecode} filter for PDF + * streams. + * + *

+ * This strategy implements the {@link IStreamCompressionStrategy} interface + * and provides {@code ASCIIHexDecode} encoding. + * + *

+ * The strategy ensures, that streams are saved using just 7-bit ASCII + * characters, but it doubles the sizes of streams compared to just saving + * them as-is. So calling this a "compression strategy" is a misnomer. + */ +public class ASCIIHexCompressionStrategy implements IStreamCompressionStrategy { + /** + * Constructs a new {@link ASCIIHexCompressionStrategy} instance. + */ + public ASCIIHexCompressionStrategy() { + // empty constructor + } + + /** + * Returns the name of the compression filter. + * + * @return {@link PdfName#ASCIIHexDecode} representing the {@code ASCIIHexDecode} filter + */ + @Override + public PdfName getFilterName() { + return PdfName.ASCIIHexDecode; + } + + /** + * Returns the decode parameters for the {@code ASCIIHexDecode} filter. + *

+ * This implementation returns {@code null} as no special decode parameters + * are required for standard ASCIIHex compression. + * + * @return {@code null} as no decode parameters are needed + */ + @Override + public PdfObject getDecodeParams() { + return null; + } + + /** + * Creates a new output stream with ASCIIHex compression applied. + *

+ * This method wraps the original output stream in a {@link ASCIIHexOutputStream} + * that applies ASCIIHex compression. + * + * @param original the original output stream to wrap + * @param stream the PDF stream containing compression configuration + * + * @return a new {@link ASCIIHexOutputStream} that compresses data using the ASCIIHex algorithm + */ + @Override + public OutputStream createNewOutputStream(OutputStream original, PdfStream stream) { + return new ASCIIHexOutputStream(original); + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/CompressionConstants.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/CompressionConstants.java index 028a3a1e51..ea9399e1ae 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/CompressionConstants.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/CompressionConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/CountOutputStream.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/CountOutputStream.java index 985953c7e8..e8053e3830 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/CountOutputStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/CountOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/DefaultFontStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/DefaultFontStrategy.java index 449ae8e459..a50ec0da7e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/DefaultFontStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/DefaultFontStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/DestinationResolverCopyFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/DestinationResolverCopyFilter.java index d61725fc90..4573642e4c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/DestinationResolverCopyFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/DestinationResolverCopyFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -59,7 +59,7 @@ public boolean shouldProcess(PdfObject newParent, PdfName name, PdfObject value) if (workRef.getType() == PdfObject.DICTIONARY) { final PdfDictionary dict = (PdfDictionary) workRef; // a goto action - if (dict.getAsName(PdfName.S) == PdfName.GoTo) { + if (PdfName.GoTo.equals(dict.getAsName(PdfName.S))) { processAction(newParent, name, dict); return false; } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentInfoHelper.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentInfoHelper.java index 8b9562a2e2..915ab479ef 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentInfoHelper.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentInfoHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentProperties.java index 77b5b0d8a7..65b03bdb3b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentRevision.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentRevision.java index 9eb4eb1745..6a5da0c496 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentRevision.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/DocumentRevision.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandler.java index 69975bd7fc..a2ac60db7f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionConstants.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionConstants.java index 2e3e247f32..21797a6788 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionConstants.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionProperties.java index 7a32e9a844..83f7754d01 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/EncryptionProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/FingerPrint.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/FingerPrint.java index 9f9a165d15..7cce272dd1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/FingerPrint.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/FingerPrint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/FlateCompressionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/FlateCompressionStrategy.java index dd734395e4..7f2116cee4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/FlateCompressionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/FlateCompressionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/GenericNameTree.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/GenericNameTree.java index d92d6e75ca..455ba658aa 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/GenericNameTree.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/GenericNameTree.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfNameTreeAccess.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfNameTreeAccess.java index 8d844f13e8..2ff2da7acd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfNameTreeAccess.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfNameTreeAccess.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageExtraCopier.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageExtraCopier.java index 97fd5789b4..60ccf71005 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageExtraCopier.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageExtraCopier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFactory.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFactory.java index 60b169abe6..8a5ddce49d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFormCopier.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFormCopier.java index 70c6f9e4df..624dfdf4ee 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFormCopier.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IPdfPageFormCopier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IStreamCompressionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IStreamCompressionStrategy.java index 44c0401383..cf539c3e55 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IStreamCompressionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IStreamCompressionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/IndirectFilterUtils.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/IndirectFilterUtils.java index 56a6a80942..cd5042411b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/IndirectFilterUtils.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/IndirectFilterUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareFilter.java index 15496b1122..3c6ff0e1f1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandler.java index f438f3aded..45a6f0f099 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -31,13 +31,17 @@ This file is part of the iText (R) project. import org.slf4j.LoggerFactory; /** - * A {@link MemoryLimitsAwareHandler} handles memory allocation and prevents decompressed - * pdf streams from occupation of more space than allowed. + * Enforces configurable limits intended to protect PDF reading/parsing against excessive memory consumption. * - *

A configured MemoryLimitsAwareHandler can be set as a property of {@link ReaderProperties} - * instance which is passed to {@link PdfReader}. + *

The handler is primarily used during decoding (decompression) of PDF streams, but also guards against other + * potentially unbounded structures during reading, e.g. cross-reference (xref) table growth and per-page XObject usage. + * + *

How it is configured

+ *

A configured handler can be set on {@link ReaderProperties} and will be used by {@link PdfReader} when opening + * a document. * * @see ReaderProperties#setMemoryLimitsAwareHandler(MemoryLimitsAwareHandler) + * @see MemoryLimitsAwareException */ public class MemoryLimitsAwareHandler { @@ -64,8 +68,8 @@ public class MemoryLimitsAwareHandler { boolean considerCurrentPdfStream = false; /** - * Creates a {@link MemoryLimitsAwareHandler} which will be used to handle decompression of pdf streams. - * The max allowed memory limits will be generated by default. + * Creates a {@link MemoryLimitsAwareHandler} to handle decompression of PDF streams and other memory-related limits + * during reading. */ public MemoryLimitsAwareHandler() { this(SINGLE_DECOMPRESSED_PDF_STREAM_MIN_SIZE, SUM_OF_DECOMPRESSED_PDF_STREAMS_MIN_SIZE, @@ -73,10 +77,10 @@ public MemoryLimitsAwareHandler() { } /** - * Creates a {@link MemoryLimitsAwareHandler} which will be used to handle decompression of pdf streams. - * The max allowed memory limits will be generated by default, based on the size of the document. + * Creates a {@link MemoryLimitsAwareHandler} with calculated memory limits + * for decompression and xref structures based on the provided document size. * - * @param documentSize the size of the document, which is going to be handled by iText. + * @param documentSize the size of the document (in bytes). */ public MemoryLimitsAwareHandler(long documentSize) { this((int) calculateDefaultParameter(documentSize, SINGLE_SCALE_COEFFICIENT, @@ -112,9 +116,9 @@ public MemoryLimitsAwareHandler createNewInstance() { } /** - * Gets the maximum allowed size which can be occupied by a single decompressed pdf stream. + * Returns the maximum allowed size (in bytes) of a single decompressed PDF stream. * - * @return the maximum allowed size which can be occupied by a single decompressed pdf stream. + * @return maximum allowed size of a single decompressed stream in bytes. */ public int getMaxSizeOfSingleDecompressedPdfStream() { return maxSizeOfSingleDecompressedPdfStream; diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStream.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStream.java index 8d5b496296..a2ff4b313a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/OcgPropertiesCopier.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/OcgPropertiesCopier.java index 3afbaf1f71..5eb289dd00 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/OcgPropertiesCopier.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/OcgPropertiesCopier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -79,24 +79,41 @@ public static void copyOCGProperties(PdfDocument sourceDocument, PdfDocument des } } - /** - * Get all OCGs from a given page annotations/xobjects/resources, including ones already stored in catalog - * - * @param page where to search for OCGs. - * @return set of indirect references pointing to found OCGs. - */ - static Set getOCGsFromPage(PdfPage page) { - //Using linked hash set for elements order consistency (e.g. in tests) - final Set ocgs = new LinkedHashSet<>(); - final List annotations = page.getAnnotations(); - for (PdfAnnotation annotation : annotations) { - //Pass null instead of catalog OCProperties value, to include ocg clashing with catalog - getUsedNonFlushedOCGsFromAnnotation(annotation, annotation, ocgs, null); + static void getUsedNonFlushedOCGsFromAnnotation(PdfAnnotation toAnnot, PdfAnnotation fromAnnot, + Set fromUsedOcgs, + PdfDictionary toOcProperties) { + OcgPropertiesCopier.getUsedNonFlushedOCGsFromOcDict(toAnnot.getPdfObject().getAsDictionary(PdfName.OC), + fromAnnot.getPdfObject().getAsDictionary(PdfName.OC), fromUsedOcgs, toOcProperties); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getNormalAppearanceObject(), + fromAnnot.getNormalAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getRolloverAppearanceObject(), + fromAnnot.getRolloverAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getDownAppearanceObject(), + fromAnnot.getDownAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); + } + + static void getUsedNonFlushedOCGsFromResources(PdfDictionary toResources, PdfDictionary fromResources, + Set fromUsedOcgs, PdfDictionary toOcProperties, + Set visitedObjects) { + if (toResources != null && !toResources.isFlushed()) { + // Copy OCGs from properties + final PdfDictionary toProperties = toResources.getAsDictionary(PdfName.Properties); + final PdfDictionary fromProperties = fromResources.getAsDictionary(PdfName.Properties); + if (toProperties != null && !toProperties.isFlushed()) { + for (final PdfName name : toProperties.keySet()) { + final PdfObject toCurrObj = toProperties.get(name); + final PdfObject fromCurrObj = fromProperties.get(name); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromOcDict( + toCurrObj, fromCurrObj, fromUsedOcgs, toOcProperties); + } + } + + // Copy OCGs from xObject + final PdfDictionary toXObject = toResources.getAsDictionary(PdfName.XObject); + final PdfDictionary fromXObject = fromResources.getAsDictionary(PdfName.XObject); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toXObject, fromXObject, fromUsedOcgs, toOcProperties, + visitedObjects); } - final PdfDictionary resources = page.getPdfObject().getAsDictionary(PdfName.Resources); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromResources(resources, resources, ocgs, - null, new HashSet<>()); - return ocgs; } private static Set getAllUsedNonFlushedOCGs(Map page2page, PdfDictionary toOcProperties) { @@ -130,39 +147,6 @@ private static Set getAllUsedNonFlushedOCGs(Map fromUsedOcgs, PdfDictionary toOcProperties) { - OcgPropertiesCopier.getUsedNonFlushedOCGsFromOcDict(toAnnot.getPdfObject().getAsDictionary(PdfName.OC), - fromAnnot.getPdfObject().getAsDictionary(PdfName.OC), fromUsedOcgs, toOcProperties); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getNormalAppearanceObject(), - fromAnnot.getNormalAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getRolloverAppearanceObject(), - fromAnnot.getRolloverAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toAnnot.getDownAppearanceObject(), - fromAnnot.getDownAppearanceObject(), fromUsedOcgs, toOcProperties, new HashSet<>()); - } - - private static void getUsedNonFlushedOCGsFromResources(PdfDictionary toResources, PdfDictionary fromResources, - Set fromUsedOcgs, PdfDictionary toOcProperties, Set visitedObjects) { - if (toResources != null && !toResources.isFlushed()) { - // Copy OCGs from properties - final PdfDictionary toProperties = toResources.getAsDictionary(PdfName.Properties); - final PdfDictionary fromProperties = fromResources.getAsDictionary(PdfName.Properties); - if (toProperties != null && !toProperties.isFlushed()) { - for (final PdfName name : toProperties.keySet()) { - final PdfObject toCurrObj = toProperties.get(name); - final PdfObject fromCurrObj = fromProperties.get(name); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromOcDict(toCurrObj, fromCurrObj, fromUsedOcgs, toOcProperties); - } - } - - // Copy OCGs from xObject - final PdfDictionary toXObject = toResources.getAsDictionary(PdfName.XObject); - final PdfDictionary fromXObject = fromResources.getAsDictionary(PdfName.XObject); - OcgPropertiesCopier.getUsedNonFlushedOCGsFromXObject(toXObject, fromXObject, fromUsedOcgs, toOcProperties, - visitedObjects); - } - } - private static void getUsedNonFlushedOCGsFromXObject(PdfDictionary toXObject, PdfDictionary fromXObject, Set fromUsedOcgs, PdfDictionary toOcProperties, Set visitedObjects) { //Resolving cycled properties, by memorizing the visited objects diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageContentRotationHelper.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageContentRotationHelper.java index 4fbda6cbef..523f986475 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageContentRotationHelper.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageContentRotationHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageFlushingHelper.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageFlushingHelper.java index bc4a2c333d..401a4fc661 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageFlushingHelper.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageFlushingHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageLabelNumberingStyle.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageLabelNumberingStyle.java index 2072cebf06..58b192e0f3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageLabelNumberingStyle.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageLabelNumberingStyle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageResizer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageResizer.java index 3c0722fe47..3a11e5706a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PageResizer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PageResizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAConformance.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAConformance.java index 977a537a15..7521db4f05 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAConformance.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAConformance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAnnotationBorder.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAnnotationBorder.java index c16fae88dc..28f7a83f84 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAnnotationBorder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfAnnotationBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArray.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArray.java index 3f2c5a6f4b..88070091b1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArray.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArrayDirectIterator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArrayDirectIterator.java index 3ee1cbe164..2dcb8dc829 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArrayDirectIterator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfArrayDirectIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfBoolean.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfBoolean.java index ee44875072..3f12e77a82 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfBoolean.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfBoolean.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfCatalog.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfCatalog.java index 90eb3297f1..4ad566c911 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfCatalog.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfCatalog.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -61,7 +61,7 @@ public class PdfCatalog extends PdfObjectWrapper { private static final Set PAGE_LAYOUTS = Collections.unmodifiableSet(new HashSet<>( Arrays.asList(PdfName.SinglePage, PdfName.OneColumn, PdfName.TwoColumnLeft, PdfName.TwoColumnRight, PdfName.TwoPageLeft, PdfName.TwoPageRight))); - final private PdfPagesTree pageTree; + /** * Map of the {@link PdfNameTree}. Used for creation {@code name tree} dictionary. */ @@ -74,6 +74,8 @@ public class PdfCatalog extends PdfObjectWrapper { * The document’s optional content properties dictionary. */ protected PdfOCProperties ocProperties; + + private final PdfPagesTree pageTree; private PdfOutline outlines; //This HashMap contents all pages of the document and outlines associated to them private final Map> pagesWithOutlines = new HashMap<>(); @@ -131,9 +133,9 @@ protected PdfCatalog(PdfDocument pdfDocument) { * @return the Optional Content Properties Dictionary */ public PdfOCProperties getOCProperties(boolean createIfNotExists) { - if (ocProperties != null) + if (ocProperties != null) { return ocProperties; - else { + } else { PdfDictionary ocPropertiesDict = getPdfObject().getAsDictionary(PdfName.OCProperties); if (ocPropertiesDict != null) { if (getDocument().getWriter() != null) { @@ -165,11 +167,6 @@ public void flush() { logger.warn("PdfCatalog cannot be flushed manually"); } - @Override - protected boolean isWrappedObjectMustBeIndirect() { - return true; - } - /** * A value specifying a destination that shall be displayed when the document is opened. * See ISO 32000-1, Table 28 – Entries in the catalog dictionary. @@ -289,7 +286,7 @@ public PdfCatalog setViewerPreferences(PdfViewerPreferences preferences) { /** * This method gets Names tree from the catalog. * - * @param treeType type of the tree (Dests, AP, EmbeddedFiles etc). + * @param treeType type of the tree (Dests, AP, EmbeddedFiles etc.). * * @return returns {@link PdfNameTree} */ @@ -389,12 +386,14 @@ public void addDeveloperExtension(PdfDeveloperExtension extension) { PdfDictionary existingExtensionDict = extensions.getAsDictionary(extension.getPrefix()); if (existingExtensionDict != null) { int diff = extension.getBaseVersion().compareTo(existingExtensionDict.getAsName(PdfName.BaseVersion)); - if (diff < 0) + if (diff < 0) { return; + } diff = extension.getExtensionLevel() - existingExtensionDict. getAsNumber(PdfName.ExtensionLevel).intValue(); - if (diff <= 0) + if (diff <= 0) { return; + } } extensions.put(extension.getPrefix(), extension.getDeveloperExtensions()); } @@ -487,6 +486,11 @@ public PdfCatalog remove(PdfName key) { return this; } + @Override + protected boolean isWrappedObjectMustBeIndirect() { + return true; + } + /** * True indicates that getOCProperties() was called, may have been modified, * and thus its dictionary needs to be reconstructed. @@ -500,6 +504,7 @@ protected boolean isOCPropertiesMayHaveChanged() { void setOcgCopied(boolean ocgCopied) { this.ocgCopied = ocgCopied; } + PdfPagesTree getPageTree() { return pageTree; } @@ -514,7 +519,7 @@ Map> getPagesWithOutlines() { } /** - * This methods adds new name to the Dests NameTree. It throws an exception, if the name already exists. + * This method adds new name to the Dests NameTree. It throws an exception, if the name already exists. * * @param key Name of the destination. * @param value An object destination refers to. Must be an array or a dictionary with key /D and array. @@ -525,7 +530,7 @@ void addNamedDestination(PdfString key, PdfObject value) { } /** - * This methods adds a new name to the specified NameTree. It throws an exception, if the name already exists. + * This method adds a new name to the specified NameTree. It throws an exception, if the name already exists. * * @param key key in the name tree * @param value value in the name tree @@ -602,11 +607,9 @@ void removeOutlines(PdfPage page) { } if (hasOutlines()) { getOutlines(false); - if (pagesWithOutlines.size() > 0) { - if (pagesWithOutlines.get(page.getPdfObject()) != null) { - for (PdfOutline outline : pagesWithOutlines.get(page.getPdfObject())) { - outline.removeOutline(); - } + if (!pagesWithOutlines.isEmpty() && pagesWithOutlines.get(page.getPdfObject()) != null) { + for (PdfOutline outline : pagesWithOutlines.get(page.getPdfObject())) { + outline.removeOutline(); } } } @@ -618,10 +621,11 @@ void removeOutlines(PdfPage page) { * @param outline the outline dictionary that shall be the root of the document’s outline hierarchy */ void addRootOutline(PdfOutline outline) { - if (!outlineMode) + if (!outlineMode) { return; + } - if (pagesWithOutlines.size() == 0) { + if (pagesWithOutlines.isEmpty()) { put(PdfName.Outlines, outline.getContent()); } } @@ -733,8 +737,9 @@ PdfDestination copyDestination(PdfObject dest, Map page2page, PdfArray srcDestArray = (PdfArray) dests.get(srcDestName); if (srcDestArray != null) { PdfObject pageObject = srcDestArray.get(0); - if (pageObject instanceof PdfNumber) + if (pageObject instanceof PdfNumber) { pageObject = getDocument().getPage(((PdfNumber) pageObject).intValue() + 1).getPdfObject(); + } for (PdfPage oldPage : page2page.keySet()) { if (oldPage.getPdfObject() == pageObject) { d = new PdfStringDestination(srcDestName); @@ -785,21 +790,6 @@ private PdfDestination createDestinationFromPageNum(PdfObject dest, PdfDocument NullCopyFilter.getInstance())); } - private static PdfDestination createDestinationFromPageRef(PdfObject dest, Map page2page, - PdfDocument toDocument, PdfObject pageObject) { - for (PdfPage oldPage : page2page.keySet()) { - if (oldPage.getPdfObject() == pageObject) { - // in the copiedArray old page ref will be correctly replaced by the new page ref - // as this page is already copied - final PdfArray copiedArray = (PdfArray) dest.copyTo(toDocument, false, - NullCopyFilter.getInstance()); - return new PdfExplicitDestination(copiedArray); - } - } - - return null; - } - private boolean isEqualSameNameDestExist(Map page2page, PdfDocument toDocument, PdfString srcDestName, PdfArray srcDestArray, PdfPage oldPage) { PdfArray sameNameDest = (PdfArray) toDocument.getCatalog().getNameTree(PdfName.Dests). @@ -808,8 +798,8 @@ private boolean isEqualSameNameDestExist(Map page2page, PdfDoc if (sameNameDest != null && sameNameDest.getAsDictionary(0) != null) { PdfIndirectReference existingDestPageRef = sameNameDest.getAsDictionary(0).getIndirectReference(); PdfIndirectReference newDestPageRef = page2page.get(oldPage).getPdfObject().getIndirectReference(); - if (equalSameNameDestExists = existingDestPageRef.equals(newDestPageRef) && - sameNameDest.size() == srcDestArray.size()) { + equalSameNameDestExists = existingDestPageRef.equals(newDestPageRef); + if (equalSameNameDestExists && sameNameDest.size() == srcDestArray.size()) { for (int i = 1; i < sameNameDest.size(); ++i) { equalSameNameDestExists = equalSameNameDestExists && sameNameDest.get(i).equals(srcDestArray.get(i)); @@ -855,7 +845,7 @@ private void addOutlineToPage(PdfOutline outline, PdfDictionary item, IPdfNameTr PdfDictionary action = item.getAsDictionary(PdfName.A); if (action != null) { PdfName actionType = action.getAsName(PdfName.S); - //Check if it is a go to action + //Check if it is a go-to action if (PdfName.GoTo.equals(actionType)) { checkIsoConformanceForAction(new PdfAction(action)); //First check if structure destination is present. @@ -873,4 +863,19 @@ private void addOutlineToPage(PdfOutline outline, PdfDictionary item, IPdfNameTr } } } + + private static PdfDestination createDestinationFromPageRef(PdfObject dest, Map page2page, + PdfDocument toDocument, PdfObject pageObject) { + for (PdfPage oldPage : page2page.keySet()) { + if (oldPage.getPdfObject() == pageObject) { + // in the copiedArray old page ref will be correctly replaced by the new page ref + // as this page is already copied + final PdfArray copiedArray = (PdfArray) dest.copyTo(toDocument, false, + NullCopyFilter.getInstance()); + return new PdfExplicitDestination(copiedArray); + } + } + + return null; + } } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfConformance.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfConformance.java index 563a58257a..edfcf39b8a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfConformance.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfConformance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDashPattern.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDashPattern.java index 571ba92f73..f22b470f97 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDashPattern.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDashPattern.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDate.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDate.java index c7ce4ee137..4d9e7e6477 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDate.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDate.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDeveloperExtension.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDeveloperExtension.java index c663b6ce3c..d0f1fb27bc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDeveloperExtension.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDeveloperExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionary.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionary.java index 25cd342dfb..4fcf0e7635 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionary.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionary.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryEntrySet.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryEntrySet.java index 6e7204de09..c777402c0b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryEntrySet.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryEntrySet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryValues.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryValues.java index 830690a191..f2469c2e94 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryValues.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDictionaryValues.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java index e441f3c4b7..54bb66350f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -108,26 +108,11 @@ public class PdfDocument implements Closeable { private static final Logger LOGGER = LoggerFactory.getLogger(PdfDocument.class); protected final StampingProperties properties; - /** - * List of indirect objects used in the document. - */ - final PdfXrefTable xref = new PdfXrefTable(); - private final Map documentFonts = new HashMap<>(); - private final Set documentHandlers = new LinkedHashSet<>(); - private final SequenceId documentId; - /** - * To be adjusted destinations. - * Key - originating page on the source document - * Value - a hashmap of Parent pdf objects and destinations to be updated - */ - private final List pendingDestinationMutations = - new ArrayList(); /** * PdfWriter associated with the document. * Not null if document opened either in writing or stamping mode. */ protected PdfWriter writer = null; - /** * PdfReader associated with the document. * Not null if document is opened either in reading or stamping mode. @@ -163,6 +148,11 @@ public class PdfDocument implements Closeable { protected DocumentInfoHelper documentInfoHelper = new DocumentInfoHelper(); protected DefaultFontStrategy defaultFontStrategy = new DefaultFontStrategy(this); protected IPdfPageFactory pdfPageFactory = new PdfPageFactory(); + + /** + * List of indirect objects used in the document. + */ + final PdfXrefTable xref = new PdfXrefTable(); /** * Cache of already serialized objects from this document for smart mode. */ @@ -171,6 +161,17 @@ public class PdfDocument implements Closeable { * Handler which will be used for decompression of pdf streams. */ MemoryLimitsAwareHandler memoryLimitsAwareHandler = null; + + private final Map documentFonts = new HashMap<>(); + private final Set documentHandlers = new LinkedHashSet<>(); + private final SequenceId documentId; + /** + * To be adjusted destinations. + * Key - originating page on the source document + * Value - a hashmap of Parent pdf objects and destinations to be updated + */ + private final List pendingDestinationMutations = new ArrayList<>(); + private final DIContainer diContainer = new DIContainer(); /** * Default page size. * New page by default will be created with this size. @@ -199,7 +200,6 @@ public class PdfDocument implements Closeable { private XMPMeta xmpMetadata = null; - private final DIContainer diContainer = new DIContainer(); /** * Open PDF document in reading mode. @@ -453,7 +453,6 @@ public PdfObject getPdfObject(int objNum) { } } - /** * Get number of indirect objects in the document. * @@ -744,7 +743,6 @@ public void removePage(int pageNum) { catalog.getPageTree().removePage(pageNum); } - /** * Gets the container containing all available dependencies. * @@ -787,7 +785,6 @@ public PdfString getOriginalDocumentId() { return originalDocumentId; } - /** * Gets modified document id *

@@ -1262,7 +1259,7 @@ public TagStructureContext getTagStructureContext() { public List copyPagesTo(int pageFrom, int pageTo, PdfDocument toDocument, int insertBeforePage) { return copyPagesTo(pageFrom, pageTo, toDocument, insertBeforePage, null); } - + /** * Get the {@link PdfConformance} * @@ -1414,7 +1411,7 @@ public List copyPagesTo(List pagesToCopy, PdfDocument toDocume page2page.put(page, newPage); if (lastCopiedPageNum >= pageNum) { - rangesOfPagesWithIncreasingNumbers.add(new HashMap()); + rangesOfPagesWithIncreasingNumbers.add(new HashMap<>()); } int lastRangeInd = rangesOfPagesWithIncreasingNumbers.size() - 1; rangesOfPagesWithIncreasingNumbers.get(lastRangeInd).put(page, newPage); @@ -1434,13 +1431,13 @@ public List copyPagesTo(List pagesToCopy, PdfDocument toDocume // Copying OCGs should go after copying LinkAnnotations if (getCatalog() != null && getCatalog().getPdfObject().getAsDictionary(PdfName.OCProperties) != null) { OcgPropertiesCopier.copyOCGProperties(this, toDocument, page2page); - if(toDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.OCProperties) != null){ + if (toDocument.getCatalog().getPdfObject().getAsDictionary(PdfName.OCProperties) != null) { toDocument.getCatalog().setOcgCopied(true); } } // It's important to copy tag structure after link annotations were copied, because object content items in tag - // structure are not copied in case if their's OBJ key is annotation and doesn't contain /P entry. + // structure are not copied in case if theirs OBJ key is annotation and doesn't contain /P entry. if (toDocument.isTagged()) { if (isTagged()) { try { @@ -1610,7 +1607,7 @@ public void initializeOutlines() { } /** - * This methods adds new name in the Dests NameTree. It throws an exception, if the name already exists. + * The method adds new name in the Dests NameTree. It throws an exception, if the name already exists. * * @param key Name of the destination. * @param value An object destination refers to. Must be an array or a dictionary with key /D and array. @@ -1621,7 +1618,7 @@ public void addNamedDestination(String key, PdfObject value) { } /** - * This methods adds new name in the Dests NameTree. It throws an exception, if the name already exists. + * The method adds new name in the Dests NameTree. It throws an exception, if the name already exists. * * @param key Name of the destination. * @param value An object destination refers to. Must be an array or a dictionary with key /D and array. @@ -1636,9 +1633,9 @@ public void addNamedDestination(PdfString key, PdfObject value) { } /** - * Gets static copy of cross reference table. + * Gets static copy of cross-reference table. * - * @return a static copy of cross reference table + * @return a static copy of cross-reference table */ public List listIndirectReferences() { checkClosingStatus(); @@ -1807,7 +1804,8 @@ public void setEncryptedPayload(PdfFileSpec fs) { throw new PdfException(KernelExceptionMessageConstant.CANNOT_SET_ENCRYPTED_PAYLOAD_TO_ENCRYPTED_DOCUMENT); } if (!PdfName.EncryptedPayload.equals(((PdfDictionary) fs.getPdfObject()).get(PdfName.AFRelationship))) { - LOGGER.error(IoLogMessageConstant.ENCRYPTED_PAYLOAD_FILE_SPEC_SHALL_HAVE_AFRELATIONSHIP_FILED_EQUAL_TO_ENCRYPTED_PAYLOAD); + LOGGER.error( + IoLogMessageConstant.ENCRYPTED_PAYLOAD_FILE_SPEC_SHALL_HAVE_AFRELATIONSHIP_FILED_EQUAL_TO_ENCRYPTED_PAYLOAD); } PdfEncryptedPayload encryptedPayload = PdfEncryptedPayload.extractFrom(fs); if (encryptedPayload == null) { @@ -1837,7 +1835,7 @@ public String[] getPageLabels() { return null; } Map pageLabels = catalog.getPageLabelsTree(false).getNumbers(); - if (pageLabels.size() == 0) { + if (pageLabels.isEmpty()) { return null; } String[] labelStrings = new String[getNumberOfPages()]; @@ -2068,7 +2066,7 @@ protected void flushObject(PdfObject pdfObject, boolean canBeInObjStm) throws IO } if (isClosing || flushAllowed) { writer.flushObject(pdfObject, canBeInObjStm); - } else if (pdfObject.getIndirectReference() != null) { + } else if (pdfObject.getIndirectReference() != null) { pdfObject.getIndirectReference().setState(PdfObject.MUST_BE_FLUSHED); } } @@ -2081,7 +2079,7 @@ protected void flushObject(PdfObject pdfObject, boolean canBeInObjStm) throws IO * or {@code null} otherwise */ protected void open(PdfVersion newPdfVersion) { - if (properties != null){ + if (properties != null) { for (Class aClass : properties.dependencies.keySet()) { diContainer.register(aClass, properties.dependencies.get(aClass)); } @@ -2156,7 +2154,7 @@ protected void open(PdfVersion newPdfVersion) { } getDocumentInfo().addModDate(); - if (trailer == null ) { + if (trailer == null) { trailer = new PdfDictionary(); } // We keep the original trailer of the document to preserve the original document keys, @@ -2301,7 +2299,7 @@ protected XMPMeta updateDefaultXmpMetadata() throws XMPException { } /** - * List all newly added or loaded fonts + * List all newly added or loaded fonts. * * @return List of {@link PdfFont}. */ @@ -2394,7 +2392,7 @@ protected void tryInitTagStructure(PdfDictionary str) { try { structTreeRoot = new PdfStructTreeRoot(str, this); structParentIndex = getStructTreeRoot().getParentTreeNextKey(); - } catch (MemoryLimitsAwareException e){ + } catch (MemoryLimitsAwareException e) { throw e; } catch (Exception e) { structTreeRoot = null; @@ -2445,9 +2443,9 @@ private void tryFlushTagStructure(boolean isAppendMode) { if (!isAppendMode || structTreeRoot.getPdfObject().isModified()) { structTreeRoot.flush(); } - } catch (MemoryLimitsAwareException e){ + } catch (MemoryLimitsAwareException e) { throw e; - } catch (Exception e) { + } catch (Exception e) { throw new PdfException(KernelExceptionMessageConstant.TAG_STRUCTURE_FLUSHING_FAILED_IT_MIGHT_BE_CORRUPTED, e); } @@ -2487,6 +2485,7 @@ private void removeUnusedWidgetsFromFields(PdfPage page) { } private void resolveDestinations(PdfDocument toDocument, Map page2page) { + // Classical for loop is used to allow pendingDestinationMutations modification during iteration for (int i = 0; i < pendingDestinationMutations.size(); ++i) { PdfDocument.DestinationMutationInfo mutation = pendingDestinationMutations.get(i); PdfDestination copiedDest = null; @@ -2508,8 +2507,7 @@ private void resolveDestinations(PdfDocument toDocument, Map p */ private void copyOutlines(Set outlines, PdfDocument toDocument, Map page2page) { - final Set outlinesToCopy = new HashSet<>(); - outlinesToCopy.addAll(outlines); + final Set outlinesToCopy = new HashSet<>(outlines); for (PdfOutline outline : outlines) { getAllOutlinesToCopy(outline, outlinesToCopy); diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocumentInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocumentInfo.java index acc2548dc6..dd7dbd3cbe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocumentInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocumentInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayload.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayload.java index 8691d2330f..19a6296d57 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayload.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayload.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayloadDocument.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayloadDocument.java index 3cfa7dc655..d6b4410abf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayloadDocument.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptedPayloadDocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryption.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryption.java index 73d7c1dd55..1d951e83ce 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryption.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryption.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptor.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptor.java index c3e1b536ac..f1acc35ca2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfEncryptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfIndirectReference.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfIndirectReference.java index c9c1849f55..cb8ae6ebf3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfIndirectReference.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfIndirectReference.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfLiteral.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfLiteral.java index c2038ccacb..87fb66bfee 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfLiteral.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfLiteral.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfName.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfName.java index 7f53be6c80..f935f3d69d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfName.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfName.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameLoader.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameLoader.java index 72670c9762..ac7e35d50a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameLoader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameLoader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameTree.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameTree.java index 52dee2aa9c..323fa41942 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameTree.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNameTree.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -78,22 +78,6 @@ private LinkedHashMap readFromCatalog() { return items; } - private static void normalizeDestinations(Map items) { - // normalise dest entries to arrays - - // A separate collection for keys is used for auto porting to C#, because in C# - // it is impossible to change the collection which you iterate in for loop - Set keys = new HashSet<>(items.keySet()); - for (PdfString key : keys) { - PdfArray arr = getDestArray(items.get(key)); - if (arr == null) { - items.remove(key); - } else { - items.put(key, arr); - } - } - } - private void insertDestsEntriesFromCatalog(Map items) { // make sure that destinations in the Catalog/Dests dictionary are listed // in the destination name tree (if that's what we're working on) @@ -110,6 +94,22 @@ private void insertDestsEntriesFromCatalog(Map items) { } } + private static void normalizeDestinations(Map items) { + // normalise dest entries to arrays + + // A separate collection for keys is used for auto porting to C#, because in C# + // it is impossible to change the collection which you iterate in for loop + Set keys = new HashSet<>(items.keySet()); + for (PdfString key : keys) { + PdfArray arr = getDestArray(items.get(key)); + if (arr == null) { + items.remove(key); + } else { + items.put(key, arr); + } + } + } + private static PdfArray getDestArray(PdfObject obj) { if (obj == null) { return null; diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNull.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNull.java index 8c5c795f74..4b93626cd8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNull.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNull.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumTree.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumTree.java index 97e0d63c7b..c8b826a17b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumTree.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumTree.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumber.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumber.java index 318528e1ca..eb2c682f9c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumber.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfNumber.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObject.java index a9d627f330..95a3652fa2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectStream.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectStream.java index 540c8e7bf2..d4b74cb831 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectWrapper.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectWrapper.java index 7c742bfa58..29c9123a12 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectWrapper.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfObjectWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutline.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutline.java index bfa905d66c..23019c271b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutline.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutline.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -46,12 +46,12 @@ public class PdfOutline { */ public static final int FLAG_BOLD = 2; - private List children = new ArrayList<>(); + private final List children = new ArrayList<>(); private String title; - private PdfDictionary content; + private final PdfDictionary content; private PdfDestination destination; private PdfOutline parent; - private PdfDocument pdfDoc; + private final PdfDocument pdfDoc; /** * Create instance of document outline. @@ -217,7 +217,7 @@ public void addAction(PdfAction action) { PdfObject structureDestinationObject = action.getPdfObject().get(PdfName.SD); if (structureDestinationObject != null) { setDestination(PdfDestination.makeDestination(structureDestinationObject)); - } else if(action.getPdfObject().get(PdfName.D) != null) { + } else if (action.getPdfObject().get(PdfName.D) != null) { setDestination(PdfDestination.makeDestination(action.getPdfObject().get(PdfName.D))); } } @@ -232,12 +232,13 @@ public void addAction(PdfAction action) { * @param open if false, the outline will be closed by default */ public void setOpen(boolean open) { - if (!open) + if (!open) { content.put(PdfName.Count, new PdfNumber(-1)); - else if (children.size() > 0) + } else if (!children.isEmpty()) { content.put(PdfName.Count, new PdfNumber(children.size())); - else + } else { content.remove(PdfName.Count); + } } /** @@ -260,13 +261,14 @@ public boolean isOpen() { * @return just created outline */ public PdfOutline addOutline(String title, int position) { - if (position == -1) + if (position == -1) { position = children.size(); + } PdfDictionary dictionary = new PdfDictionary(); PdfOutline outline = new PdfOutline(title, dictionary, this); dictionary.put(PdfName.Title, new PdfString(title, PdfEncodings.UNICODE_BIG)); dictionary.put(PdfName.Parent, content); - if (children.size() > 0) { + if (!children.isEmpty()) { if (position != 0) { PdfDictionary prevContent = children.get(position - 1).getContent(); dictionary.put(PdfName.Prev, prevContent); @@ -279,10 +281,12 @@ public PdfOutline addOutline(String title, int position) { } } - if (position == 0) + if (position == 0) { content.put(PdfName.First, dictionary); - if (position == children.size()) + } + if (position == children.size()) { content.put(PdfName.Last, dictionary); + } PdfNumber count = this.content.getAsNumber(PdfName.Count); if (count == null || count.getValue() != -1) { diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputIntent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputIntent.java index 1f878db5f6..ddf6aca2ee 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputIntent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputIntent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputStream.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputStream.java index 5ef98532d5..5d47fa9e48 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,21 +22,21 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.pdf; +import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.io.source.ByteArrayOutputStream; import com.itextpdf.io.source.ByteUtils; import com.itextpdf.io.source.HighPrecisionOutputStream; import com.itextpdf.io.source.IFinishable; -import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.crypto.OutputStreamEncryption; import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant; +import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.pdf.filters.FlateDecodeFilter; -import com.itextpdf.commons.utils.MessageFormatUtil; +import java.io.IOException; import java.io.OutputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; public class PdfOutputStream extends HighPrecisionOutputStream { @@ -602,7 +602,7 @@ private void write(PdfStream pdfStream) { assert pdfStream.getOutputStream() != null : "Error in outputStream"; ((ByteArrayOutputStream) pdfStream.getOutputStream().getOutputStream()).writeTo(zip); } - if (zip instanceof IFinishable){ + if (zip instanceof IFinishable) { ((IFinishable) zip).finish(); } } else { diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPage.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPage.java index adceda3063..453f1a4047 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPage.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -53,8 +53,6 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.xmp.XMPMeta; import com.itextpdf.kernel.xmp.XMPMetaFactory; import com.itextpdf.kernel.xmp.options.SerializeOptions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; @@ -63,12 +61,10 @@ This file is part of the iText (R) project. import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class PdfPage extends PdfObjectWrapper { - - private PdfResources resources = null; - private int mcid = -1; - PdfPages parentPages; private static final List PAGE_EXCLUDED_KEYS = new ArrayList<>(Arrays.asList( PdfName.Parent, PdfName.Annots, @@ -79,24 +75,27 @@ public class PdfPage extends PdfObjectWrapper { private static final List XOBJECT_EXCLUDED_KEYS; - static { - XOBJECT_EXCLUDED_KEYS = new ArrayList<>(Arrays.asList(PdfName.MediaBox, - PdfName.CropBox, - PdfName.TrimBox, - PdfName.Contents)); - XOBJECT_EXCLUDED_KEYS.addAll(PAGE_EXCLUDED_KEYS); - } + PdfPages parentPages; + private PdfResources resources = null; + private int mcid = -1; /** * Automatically rotate new content if the page has a rotation ( is disabled by default ) */ private boolean ignorePageRotationForContent = false; - /** * See {@link #isPageRotationInverseMatrixWritten()}. */ private boolean pageRotationInverseMatrixWritten = false; + static { + XOBJECT_EXCLUDED_KEYS = new ArrayList<>(Arrays.asList(PdfName.MediaBox, + PdfName.CropBox, + PdfName.TrimBox, + PdfName.Contents)); + XOBJECT_EXCLUDED_KEYS.addAll(PAGE_EXCLUDED_KEYS); + } + protected PdfPage(PdfDictionary pdfObject) { super(pdfObject); setForbidRelease(); @@ -167,6 +166,7 @@ public int getRotation() { * * @param degAngle the {@code int} number of degrees by which the page shall be rotated clockwise * when displayed or printed. Shall be a multiple of 90. + * * @return this {@link PdfPage} instance. */ public PdfPage setRotation(int degAngle) { @@ -179,18 +179,22 @@ public PdfPage setRotation(int degAngle) { * The situation when Contents object is a {@link PdfStream} is treated like a one element array. * * @param index the {@code int} index of returned {@link PdfStream}. + * * @return {@link PdfStream} object at specified index; - * will return null in case page dictionary doesn't adhere to the specification, meaning that the document is an invalid PDF. + * will return null in case page dictionary doesn't adhere to the specification, meaning that the document is an + * invalid PDF. + * * @throws IndexOutOfBoundsException if the index is out of range */ public PdfStream getContentStream(int index) { int count = getContentStreamCount(); - if (index >= count || index < 0) + if (index >= count || index < 0) { throw new IndexOutOfBoundsException(MessageFormatUtil.format("Index: {0}, Size: {1}", index, count)); + } PdfObject contents = getPdfObject().get(PdfName.Contents); - if (contents instanceof PdfStream) + if (contents instanceof PdfStream) { return (PdfStream) contents; - else if (contents instanceof PdfArray) { + } else if (contents instanceof PdfArray) { PdfArray a = (PdfArray) contents; return a.getAsStream(index); } else { @@ -206,9 +210,9 @@ else if (contents instanceof PdfArray) { */ public int getContentStreamCount() { PdfObject contents = getPdfObject().get(PdfName.Contents); - if (contents instanceof PdfStream) + if (contents instanceof PdfStream) { return 1; - else if (contents instanceof PdfArray) { + } else if (contents instanceof PdfArray) { return ((PdfArray) contents).size(); } else { return 0; @@ -221,8 +225,9 @@ else if (contents instanceof PdfArray) { * @return first {@link PdfStream} in Contents object, or {@code null} if Contents is empty. */ public PdfStream getFirstContentStream() { - if (getContentStreamCount() > 0) + if (getContentStreamCount() > 0) { return getContentStream(0); + } return null; } @@ -233,8 +238,9 @@ public PdfStream getFirstContentStream() { */ public PdfStream getLastContentStream() { int count = getContentStreamCount(); - if (count > 0) + if (count > 0) { return getContentStream(count - 1); + } return null; } @@ -275,38 +281,11 @@ public PdfResources getResources() { return getResources(true); } - PdfResources getResources(boolean initResourcesField) { - if (this.resources == null && initResourcesField) { - initResources(true); - } - return this.resources; - } - - PdfDictionary initResources(boolean initResourcesField) { - boolean readOnly = false; - PdfDictionary resources = getPdfObject().getAsDictionary(PdfName.Resources); - if (resources == null) { - resources = (PdfDictionary) getInheritedValue(PdfName.Resources, PdfObject.DICTIONARY); - if (resources != null) { - readOnly = true; - } - } - if (resources == null) { - resources = new PdfDictionary(); - // not marking page as modified because of this change - getPdfObject().put(PdfName.Resources, resources); - } - if (initResourcesField) { - this.resources = new PdfResources(resources); - this.resources.setReadOnly(readOnly); - } - return resources; - } - /** * Sets {@link PdfResources} object. * * @param pdfResources {@link PdfResources} to set. + * * @return this {@link PdfPage} instance. */ public PdfPage setResources(PdfResources pdfResources) { @@ -315,11 +294,37 @@ public PdfPage setResources(PdfResources pdfResources) { return this; } + /** + * Serializes XMP Metadata to byte array and sets it. + * + * @param xmpMeta the {@link XMPMeta} object to set. + * @param serializeOptions the {@link SerializeOptions} used while serialization. + * + * @return this {@link PdfPage} instance. + * + * @throws XMPException in case of XMP Metadata serialization error. + * @throws IOException in case of writing error. + */ + public PdfPage setXmpMetadata(XMPMeta xmpMeta, SerializeOptions serializeOptions) throws XMPException, IOException { + return setXmpMetadata(XMPMetaFactory.serializeToBuffer(xmpMeta, serializeOptions)); + } + + /** + * Gets the XMP Metadata object. + * + * @return {@link PdfStream} object, that represent XMP Metadata. + */ + public PdfStream getXmpMetadata() { + return getPdfObject().getAsStream(PdfName.Metadata); + } + /** * Sets the XMP Metadata. * * @param xmpMetadata the {@code byte[]} of XMP Metadata to set. + * * @return this {@link PdfPage} instance. + * * @throws IOException in case of writing error. */ public PdfPage setXmpMetadata(byte[] xmpMetadata) throws IOException { @@ -331,24 +336,13 @@ public PdfPage setXmpMetadata(byte[] xmpMetadata) throws IOException { return this; } - /** - * Serializes XMP Metadata to byte array and sets it. - * - * @param xmpMeta the {@link XMPMeta} object to set. - * @param serializeOptions the {@link SerializeOptions} used while serialization. - * @return this {@link PdfPage} instance. - * @throws XMPException in case of XMP Metadata serialization error. - * @throws IOException in case of writing error. - */ - public PdfPage setXmpMetadata(XMPMeta xmpMeta, SerializeOptions serializeOptions) throws XMPException, IOException { - return setXmpMetadata(XMPMetaFactory.serializeToBuffer(xmpMeta, serializeOptions)); - } - /** * Serializes XMP Metadata to byte array and sets it. Uses padding equals to 2000. * * @param xmpMeta the {@link XMPMeta} object to set. + * * @return this {@link PdfPage} instance. + * * @throws XMPException in case of XMP Metadata serialization error. * @throws IOException in case of writing error. */ @@ -358,21 +352,13 @@ public PdfPage setXmpMetadata(XMPMeta xmpMeta) throws XMPException, IOException return setXmpMetadata(xmpMeta, serializeOptions); } - /** - * Gets the XMP Metadata object. - * - * @return {@link PdfStream} object, that represent XMP Metadata. - */ - public PdfStream getXmpMetadata() { - return getPdfObject().getAsStream(PdfName.Metadata); - } - /** * Copies page to the specified document. *

* NOTE: Works only for pages from the document opened in reading mode, otherwise an exception is thrown. * * @param toDocument a document to copy page to. + * * @return copied {@link PdfPage}. */ public PdfPage copyTo(PdfDocument toDocument) { @@ -388,6 +374,7 @@ public PdfPage copyTo(PdfDocument toDocument) { * @param copier a copier which bears a special copy logic. May be null. * It is recommended to use the same instance of {@link IPdfPageExtraCopier} * for the same output document. + * * @return copied {@link PdfPage}. */ public PdfPage copyTo(PdfDocument toDocument, IPdfPageExtraCopier copier) { @@ -402,18 +389,18 @@ public PdfPage copyTo(PdfDocument toDocument, IPdfPageExtraCopier copier) { * {@link IPdfPageFormCopier#recreateAcroformToProcessCopiedFields(PdfDocument)} method after copying the * tag structure to process copied fields, like add them to the document and merge fields with the same names. * - * @param toDocument a document to copy page to. - * @param copier a copier which bears a special copy logic. May be null. - * It is recommended to use the same instance of {@link IPdfPageExtraCopier} - * for the same output document. + * @param toDocument a document to copy page to. + * @param copier a copier which bears a special copy logic. May be null. + * It is recommended to use the same instance of {@link IPdfPageExtraCopier} + * for the same output document. * @param addPageToDocument true if page should be added to document. - * @param pageInsertIndex position to add the page to, if -1 page will be added to the end of the document, - * will be ignored if addPageToDocument is false. + * @param pageInsertIndex position to add the page to, if -1 page will be added to the end of the document, + * will be ignored if addPageToDocument is false. * * @return copied {@link PdfPage}. */ public PdfPage copyTo(PdfDocument toDocument, IPdfPageExtraCopier copier, - boolean addPageToDocument, int pageInsertIndex) { + boolean addPageToDocument, int pageInsertIndex) { final ICopyFilter copyFilter = new DestinationResolverCopyFilter(this.getDocument(), toDocument); final PdfDictionary dictionary = getPdfObject().copyTo(toDocument, PAGE_EXCLUDED_KEYS, true, copyFilter); @@ -436,21 +423,24 @@ public PdfPage copyTo(PdfDocument toDocument, IPdfPageExtraCopier copier, * @return set of pdf layers, associated with this page. */ public Set getPdfLayers() { - Set ocgs = OcgPropertiesCopier.getOCGsFromPage(this); - Set result = new LinkedHashSet<>(); - for (PdfIndirectReference ocg : ocgs) { - if (ocg.getRefersTo() != null && ocg.getRefersTo().isDictionary()) { - result.add(new PdfLayer((PdfDictionary) ocg.getRefersTo())); + Set ocgs = getOCGsFromPage(this); + List allLayers = getDocument().getCatalog().getOCProperties(false).getLayers(); + Set pageLayers = new HashSet<>(); + for (PdfLayer layer : allLayers) { + if (ocgs.contains(layer.getPdfObject().getIndirectReference())) { + pageLayers.add(layer); } } - return result; + return pageLayers; } /** * Copies page as FormXObject to the specified document. * * @param toDocument a document to copy to. + * * @return copied {@link PdfFormXObject} object. + * * @throws IOException if an I/O error occurs. */ public PdfFormXObject copyAsFormXObject(PdfDocument toDocument) throws IOException { @@ -483,8 +473,9 @@ public PdfFormXObject copyAsFormXObject(PdfDocument toDocument) throws IOExcepti * @return {@link PdfDocument} that owns that page, or {@code null} if such document isn't exist. */ public PdfDocument getDocument() { - if (getPdfObject().getIndirectReference() != null) + if (getPdfObject().getIndirectReference() != null) { return getPdfObject().getIndirectReference().getDocument(); + } return null; } @@ -493,7 +484,8 @@ public PdfDocument getDocument() { *

* If the page belongs to the document which is tagged, page flushing also triggers flushing of the tags, * which are considered to belong to the page. The logic that defines if the given tag (structure element) belongs - * to the page is the following: if all the marked content references (dictionary or number references), that are the + * to the page is the following: if all the marked content references (dictionary or number references), that are + * the * descendants of the given structure element, belong to the current page - the tag is considered * to belong to the page. If tag has descendants from several pages - it is flushed, if all other pages except the * current one are flushed. @@ -503,23 +495,32 @@ public void flush() { flush(false); } + @Override + protected boolean isWrappedObjectMustBeIndirect() { + return true; + } + /** - * Flushes page dictionary, its content streams, annotations and thumb image. If flushResourcesContentStreams is true, + * Flushes page dictionary, its content streams, annotations and thumb image. If + * flushResourcesContentStreams is true, * all content streams that are rendered on this page (like FormXObjects, annotation appearance streams, patterns) * and also all images associated with this page will also be flushed. *

* For notes about tag structure flushing see {@link PdfPage#flush() PdfPage#flush() method}. *

- * If PdfADocument is used, flushing will be applied only if flushResourcesContentStreams is true. + * If PdfADocument is used, flushing will be applied only if flushResourcesContentStreams + * is true. *

* Be careful with handling document in which some of the pages are flushed. Keep in mind that flushed objects are * finalized and are completely written to the output stream. This frees their memory but makes * it impossible to modify or read data from them. Whenever there is an attempt to modify or to fetch * flushed object inner contents an exception will be thrown. Flushing is only possible for objects in the writing - * and stamping modes, also its possible to flush modified objects in append mode. + * and stamping modes, also it's possible to flush modified objects in append mode. * - * @param flushResourcesContentStreams if true all content streams that are rendered on this page (like form xObjects, - * annotation appearance streams, patterns) and also all images associated with this page + * @param flushResourcesContentStreams if true all content streams that are rendered on this page (like form + * xObjects, + * annotation appearance streams, patterns) and also all images associated with + * this page * will be flushed. */ public void flush(boolean flushResourcesContentStreams) { @@ -538,8 +539,8 @@ public void flush(boolean flushResourcesContentStreams) { } else if (resources.isModified() && !resources.isReadOnly()) { put(PdfName.Resources, resources.getPdfObject()); } + getDocument().checkIsoConformance(new PdfPageValidationContext(this)); if (flushResourcesContentStreams) { - getDocument().checkIsoConformance(new PdfPageValidationContext(this)); flushResourcesContentStreams(); } @@ -580,6 +581,7 @@ public void flush(boolean flushResourcesContentStreams) { * on which the page shall be displayed or printed * * @return {@link Rectangle} object specified by page Media Box, expressed in default user space units. + * * @throws PdfException in case of any error while reading MediaBox object. */ public Rectangle getMediaBox() { @@ -601,7 +603,7 @@ public Rectangle getMediaBox() { } } if (mediaBoxSize < 4) { - throw new PdfException(KernelExceptionMessageConstant. WRONG_MEDIA_BOX_SIZE_TOO_FEW_ARGUMENTS) + throw new PdfException(KernelExceptionMessageConstant.WRONG_MEDIA_BOX_SIZE_TOO_FEW_ARGUMENTS) .setMessageParams(mediaBox.size()); } } @@ -624,6 +626,7 @@ public Rectangle getMediaBox() { * on which the page shall be displayed or printed. * * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. + * * @return this {@link PdfPage} instance. */ public PdfPage setMediaBox(Rectangle rectangle) { @@ -636,7 +639,7 @@ public PdfPage setMediaBox(Rectangle rectangle) { * When the page is displayed or printed, its contents shall be clipped (cropped) to this rectangle * and then shall be imposed on the output medium in some implementation-defined manner. * - * @return the {@link Rectangle} object specified by pages's CropBox, expressed in default user space units. + * @return the {@link Rectangle} object specified by page's CropBox, expressed in default user space units. * MediaBox by default. */ public Rectangle getCropBox() { @@ -656,6 +659,7 @@ public Rectangle getCropBox() { * and then shall be imposed on the output medium in some implementation-defined manner. * * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. + * * @return this {@link PdfPage} instance. */ public PdfPage setCropBox(Rectangle rectangle) { @@ -663,18 +667,6 @@ public PdfPage setCropBox(Rectangle rectangle) { return this; } - /** - * Sets the BleedBox object, that defines the region to which the contents of the page shall be clipped - * when output in a production environment. - * - * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. - * @return this {@link PdfPage} instance. - */ - public PdfPage setBleedBox(Rectangle rectangle) { - put(PdfName.BleedBox, new PdfArray(rectangle)); - return this; - } - /** * Gets the {@link Rectangle} object specified by page's BleedBox, that define the region to which the * contents of the page shall be clipped when output in a production environment. @@ -688,14 +680,15 @@ public Rectangle getBleedBox() { } /** - * Sets the ArtBox object, that define the extent of the page’s meaningful content - * (including potential white space) as intended by the page’s creator. + * Sets the BleedBox object, that defines the region to which the contents of the page shall be clipped + * when output in a production environment. * * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. + * * @return this {@link PdfPage} instance. */ - public PdfPage setArtBox(Rectangle rectangle) { - put(PdfName.ArtBox, new PdfArray(rectangle)); + public PdfPage setBleedBox(Rectangle rectangle) { + put(PdfName.BleedBox, new PdfArray(rectangle)); return this; } @@ -712,13 +705,15 @@ public Rectangle getArtBox() { } /** - * Sets the TrimBox object, that define the intended dimensions of the finished page after trimming. + * Sets the ArtBox object, that define the extent of the page’s meaningful content + * (including potential white space) as intended by the page’s creator. * * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. + * * @return this {@link PdfPage} instance. */ - public PdfPage setTrimBox(Rectangle rectangle) { - put(PdfName.TrimBox, new PdfArray(rectangle)); + public PdfPage setArtBox(Rectangle rectangle) { + put(PdfName.ArtBox, new PdfArray(rectangle)); return this; } @@ -734,10 +729,23 @@ public Rectangle getTrimBox() { return trimBox == null ? getCropBox() : trimBox; } + /** + * Sets the TrimBox object, that define the intended dimensions of the finished page after trimming. + * + * @param rectangle the {@link Rectangle} object to set, expressed in default user space units. + * + * @return this {@link PdfPage} instance. + */ + public PdfPage setTrimBox(Rectangle rectangle) { + put(PdfName.TrimBox, new PdfArray(rectangle)); + return this; + } + /** * Get decoded bytes for the whole page content. * * @return byte array. + * * @throws PdfException in case of any {@link IOException}. */ public byte[] getContentBytes() { @@ -769,7 +777,9 @@ public byte[] getContentBytes() { * Gets decoded bytes of a certain stream of a page content. * * @param index index of stream inside Content. + * * @return byte array. + * * @throws PdfException in case of any {@link IOException}. */ public byte[] getStreamBytes(int index) { @@ -780,6 +790,7 @@ public byte[] getStreamBytes(int index) { * Calculates and returns the next available for this page's content stream MCID reference. * * @return calculated MCID reference. + * * @throws PdfException in case of not tagged document. */ public int getNextMcid() { @@ -800,7 +811,8 @@ public int getNextMcid() { * If page has no entry in the structural parent tree, returned value is -1. */ public int getStructParentIndex() { - return getPdfObject().getAsNumber(PdfName.StructParents) != null ? getPdfObject().getAsNumber(PdfName.StructParents).intValue() : -1; + return getPdfObject().getAsNumber(PdfName.StructParents) != null ? getPdfObject().getAsNumber( + PdfName.StructParents).intValue() : -1; } /** @@ -809,6 +821,7 @@ public int getStructParentIndex() { * * @param key a {@link PdfName} specifying the name of an additional action * @param action the {@link PdfAction} to add as an additional action + * * @return this {@link PdfPage} instance. */ public PdfPage setAdditionalAction(PdfName key, PdfAction action) { @@ -835,7 +848,8 @@ public List getAnnotations() { if (annotation == null) { continue; } - boolean hasBeenNotModified = annot.getIndirectReference() != null && !annot.getIndirectReference().checkState(PdfObject.MODIFIED); + boolean hasBeenNotModified = annot.getIndirectReference() != null && !annot.getIndirectReference() + .checkState(PdfObject.MODIFIED); annotations.add(annotation.setPage(this)); if (hasBeenNotModified) { annot.getIndirectReference().clearState(PdfObject.MODIFIED); @@ -850,6 +864,7 @@ public List getAnnotations() { * Checks if page contains the specified annotation. * * @param annotation the {@link PdfAnnotation} to check. + * * @return {@code true} if page contains specified annotation and {@code false} otherwise. */ public boolean containsAnnotation(PdfAnnotation annotation) { @@ -866,6 +881,7 @@ public boolean containsAnnotation(PdfAnnotation annotation) { * May be used in chain. * * @param annotation the {@link PdfAnnotation} to add. + * * @return this {@link PdfPage} instance. */ public PdfPage addAnnotation(PdfAnnotation annotation) { @@ -876,11 +892,13 @@ public PdfPage addAnnotation(PdfAnnotation annotation) { * Adds specified {@link PdfAnnotation} to specified index in annotations array with or without autotagging. * May be used in chain. * - * @param index the index at which specified annotation will be added. If {@code -1} then annotation will be added + * @param index the index at which specified annotation will be added. If {@code -1} then annotation will be + * added * to the end of array. * @param annotation the {@link PdfAnnotation} to add. * @param tagAnnotation if {@code true} the added annotation will be autotagged.

* (see {@link com.itextpdf.kernel.pdf.tagutils.TagStructureContext#getAutoTaggingPointer()}) + * * @return this {@link PdfPage} instance. */ public PdfPage addAnnotation(int index, PdfAnnotation annotation, boolean tagAnnotation) { @@ -922,6 +940,7 @@ public PdfPage addAnnotation(int index, PdfAnnotation annotation, boolean tagAnn * is either Annot or Form. * * @param annotation an annotation to be removed + * * @return this {@link PdfPage} instance. */ public PdfPage removeAnnotation(PdfAnnotation annotation) { @@ -981,8 +1000,9 @@ public PdfPage removeAnnotation(PdfAnnotation annotation, boolean rememberTagPoi */ public int getAnnotsSize() { PdfArray annots = getAnnots(false); - if (annots == null) + if (annots == null) { return 0; + } return annots.size(); } @@ -992,6 +1012,7 @@ public int getAnnotsSize() { * @param updateOutlines if the flag is {@code true}, the method reads the whole document and creates outline tree. * If the flag is {@code false}, the method gets cached outline tree * (if it was cached via calling getOutlines method before). + * * @return return all outlines of a current page */ public List getOutlines(boolean updateOutlines) { @@ -1013,6 +1034,7 @@ public boolean isIgnorePageRotationForContent() { * Default value - {@code false}. * * @param ignorePageRotationForContent - true to ignore rotation of the new content on the rotated page. + * * @return this {@link PdfPage} instance. */ public PdfPage setIgnorePageRotationForContent(boolean ignorePageRotationForContent) { @@ -1026,6 +1048,7 @@ public PdfPage setIgnorePageRotationForContent(boolean ignorePageRotationForCont * @param numberingStyle The numbering style that shall be used for the numeric portion of each page label. * May be NULL * @param labelPrefix The label prefix for page labels in this range. May be NULL + * * @return this {@link PdfPage} instance. */ public PdfPage setPageLabel(PageLabelNumberingStyle numberingStyle, String labelPrefix) { @@ -1040,12 +1063,14 @@ public PdfPage setPageLabel(PageLabelNumberingStyle numberingStyle, String label * @param labelPrefix The label prefix for page labels in this range. May be NULL * @param firstPage The value of the numeric portion for the first page label in the range. Must be greater or * equal 1. + * * @return this {@link PdfPage} instance. */ public PdfPage setPageLabel(PageLabelNumberingStyle numberingStyle, String labelPrefix, int firstPage) { - if (firstPage < 1) + if (firstPage < 1) { throw new PdfException( KernelExceptionMessageConstant.IN_A_PAGE_LABEL_THE_PAGE_NUMBERS_MUST_BE_GREATER_OR_EQUAL_TO_1); + } PdfDictionary pageLabel = new PdfDictionary(); if (numberingStyle != null) { switch (numberingStyle) { @@ -1078,13 +1103,31 @@ public PdfPage setPageLabel(PageLabelNumberingStyle numberingStyle, String label return this; } + /** + * Gets a name specifying the tab order that shall be used for annotations on the page. + * The possible values are {@link PdfName#R} (row order), {@link PdfName#C} (column order), and {@link PdfName#S} + * (structure order). + * Beginning with PDF 2.0, the possible values also include {@link PdfName#A} (annotations array order) and + * {@link PdfName#W} (widget order). + * See ISO 32000 12.5, "Annotations" for details. + * + * @return a {@link PdfName} specifying the annotations tab order or null if tab order is not defined. + */ + public PdfName getTabOrder() { + return getPdfObject().getAsName(PdfName.Tabs); + } + /** * Sets a name specifying the tab order that shall be used for annotations on the page. - * The possible values are {@link PdfName#R} (row order), {@link PdfName#C} (column order), and {@link PdfName#S} (structure order). - * Beginning with PDF 2.0, the possible values also include {@link PdfName#A} (annotations array order) and {@link PdfName#W} (widget order). + * The possible values are {@link PdfName#R} (row order), {@link PdfName#C} (column order), and {@link PdfName#S} + * (structure order). + * Beginning with PDF 2.0, the possible values also include {@link PdfName#A} (annotations array order) and + * {@link PdfName#W} (widget order). * See ISO 32000 12.5, "Annotations" for details. * - * @param tabOrder a {@link PdfName} specifying the annotations tab order. See method description for the allowed values. + * @param tabOrder a {@link PdfName} specifying the annotations tab order. See method description for the allowed + * values. + * * @return this {@link PdfPage} instance. */ public PdfPage setTabOrder(PdfName tabOrder) { @@ -1093,15 +1136,14 @@ public PdfPage setTabOrder(PdfName tabOrder) { } /** - * Gets a name specifying the tab order that shall be used for annotations on the page. - * The possible values are {@link PdfName#R} (row order), {@link PdfName#C} (column order), and {@link PdfName#S} (structure order). - * Beginning with PDF 2.0, the possible values also include {@link PdfName#A} (annotations array order) and {@link PdfName#W} (widget order). - * See ISO 32000 12.5, "Annotations" for details. + * Sets a stream object that shall define the page’s thumbnail image. Thumbnail images represent the contents of + * its pages in miniature form * - * @return a {@link PdfName} specifying the annotations tab order or null if tab order is not defined. + * @return the thumbnail image, or null if it is not present */ - public PdfName getTabOrder() { - return getPdfObject().getAsName(PdfName.Tabs); + public PdfImageXObject getThumbnailImage() { + PdfStream thumbStream = getPdfObject().getAsStream(PdfName.Thumb); + return thumbStream != null ? new PdfImageXObject(thumbStream) : null; } /** @@ -1109,34 +1151,27 @@ public PdfName getTabOrder() { * its pages in miniature form * * @param thumb the thumbnail image + * * @return this {@link PdfPage} object */ public PdfPage setThumbnailImage(PdfImageXObject thumb) { return put(PdfName.Thumb, thumb.getPdfObject()); } - /** - * Sets a stream object that shall define the page’s thumbnail image. Thumbnail images represent the contents of - * its pages in miniature form - * - * @return the thumbnail image, or null if it is not present - */ - public PdfImageXObject getThumbnailImage() { - PdfStream thumbStream = getPdfObject().getAsStream(PdfName.Thumb); - return thumbStream != null ? new PdfImageXObject(thumbStream) : null; - } - /** * Adds {@link PdfOutputIntent} that shall specify the colour characteristics of output devices * on which the page might be rendered. * * @param outputIntent {@link PdfOutputIntent} to add. + * * @return this {@link PdfPage} object + * * @see PdfOutputIntent */ public PdfPage addOutputIntent(PdfOutputIntent outputIntent) { - if (outputIntent == null) + if (outputIntent == null) { return this; + } PdfArray outputIntents = getPdfObject().getAsArray(PdfName.OutputIntents); if (outputIntents == null) { @@ -1153,6 +1188,7 @@ public PdfPage addOutputIntent(PdfOutputIntent outputIntent) { * * @param key the {@link PdfName} key with which the specified value is to be associated * @param value the {@link PdfObject} value to be associated with the specified key. + * * @return this {@link PdfPage} object. */ public PdfPage put(PdfName key, PdfObject value) { @@ -1224,6 +1260,7 @@ public void addAssociatedFile(PdfFileSpec fs) { * Returns files associated with PDF page. * * @param create defines whether AF arrays will be created if it doesn't exist + * * @return associated files array */ public PdfArray getAssociatedFiles(boolean create) { @@ -1235,6 +1272,34 @@ public PdfArray getAssociatedFiles(boolean create) { return afArray; } + PdfResources getResources(boolean initResourcesField) { + if (this.resources == null && initResourcesField) { + initResources(true); + } + return this.resources; + } + + PdfDictionary initResources(boolean initResourcesField) { + boolean readOnly = false; + PdfDictionary resources = getPdfObject().getAsDictionary(PdfName.Resources); + if (resources == null) { + resources = (PdfDictionary) getInheritedValue(PdfName.Resources, PdfObject.DICTIONARY); + if (resources != null) { + readOnly = true; + } + } + if (resources == null) { + resources = new PdfDictionary(); + // not marking page as modified because of this change + getPdfObject().put(PdfName.Resources, resources); + } + if (initResourcesField) { + this.resources = new PdfResources(resources); + this.resources.setReadOnly(readOnly); + } + return resources; + } + void tryFlushPageTags() { try { if (!getDocument().isClosing) { @@ -1272,57 +1337,6 @@ void setPageRotationInverseMatrixWritten() { pageRotationInverseMatrixWritten = true; } - @Override - protected boolean isWrappedObjectMustBeIndirect() { - return true; - } - - private static boolean isAnnotInvisible(PdfAnnotation annotation) { - PdfNumber f = annotation.getPdfObject().getAsNumber(PdfName.F); - if (f == null) { - return false; - } - int flags = f.intValue(); - return PdfCheckersUtil.checkFlag(flags, PdfAnnotation.INVISIBLE) || - (PdfCheckersUtil.checkFlag(flags, PdfAnnotation.NO_VIEW) && - !PdfCheckersUtil.checkFlag(flags, PdfAnnotation.TOGGLE_NO_VIEW)); - } - - private static boolean isReferenceAllowed(String role) { - // For these roles, Link is an allowed child, but Reference is not. - return !StandardRoles.DOCUMENT.equals(role) && !StandardRoles.DOCUMENTFRAGMENT.equals(role) && - !StandardRoles.ART.equals(role) && !StandardRoles.SECT.equals(role); - } - - private void tagAnnotation(PdfAnnotation annotation) { - boolean tagAdded = false; - boolean presentInTagStructure = true; - boolean isUA2 = isPdfUA2Document(); - TagTreePointer tagPointer = getDocument().getTagStructureContext().getAutoTaggingPointer(); - if (isUA2 && isAnnotInvisible(annotation)) { - if (PdfVersion.PDF_2_0.compareTo(getDocument().getPdfVersion()) <= 0) { - if (!StandardRoles.ARTIFACT.equals(tagPointer.getRole())) { - tagPointer.addTag(StandardRoles.ARTIFACT); - tagAdded = true; - } - } else { - presentInTagStructure = false; - } - } else { - tagAdded = addAnnotationTag(tagPointer, annotation); - } - if (presentInTagStructure) { - PdfPage prevPage = tagPointer.getCurrentPage(); - tagPointer.setPageForTagging(this).addAnnotationTag(annotation); - if (prevPage != null) { - tagPointer.setPageForTagging(prevPage); - } - } - if (tagAdded) { - tagPointer.moveToParent(); - } - } - private boolean isPdfUA2Document() { PdfUAConformance uaConformance = getDocument().getConformance().getUAConformance(); if (uaConformance == null) { @@ -1418,27 +1432,6 @@ private PdfArray getAnnots(boolean create) { return annots; } - private PdfObject getInheritedValue(PdfName pdfName, int type) { - if (this.parentPages == null) { - this.parentPages = getDocument().getCatalog().getPageTree().findPageParent(this); - } - PdfObject val = getInheritedValue(this.parentPages, pdfName); - return val != null && val.getType() == type ? val : null; - } - - private static PdfObject getInheritedValue(PdfPages parentPages, PdfName pdfName) { - if (parentPages != null) { - PdfDictionary parentDictionary = parentPages.getPdfObject(); - PdfObject value = parentDictionary.get(pdfName); - if (value != null) { - return value; - } else { - return getInheritedValue(parentPages.getParent(), pdfName); - } - } - return null; - } - private PdfStream newContentStream(boolean before) { PdfObject contents = getPdfObject().get(PdfName.Contents); PdfArray array; @@ -1474,7 +1467,7 @@ private PdfStream newContentStream(boolean before) { return contentStream; } - private void copyAnnotations(PdfDocument toDocument,PdfPage page, ICopyFilter copyFilter) { + private void copyAnnotations(PdfDocument toDocument, PdfPage page, ICopyFilter copyFilter) { for (final PdfAnnotation annot : getAnnotations()) { if (copyFilter.shouldProcess(page.getPdfObject(), null, annot.getPdfObject())) { final PdfAnnotation newAnnot = PdfAnnotation.makeAnnotation( @@ -1518,8 +1511,9 @@ private void flushWithResources(PdfDictionary objsCollection) { } for (PdfObject obj : objsCollection.values()) { - if (obj.isFlushed()) + if (obj.isFlushed()) { continue; + } flushResourcesContentStreams(((PdfDictionary) obj).getAsDictionary(PdfName.Resources)); flushMustBeIndirectObject(obj); } @@ -1578,7 +1572,8 @@ private void rebuildFormFieldParent(PdfDictionary field, PdfDictionary newField, rebuildFormFieldParent(field, newField, toDocument, new HashSet<>()); } - private void rebuildFormFieldParent(PdfDictionary field, PdfDictionary newField, PdfDocument toDocument, Set visitedForms) { + private void rebuildFormFieldParent(PdfDictionary field, PdfDictionary newField, PdfDocument toDocument, + Set visitedForms) { if (newField.containsKey(PdfName.Parent)) { return; } @@ -1605,4 +1600,91 @@ private void rebuildFormFieldParent(PdfDictionary field, PdfDictionary newField, newField.put(PdfName.Parent, newParent); } } + + private PdfObject getInheritedValue(PdfName pdfName, int type) { + if (this.parentPages == null) { + this.parentPages = getDocument().getCatalog().getPageTree().findPageParent(this); + } + PdfObject val = getInheritedValue(this.parentPages, pdfName); + return val != null && val.getType() == type ? val : null; + } + + private void tagAnnotation(PdfAnnotation annotation) { + boolean tagAdded = false; + boolean presentInTagStructure = true; + boolean isUA2 = isPdfUA2Document(); + TagTreePointer tagPointer = getDocument().getTagStructureContext().getAutoTaggingPointer(); + if (isUA2 && isAnnotInvisible(annotation)) { + if (PdfVersion.PDF_2_0.compareTo(getDocument().getPdfVersion()) <= 0) { + if (!StandardRoles.ARTIFACT.equals(tagPointer.getRole())) { + tagPointer.addTag(StandardRoles.ARTIFACT); + tagAdded = true; + } + } else { + presentInTagStructure = false; + } + } else { + tagAdded = addAnnotationTag(tagPointer, annotation); + } + if (presentInTagStructure) { + PdfPage prevPage = tagPointer.getCurrentPage(); + tagPointer.setPageForTagging(this).addAnnotationTag(annotation); + if (prevPage != null) { + tagPointer.setPageForTagging(prevPage); + } + } + if (tagAdded) { + tagPointer.moveToParent(); + } + } + + /** + * Get all OCGs from a given page annotations/xobjects/resources, including ones already stored in catalog + * + * @param page where to search for OCGs. + * @return set of indirect references pointing to found OCGs. + */ + private static Set getOCGsFromPage(PdfPage page) { + //Using linked hash set for elements order consistency (e.g. in tests) + final Set ocgs = new LinkedHashSet<>(); + final List annotations = page.getAnnotations(); + for (PdfAnnotation annotation : annotations) { + //Pass null instead of catalog OCProperties value, to include ocg clashing with catalog + OcgPropertiesCopier.getUsedNonFlushedOCGsFromAnnotation(annotation, annotation, ocgs, null); + } + final PdfDictionary resources = page.getPdfObject().getAsDictionary(PdfName.Resources); + OcgPropertiesCopier.getUsedNonFlushedOCGsFromResources(resources, resources, ocgs, + null, new HashSet<>()); + return ocgs; + } + + private static PdfObject getInheritedValue(PdfPages parentPages, PdfName pdfName) { + if (parentPages != null) { + PdfDictionary parentDictionary = parentPages.getPdfObject(); + PdfObject value = parentDictionary.get(pdfName); + if (value != null) { + return value; + } else { + return getInheritedValue(parentPages.getParent(), pdfName); + } + } + return null; + } + + private static boolean isAnnotInvisible(PdfAnnotation annotation) { + PdfNumber f = annotation.getPdfObject().getAsNumber(PdfName.F); + if (f == null) { + return false; + } + int flags = f.intValue(); + return PdfCheckersUtil.checkFlag(flags, PdfAnnotation.INVISIBLE) || + (PdfCheckersUtil.checkFlag(flags, PdfAnnotation.NO_VIEW) && + !PdfCheckersUtil.checkFlag(flags, PdfAnnotation.TOGGLE_NO_VIEW)); + } + + private static boolean isReferenceAllowed(String role) { + // For these roles, Link is an allowed child, but Reference is not. + return !StandardRoles.DOCUMENT.equals(role) && !StandardRoles.DOCUMENTFRAGMENT.equals(role) && + !StandardRoles.ART.equals(role) && !StandardRoles.SECT.equals(role); + } } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPageFactory.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPageFactory.java index e2d08b90b4..a2694acd06 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPageFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPageFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPages.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPages.java index 471e2485e2..88baa384d2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPages.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPages.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,7 +24,7 @@ This file is part of the iText (R) project. class PdfPages extends PdfObjectWrapper { - private int from; + private int from; private PdfNumber count; private final PdfArray kids; private final PdfPages parent; @@ -75,8 +75,9 @@ public void addPage(PdfDictionary page) { } public boolean addPage(int index, PdfPage pdfPage) { - if (index < from || index > from + getCount()) + if (index < from || index > from + getCount()) { return false; + } kids.add(index - from, pdfPage.getPdfObject()); pdfPage.getPdfObject().put(PdfName.Parent, getPdfObject()); pdfPage.setModified(); @@ -85,8 +86,9 @@ public boolean addPage(int index, PdfPage pdfPage) { } public boolean removePage(int pageNum) { - if (pageNum < from || pageNum >= from + getCount()) + if (pageNum < from || pageNum >= from + getCount()) { return false; + } decrementCount(); kids.remove(pageNum - from); return true; @@ -119,7 +121,7 @@ public int getCount() { return count.intValue(); } - public void correctFrom(int correction){ + public void correctFrom(int correction) { from += correction; } @@ -131,25 +133,29 @@ public PdfPages getParent() { return parent; } - public void incrementCount(){ + public void incrementCount() { count.increment(); setModified(); - if (parent != null) + if (parent != null) { parent.incrementCount(); + } } - public void decrementCount(){ + public void decrementCount() { count.decrement(); setModified(); - if (parent != null) + if (parent != null) { parent.decrementCount(); + } } public int compareTo(int index) { - if (index < from) + if (index < from) { return 1; - if (index >= from + getCount()) + } + if (index >= from + getCount()) { return -1; + } return 0; } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPagesTree.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPagesTree.java index 2c928615bf..436ac00b32 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPagesTree.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPagesTree.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,9 +23,9 @@ This file is part of the iText (R) project. package com.itextpdf.kernel.pdf; import com.itextpdf.commons.datastructures.ISimpleList; -import com.itextpdf.kernel.di.pagetree.IPageTreeListFactory; import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.io.logs.IoLogMessageConstant; +import com.itextpdf.kernel.di.pagetree.IPageTreeListFactory; import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant; import com.itextpdf.kernel.exceptions.PdfException; @@ -33,7 +33,6 @@ This file is part of the iText (R) project. import java.util.HashSet; import java.util.List; import java.util.Set; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,11 +40,10 @@ This file is part of the iText (R) project. * Algorithm for construction {@link PdfPages} tree */ class PdfPagesTree { - static final int DEFAULT_LEAF_SIZE = 10; + private static final Logger LOGGER = LoggerFactory.getLogger(PdfPagesTree.class); private final int leafSize = DEFAULT_LEAF_SIZE; - private ISimpleList pageRefs; private List parents; private ISimpleList pages; @@ -53,7 +51,6 @@ class PdfPagesTree { private boolean generated = false; private PdfPages root; - private static final Logger LOGGER = LoggerFactory.getLogger(PdfPagesTree.class); /** * Creates a PdfPages tree. @@ -162,7 +159,7 @@ public int getPageNumber(PdfPage page) { /** * Returns the index of the first occurrence of the page in this tree - * specified by it's PdfDictionary, or 0 if this tree does not contain the page. + * specified by its PdfDictionary, or 0 if this tree does not contain the page. */ public int getPageNumber(PdfDictionary pageDictionary) { int pageNum = pageRefs.indexOf(pageDictionary.getIndirectReference()); @@ -191,7 +188,7 @@ public void addPage(PdfPage pdfPage) { if (root != null) { // in this case we save tree structure - if (pageRefs.size() == 0) { + if (pageRefs.isEmpty()) { pdfPages = root; } else { loadPage(pageRefs.size() - 1); @@ -199,7 +196,7 @@ public void addPage(PdfPage pdfPage) { } } else { pdfPages = parents.get(parents.size() - 1); - if (pdfPages.getCount() % leafSize == 0 && pageRefs.size() > 0) { + if (pdfPages.getCount() % leafSize == 0 && !pageRefs.isEmpty()) { pdfPages = new PdfPages(pdfPages.getFrom() + pdfPages.getCount(), document); parents.add(pdfPages); } @@ -274,7 +271,7 @@ void releasePage(int pageNumber) { * @throws PdfException in case empty document */ protected PdfObject generateTree() { - if (pageRefs.size() == 0) { + if (pageRefs.isEmpty()) { LOGGER.info(IoLogMessageConstant.ATTEMPT_TO_GENERATE_PDF_PAGES_TREE_WITHOUT_ANY_PAGES); document.addNewPage(); } @@ -284,25 +281,16 @@ protected PdfObject generateTree() { if (root == null) { while (parents.size() != 1) { - List nextParents = new ArrayList<>(); - //dynamicLeafSize helps to avoid PdfPages leaf with only one page - int dynamicLeafSize = leafSize; - PdfPages current = null; - for (int i = 0; i < parents.size(); i++) { - PdfPages pages = parents.get(i); - int pageCount = pages.getCount(); - if (i % dynamicLeafSize == 0) { - if (pageCount <= 1) { - dynamicLeafSize++; - } else { - current = new PdfPages(-1, document); - nextParents.add(current); - dynamicLeafSize = leafSize; - } + List newParents = new ArrayList<>(); + PdfPages currentNewParent = null; + for (PdfPages parent : parents) { + if (currentNewParent == null || currentNewParent.getKids().size() >= leafSize) { + currentNewParent = new PdfPages(-1, document); + newParents.add(currentNewParent); } - current.addPages(pages); + currentNewParent.addPages(parent); } - parents = nextParents; + parents = newParents; } root = parents.get(0); } @@ -401,7 +389,7 @@ private void loadPage(int pageNum, Set processedParents) { /* * We don't release pdfPagesObject in the end of each loop because we enter this for-cycle only when * parent has PdfPages kids. - * If all of the kids are PdfPages, then there's nothing to release, because we don't release + * If all the kids are PdfPages, then there's nothing to release, because we don't release * PdfPages at this point. * If there are kids that are instances of PdfPage, then there's no sense in releasing them: * in this case ParentTreeStructure is being rebuilt by inserting an intermediate PdfPages between @@ -476,7 +464,7 @@ private boolean internalRemovePage(int pageNum) { pdfPages.removeFromParent(); --parentIndex; } - if (parents.size() == 0) { + if (parents.isEmpty()) { root = null; parents.add(new PdfPages(0, document)); } else { diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPrimitiveObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPrimitiveObject.java index a073f74e7f..9c9ad1d16f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPrimitiveObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfPrimitiveObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfReader.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfReader.java index 297ee8a93d..1bc1d3b349 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfReader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -61,14 +61,14 @@ This file is part of the iText (R) project. */ public class PdfReader implements Closeable { /** - * The Logger instance. + * The default {@link StrictnessLevel} to be used. */ - private static final Logger LOGGER = LoggerFactory.getLogger(PdfReader.class); + public static final StrictnessLevel DEFAULT_STRICTNESS_LEVEL = StrictnessLevel.LENIENT; /** - * The default {@link StrictnessLevel} to be used. + * The Logger instance. */ - public static final StrictnessLevel DEFAULT_STRICTNESS_LEVEL = StrictnessLevel.LENIENT; + private static final Logger LOGGER = LoggerFactory.getLogger(PdfReader.class); private static final String endstream1 = "endstream"; private static final String endstream2 = "\nendstream"; @@ -78,21 +78,8 @@ public class PdfReader implements Closeable { private static final byte[] endobj = ByteUtils.getIsoBytes("endobj"); protected static boolean correctStreamLength = true; - - private boolean unethicalReading; - - private boolean memorySavingMode; - - private StrictnessLevel strictnessLevel = DEFAULT_STRICTNESS_LEVEL; - - //indicate nearest first Indirect reference object which includes current reading the object, using for PdfString decrypt - private PdfIndirectReference currentIndirectReference; - - private XrefProcessor xrefProcessor = new XrefProcessor(); - protected PdfTokenizer tokens; protected PdfEncryption decrypt; - // here we store only the pdfVersion that is written in the document's header, // however it could differ from the actual pdf version that could be written in document's catalog protected PdfVersion headerPdfVersion; @@ -100,15 +87,20 @@ public class PdfReader implements Closeable { protected long eofPos; protected PdfDictionary trailer; protected PdfDocument pdfDocument; - protected ReaderProperties properties; - protected boolean encrypted = false; protected boolean rebuiltXref = false; protected boolean hybridXref = false; protected boolean fixedXref = false; protected boolean xrefStm = false; + private boolean unethicalReading; + private boolean memorySavingMode; + private StrictnessLevel strictnessLevel = DEFAULT_STRICTNESS_LEVEL; + //indicate nearest first Indirect reference object which includes current reading the object, using for PdfString decrypt + private PdfIndirectReference currentIndirectReference; + private XrefProcessor xrefProcessor = new XrefProcessor(); + private XMPMeta xmpMeta; private PdfConformance pdfConformance; @@ -219,7 +211,7 @@ public void close() throws IOException { * value of this parameter. * * @param unethicalReading true to enable unethicalReading, false to disable it. - * By default unethicalReading is disabled. + * By default, unethicalReading is disabled. * @return this {@link PdfReader} instance. */ public PdfReader setUnethicalReading(boolean unethicalReading) { @@ -230,7 +222,7 @@ public PdfReader setUnethicalReading(boolean unethicalReading) { /** * Defines if memory saving mode is enabled. *

- * By default memory saving mode is disabled for the sake of time–memory trade-off. + * By default, memory saving mode is disabled for the sake of time–memory trade-off. *

* If memory saving mode is enabled, document processing might slow down, but reading will be less memory demanding. * @@ -332,6 +324,7 @@ public boolean hasXrefStm() { *

* This method's returned value might change over time, because PdfObjects reading * can be postponed even up to document closing. + * * @return true, if PdfReader fixed offsets of PdfObjects. * @throws PdfException if the method has been invoked before the PDF document was read. */ @@ -393,13 +386,15 @@ public byte[] readStreamBytesRaw(PdfStream stream) throws IOException { checkPdfStreamLength(stream); } long offset = stream.getOffset(); - if (offset <= 0) + if (offset <= 0) { return null; + } int length = stream.getLength(); - if (length <= 0) + if (length <= 0) { return new byte[0]; + } RandomAccessFileOrArray file = tokens.getSafeFile(); - byte[] bytes = null; + byte[] bytes; try { file.seek(offset); bytes = new byte[length]; @@ -433,7 +428,8 @@ public byte[] readStreamBytesRaw(PdfStream stream) throws IOException { skip = true; } if (!skip) { - decrypt.setHashKeyForNextObject(stream.getIndirectReference().getObjNumber(), stream.getIndirectReference().getGenNumber()); + decrypt.setHashKeyForNextObject(stream.getIndirectReference().getObjNumber(), + stream.getIndirectReference().getGenNumber()); bytes = decrypt.decryptByteArray(bytes); } } @@ -482,7 +478,8 @@ public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary) { * @return the decoded bytes * @throws PdfException if there are any problems decoding the bytes */ - public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary, Map filterHandlers) { + public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary, + Map filterHandlers) { if (b == null) { return null; } @@ -504,14 +501,16 @@ public static byte[] decodeBytes(byte[] b, PdfDictionary streamDictionary, Map

>")); - if (tokens.getTokenType() == PdfTokenizer.TokenType.EndArray) + } + if (tokens.getTokenType() == PdfTokenizer.TokenType.EndArray) { tokens.throwError(MessageFormatUtil. format(KernelExceptionMessageConstant.UNEXPECTED_TOKEN, "]")); + } } dic.put(name, obj); } @@ -1082,8 +1090,9 @@ protected void readXref() throws IOException { protected PdfDictionary readXrefSection() throws IOException { tokens.nextValidToken(); - if (!tokens.tokenValueEqualsTo(PdfTokenizer.Xref)) + if (!tokens.tokenValueEqualsTo(PdfTokenizer.Xref)) { tokens.throwError(KernelExceptionMessageConstant.XREF_SUBSECTION_NOT_FOUND); + } PdfXrefTable xref = pdfDocument.getXref(); while (true) { tokens.nextValidToken(); @@ -1223,8 +1232,9 @@ protected boolean readXrefStream(long ptr) throws IOException { PdfArray w = xrefStream.getAsArray(PdfName.W); long prev = -1; obj = getXrefPrev(xrefStream.get(PdfName.Prev, false)); - if (obj != null) + if (obj != null) { prev = ((PdfNumber) obj).longValue(); + } xref.setCapacity(size); byte[] b = readStreamBytes(xrefStream, true); int bptr = 0; @@ -1300,18 +1310,21 @@ protected void fixXref() throws IOException { PdfXrefTable xref = pdfDocument.getXref(); tokens.seek(0); ByteBuffer buffer = new ByteBuffer(24); - PdfTokenizer lineTokeniser = new PdfTokenizer(new RandomAccessFileOrArray(new ReusableRandomAccessSource(buffer))); + PdfTokenizer lineTokeniser = new PdfTokenizer( + new RandomAccessFileOrArray(new ReusableRandomAccessSource(buffer))); for (; ; ) { long pos = tokens.getPosition(); buffer.reset(); // added boolean because of mailing list issue (17 Feb. 2014) - if (!tokens.readLineSegment(buffer, true)) + if (!tokens.readLineSegment(buffer, true)) { break; + } if (buffer.get(0) >= '0' && buffer.get(0) <= '9') { int[] obj = PdfTokenizer.checkObjectStart(lineTokeniser); - if (obj == null) + if (obj == null) { continue; + } int num = obj[0]; int gen = obj[1]; PdfIndirectReference reference = xref.get(num); @@ -1322,7 +1335,6 @@ protected void fixXref() throws IOException { } } - protected void rebuildXref() throws IOException { xrefStm = false; hybridXref = false; @@ -1355,7 +1367,7 @@ protected void rebuildXref() throws IOException { // if the pdf is linearized it is possible that the trailer has been read // before the actual objects it refers to this causes the trailer to have // objects in READING state that's why we keep track of the position of the - // trailer and then asign it when the whole pdf has been loaded + // trailer and then assign it when the whole pdf has been loaded trailerIndex = pos; } else { tokens.seek(pos); @@ -1379,31 +1391,6 @@ protected void rebuildXref() throws IOException { } } - private boolean isCurrentObjectATrailer() { - try { - final PdfDictionary dic = (PdfDictionary) readObject(false); - return dic.get(PdfName.Root, false) != null; - } catch (MemoryLimitsAwareException e){ - throw e; - } catch (Exception e) { - return false; - } - } - - private void setTrailerFromTrailerIndex(Long trailerIndex) throws IOException { - if (trailerIndex == null) { - throw new PdfException(KernelExceptionMessageConstant.TRAILER_NOT_FOUND); - } - tokens.seek((long)trailerIndex); - final PdfDictionary dic = (PdfDictionary) readObject(false); - if (dic.get(PdfName.Root, false) != null) { - trailer = dic; - } - if (trailer == null) { - throw new PdfException(KernelExceptionMessageConstant.TRAILER_NOT_FOUND); - } - } - protected PdfNumber getXrefPrev(PdfObject prevObjectToCheck) { if (prevObjectToCheck == null) { return null; @@ -1432,6 +1419,31 @@ void setXrefProcessor(XrefProcessor xrefProcessor) { this.xrefProcessor = xrefProcessor; } + private boolean isCurrentObjectATrailer() { + try { + final PdfDictionary dic = (PdfDictionary) readObject(false); + return dic.get(PdfName.Root, false) != null; + } catch (MemoryLimitsAwareException e) { + throw e; + } catch (Exception e) { + return false; + } + } + + private void setTrailerFromTrailerIndex(Long trailerIndex) throws IOException { + if (trailerIndex == null) { + throw new PdfException(KernelExceptionMessageConstant.TRAILER_NOT_FOUND); + } + tokens.seek((long) trailerIndex); + final PdfDictionary dic = (PdfDictionary) readObject(false); + if (dic.get(PdfName.Root, false) != null) { + trailer = dic; + } + if (trailer == null) { + throw new PdfException(KernelExceptionMessageConstant.TRAILER_NOT_FOUND); + } + } + private void processArrayReadError() { final String error = MessageFormatUtil.format(KernelExceptionMessageConstant.UNEXPECTED_TOKEN, new String(tokens.getByteContent(), StandardCharsets.UTF_8)); @@ -1443,11 +1455,13 @@ private void processArrayReadError() { } private void readDecryptObj() { - if (encrypted) + if (encrypted) { return; + } PdfDictionary enc = trailer.getAsDictionary(PdfName.Encrypt); - if (enc == null) + if (enc == null) { return; + } encrypted = true; PdfName filter = enc.getAsName(PdfName.Filter); if (PdfName.Adobe_PubSec.equals(filter)) { @@ -1460,17 +1474,20 @@ private void readDecryptObj() { } else if (PdfName.Standard.equals(filter)) { decrypt = new PdfEncryption(enc, properties.password, getOriginalFileId()); } else { - throw new UnsupportedSecurityHandlerException(MessageFormatUtil.format(KernelExceptionMessageConstant.UNSUPPORTED_SECURITY_HANDLER, filter)); + throw new UnsupportedSecurityHandlerException( + MessageFormatUtil.format(KernelExceptionMessageConstant.UNSUPPORTED_SECURITY_HANDLER, filter)); } decrypt.configureEncryptionParametersFromReader(pdfDocument, trailer); } private PdfObject readObject(PdfIndirectReference reference, boolean fixXref) { - if (reference == null) + if (reference == null) { return null; - if (reference.refersTo != null) + } + if (reference.refersTo != null) { return reference.refersTo; + } try { currentIndirectReference = reference; if (reference.getObjStreamNumber() > 0) { @@ -1514,12 +1531,13 @@ private PdfObject readObject(PdfIndirectReference reference, boolean fixXref) { } private void checkPdfStreamLength(PdfStream pdfStream) throws IOException { - if (!correctStreamLength) + if (!correctStreamLength) { return; + } long fileLength = tokens.length(); long start = pdfStream.getOffset(); boolean calc = false; - int streamLength = 0; + int streamLength; PdfNumber pdfNumber = pdfStream.getAsNumber(PdfName.Length); if (pdfNumber != null) { streamLength = pdfNumber.intValue(); @@ -1559,8 +1577,9 @@ private void checkPdfStreamLength(PdfStream pdfStream) throws IOException { tokens.seek(pos - 16); String s = tokens.readString(16); int index = s.indexOf(endstream1); - if (index >= 0) + if (index >= 0) { pos = pos - 16 + index; + } break; } } @@ -1627,7 +1646,7 @@ private static void logXrefException(RuntimeException ex) { LOGGER.error(MessageFormatUtil.format( IoLogMessageConstant.XREF_ERROR_WHILE_READING_TABLE_WILL_BE_REBUILT_WITH_CAUSE , ex.getCause().getMessage())); - } else if (ex.getMessage() !=null) { + } else if (ex.getMessage() != null) { LOGGER.error(MessageFormatUtil.format( IoLogMessageConstant.XREF_ERROR_WHILE_READING_TABLE_WILL_BE_REBUILT_WITH_CAUSE , ex.getMessage())); diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfResources.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfResources.java index ff81f6bdfc..a9b3a37717 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfResources.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfResources.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,8 +41,6 @@ This file is part of the iText (R) project. * used by content streams operators. (ISO 32000-1, 7.8.3 Resource Dictionaries) */ public class PdfResources extends PdfObjectWrapper { - - private static final String F = "F"; private static final String Im = "Im"; private static final String Fm = "Fm"; @@ -52,16 +50,16 @@ public class PdfResources extends PdfObjectWrapper { private static final String P = "P"; private static final String Sh = "Sh"; - private Map resourceToName = new HashMap<>(); + private final Map resourceToName = new HashMap<>(); - private ResourceNameGenerator fontNamesGen = new ResourceNameGenerator(PdfName.Font, F); - private ResourceNameGenerator imageNamesGen = new ResourceNameGenerator(PdfName.XObject, Im); - private ResourceNameGenerator formNamesGen = new ResourceNameGenerator(PdfName.XObject, Fm); - private ResourceNameGenerator egsNamesGen = new ResourceNameGenerator(PdfName.ExtGState, Gs); - private ResourceNameGenerator propNamesGen = new ResourceNameGenerator(PdfName.Properties, Pr); - private ResourceNameGenerator csNamesGen = new ResourceNameGenerator(PdfName.ColorSpace, Cs); - private ResourceNameGenerator patternNamesGen = new ResourceNameGenerator(PdfName.Pattern, P); - private ResourceNameGenerator shadingNamesGen = new ResourceNameGenerator(PdfName.Shading, Sh); + private final ResourceNameGenerator fontNamesGen = new ResourceNameGenerator(PdfName.Font, F); + private final ResourceNameGenerator imageNamesGen = new ResourceNameGenerator(PdfName.XObject, Im); + private final ResourceNameGenerator formNamesGen = new ResourceNameGenerator(PdfName.XObject, Fm); + private final ResourceNameGenerator egsNamesGen = new ResourceNameGenerator(PdfName.ExtGState, Gs); + private final ResourceNameGenerator propNamesGen = new ResourceNameGenerator(PdfName.Properties, Pr); + private final ResourceNameGenerator csNamesGen = new ResourceNameGenerator(PdfName.ColorSpace, Cs); + private final ResourceNameGenerator patternNamesGen = new ResourceNameGenerator(PdfName.Pattern, P); + private final ResourceNameGenerator shadingNamesGen = new ResourceNameGenerator(PdfName.Shading, Sh); private boolean readOnly = false; private boolean isModified = false; @@ -283,18 +281,6 @@ public AbstractPdfShading getShading(PdfName name) { return shading instanceof PdfDictionary ? AbstractPdfShading.makeShading((PdfDictionary) shading) : null; } - protected boolean isReadOnly() { - return readOnly; - } - - protected void setReadOnly(boolean readOnly) { - this.readOnly = readOnly; - } - - protected boolean isModified() { - return isModified; - } - /** * {@inheritDoc} */ @@ -356,8 +342,9 @@ public PdfName getResourceName(PdfObjectWrapper resourc */ public PdfName getResourceName(PdfObject resource) { PdfName resName = resourceToName.get(resource); - if (resName == null) + if (resName == null) { resName = resourceToName.get(resource.getIndirectReference()); + } return resName; } @@ -436,15 +423,23 @@ public PdfObject getResourceObject(PdfName resType, PdfName resName) { return null; } + protected boolean isReadOnly() { + return readOnly; + } + + protected void setReadOnly(boolean readOnly) { + this.readOnly = readOnly; + } + + protected boolean isModified() { + return isModified; + } + @Override protected boolean isWrappedObjectMustBeIndirect() { return false; } - PdfName addResource(PdfObjectWrapper resource, ResourceNameGenerator nameGen) { - return addResource(resource.getPdfObject(), nameGen); - } - protected void addResource(PdfObject resource, PdfName resType, PdfName resName) { if (resType.equals(PdfName.XObject)) { checkAndResolveCircularReferences(resource); @@ -469,17 +464,6 @@ protected void addResource(PdfObject resource, PdfName resType, PdfName resName) setModified(); } - PdfName addResource(PdfObject resource, ResourceNameGenerator nameGen) { - PdfName resName = getResourceName(resource); - - if (resName == null) { - resName = nameGen.generate(this); - addResource(resource, nameGen.getResourceType(), resName); - } - - return resName; - } - protected void buildResources(PdfDictionary dictionary) { for (PdfName resourceType : dictionary.keySet()) { if (getPdfObject().get(resourceType) == null) { @@ -499,6 +483,21 @@ protected void buildResources(PdfDictionary dictionary) { } } + PdfName addResource(PdfObjectWrapper resource, ResourceNameGenerator nameGen) { + return addResource(resource.getPdfObject(), nameGen); + } + + PdfName addResource(PdfObject resource, ResourceNameGenerator nameGen) { + PdfName resName = getResourceName(resource); + + if (resName == null) { + resName = nameGen.generate(this); + addResource(resource, nameGen.getResourceType(), resName); + } + + return resName; + } + private void checkAndResolveCircularReferences(PdfObject pdfObject) { // Consider the situation when an XObject references the resources of the first page. // We add this XObject to the first page, there is no need to resolve any circular references @@ -528,9 +527,9 @@ private void checkAndResolveCircularReferences(PdfObject pdfObject) { static class ResourceNameGenerator { - private PdfName resourceType; + private final PdfName resourceType; private int counter; - private String prefix; + private final String prefix; /** * Constructs an instance of {@link ResourceNameGenerator} class. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfRevisionsReader.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfRevisionsReader.java index 285d6b8215..67f911e893 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfRevisionsReader.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfRevisionsReader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStream.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStream.java index ef8cafb1dd..b9ee0750e8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfString.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfString.java index 8c1874b280..b42ef2f2f6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfString.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfString.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStringComparator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStringComparator.java index 2fa899b83e..12b14fc088 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStringComparator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfStringComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfTextArray.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfTextArray.java index 3c17d3d321..977d840caf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfTextArray.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfTextArray.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfUAConformance.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfUAConformance.java index 89ac16750e..70230e1148 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfUAConformance.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfUAConformance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfVersion.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfVersion.java index 18d4070155..8b55afb5e9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfVersion.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfVersion.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,8 +45,8 @@ public class PdfVersion implements Comparable { public static final PdfVersion PDF_1_7 = createPdfVersion(1, 7); public static final PdfVersion PDF_2_0 = createPdfVersion(2, 0); - private int major; - private int minor; + private final int major; + private final int minor; /** * Creates a PdfVersion class. @@ -58,20 +58,6 @@ private PdfVersion(int major, int minor) { this.minor = minor; } - @Override - public String toString() { - return MessageFormatUtil.format("PDF-{0}.{1}", major, minor); - } - - /** - * Gets the PDF version in "X.Y" format. Use {@link #toString()} to get the version in "PDF-X.Y" format. - * - * @return the string representation of the PDF version - */ - public PdfName toPdfName() { - return new PdfName(MessageFormatUtil.format("{0}.{1}", major, minor)); - } - /** * Creates a PdfVersion class from a String object if the specified version * can be found. @@ -104,6 +90,20 @@ public static PdfVersion fromPdfName(PdfName name) { throw new IllegalArgumentException("The provided pdf version was not found."); } + @Override + public String toString() { + return "PDF-" + major + "." + minor; + } + + /** + * Gets the PDF version in "X.Y" format. Use {@link #toString()} to get the version in "PDF-X.Y" format. + * + * @return the string representation of the PDF version + */ + public PdfName toPdfName() { + return new PdfName(major + "." + minor); + } + @Override public int compareTo(PdfVersion o) { int majorResult = Integer.compare(major, o.major); diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfViewerPreferences.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfViewerPreferences.java index 6c97cd6ad1..3899cdb85d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfViewerPreferences.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfViewerPreferences.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java index 2741011342..78b79b8cec 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -54,11 +54,13 @@ public class PdfWriter extends PdfOutputStream { protected WriterProperties properties; //forewarned is forearmed protected boolean isUserWarnedAboutAcroFormCopying; + /** * Currently active object stream. * Objects are written to the object stream if fullCompression set to true. */ PdfObjectStream objectStream = null; + /** * Is used to avoid duplications on object copying. * It stores hashes of the indirect reference from the source document and the corresponding @@ -85,9 +87,9 @@ public PdfWriter(java.io.File file) throws IOException { } /** - * Create a PdfWriter writing to the passed outputstream and with default writer properties. + * Create a PdfWriter writing to the passed {@link OutputStream} and with default writer properties. * - * @param os Outputstream to write to. + * @param os {@link OutputStream} to write to. */ public PdfWriter(java.io.OutputStream os) { this(os, new WriterProperties()); diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfXrefTable.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfXrefTable.java index cab3dff1ee..50441d44cc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfXrefTable.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/PdfXrefTable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,14 +44,12 @@ This file is part of the iText (R) project. * A representation of a cross-referenced table of a PDF document. */ public class PdfXrefTable { - - public static final int MAX_GENERATION = 65535; - private static final int INITIAL_CAPACITY = 32; + private static final int INITIAL_CAPACITY = 32; /** * The maximum offset in a cross-reference stream. This is a limitation of the PDF specification. - * SPEC1.7: 7.5.4 Cross reference trailer + * SPEC1.7: 7.5.4 Cross-reference trailer *

* * It states that the offset should be a 10-digit byte, so the maximum value is 9999999999. @@ -162,8 +160,8 @@ public int size() { public int getCountOfIndirectObjects() { int countOfIndirectObjects = 0; - for (final PdfIndirectReference ref: xref) { - if (ref != null && ! ref.isFree()) { + for (final PdfIndirectReference ref : xref) { + if (ref != null && !ref.isFree()) { countOfIndirectObjects++; } } @@ -247,14 +245,15 @@ protected void setCapacity(int capacity) { } /** - * Writes cross reference table and trailer to PDF. + * Writes cross-reference table and trailer to PDF. * * @param document is the current {@link PdfDocument document} * @param fileId field id * @param crypto pdf encryption * @throws IOException if any I/O error occurs */ - protected void writeXrefTableAndTrailer(PdfDocument document, PdfObject fileId, PdfObject crypto) throws IOException { + protected void writeXrefTableAndTrailer(PdfDocument document, PdfObject fileId, PdfObject crypto) + throws IOException { PdfWriter writer = document.getWriter(); if (!document.properties.appendMode) { @@ -275,7 +274,7 @@ protected void writeXrefTableAndTrailer(PdfDocument document, PdfObject fileId, xrefStream.makeIndirect(document); } List sections = createSections(document, false); - boolean noModifiedObjects = (sections.size() == 0) || + boolean noModifiedObjects = (sections.isEmpty()) || (xrefStream != null && sections.size() == 2 && sections.get(0) == count && sections.get(1) == 1); if (document.properties.appendMode && noModifiedObjects) { // No modifications in document @@ -290,8 +289,9 @@ protected void writeXrefTableAndTrailer(PdfDocument document, PdfObject fileId, if (xrefStream != null) { xrefStream.put(PdfName.Type, PdfName.XRef); xrefStream.put(PdfName.ID, fileId); - if (crypto != null) + if (crypto != null) { xrefStream.put(PdfName.Encrypt, crypto); + } xrefStream.put(PdfName.Size, new PdfNumber(this.size())); int offsetSize = getOffsetSize(Math.max(startxref, size())); @@ -469,7 +469,7 @@ void initFreeReferencesList(PdfDocument pdfDocument) { } else if (xref[next].getGenNumber() == MAX_GENERATION && xref[next].getOffset() == 0) { continue; } - if (prevFreeRef.getOffset() != (long)next) { + if (prevFreeRef.getOffset() != (long) next) { ((PdfIndirectReference) prevFreeRef.setState(PdfObject.MODIFIED)).setOffset(next); } freeReferencesLinkedList.put(next, prevFreeRef); @@ -560,8 +560,9 @@ private int getOffsetSize(long startxref) { int size = 5; long mask = 0xff00000000L; for (; size > 1; size--) { - if ((mask & startxref) != 0) + if ((mask & startxref) != 0) { break; + } // there is no need to use >>> because mask is positive mask >>= 8; } @@ -583,7 +584,7 @@ private void appendNewRefToFreeList(PdfIndirectReference reference) { /** * Removes indirect reference from free references linked list. - * It does not removes it from xref table and affects only the linked list formed by offset values of free references. + * It does not remove it from xref table and affects only the linked list formed by offset values of free references. * @param freeRefObjNr object number of the reference to be removed. * Removes the free reference with the least object number if this parameter is less than zero: * this could be used for finding the next free reference for reusing. @@ -611,7 +612,7 @@ private PdfIndirectReference removeFreeRefFromList(int freeRefObjNr) { if (leastFreeRefObjNum == null) { return null; } - freeRefObjNr = (int)leastFreeRefObjNum; + freeRefObjNr = (int) leastFreeRefObjNum; } PdfIndirectReference freeRef = xref[freeRefObjNr]; @@ -635,11 +636,12 @@ private void ensureCount(int count) { } private void extendXref(int capacity) { - if (this.memoryLimitsAwareHandler != null) { + if (this.memoryLimitsAwareHandler != null && !readingCompleted) { this.memoryLimitsAwareHandler.checkIfXrefStructureExceedsTheLimit(capacity); } PdfIndirectReference[] newXref = new PdfIndirectReference[capacity]; System.arraycopy(this.xref, 0, newXref, 0, this.xref.length); this.xref = newXref; } + } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/ReaderProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/ReaderProperties.java index f569c9e3f2..fb4847d79d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/ReaderProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/ReaderProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -103,7 +103,9 @@ public ReaderProperties setPublicKeySecurityParams(Certificate certificate, Key * @param externalDecryptionProcess the external decryption process to be used * @return this {@link ReaderProperties} instance */ - public ReaderProperties setPublicKeySecurityParams(Certificate certificate, IExternalDecryptionProcess externalDecryptionProcess) { + public ReaderProperties setPublicKeySecurityParams(Certificate certificate, + IExternalDecryptionProcess externalDecryptionProcess) { + clearEncryptionParams(); this.certificate = certificate; this.externalDecryptionProcess = externalDecryptionProcess; diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/RunLengthCompressionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/RunLengthCompressionStrategy.java new file mode 100644 index 0000000000..0e6a31740a --- /dev/null +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/RunLengthCompressionStrategy.java @@ -0,0 +1,88 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.pdf; + +import com.itextpdf.io.source.RunLengthOutputStream; + +import java.io.OutputStream; + +/** + * A compression strategy that uses the {@code RunLengthDecode} filter for PDF + * streams. + * + *

+ * This strategy implements the {@link IStreamCompressionStrategy} interface + * and provides {@code RunLengthDecode} encoding. + * + *

+ * Run-length encoding works best, when input data has long sequences of + * identical bytes. This is, usually, not the case for PDF content streams, so + * using this strategy will often cause a marginal size increase instead. + */ +public class RunLengthCompressionStrategy implements IStreamCompressionStrategy { + /** + * Constructs a new {@link RunLengthCompressionStrategy} instance. + */ + public RunLengthCompressionStrategy() { + // empty constructor + } + + /** + * Returns the name of the compression filter. + * + * @return {@link PdfName#RunLengthDecode} representing the {@code RunLengthDecode} filter + */ + @Override + public PdfName getFilterName() { + return PdfName.RunLengthDecode; + } + + /** + * Returns the decode parameters for the {@code RunLengthDecode} filter. + *

+ * This implementation returns {@code null} as no special decode parameters + * are required for standard run length compression. + * + * @return {@code null} as no decode parameters are needed + */ + @Override + public PdfObject getDecodeParams() { + return null; + } + + /** + * Creates a new output stream with run length compression applied. + *

+ * This method wraps the original output stream in a {@link RunLengthOutputStream} + * that applies run length compression. + * + * @param original the original output stream to wrap + * @param stream the PDF stream containing compression configuration + * + * @return a new {@link RunLengthOutputStream} that compresses data using the run length algorithm + */ + @Override + public OutputStream createNewOutputStream(OutputStream original, PdfStream stream) { + return new RunLengthOutputStream(original); + } +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/SerializedObjectContent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/SerializedObjectContent.java index 3d7014408e..cbc2dd23ab 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/SerializedObjectContent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/SerializedObjectContent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializer.java index 5ee3573d77..f78b93c12a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/StampingProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/StampingProperties.java index 16569b1ef5..5d09eb5d20 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/StampingProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/StampingProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,6 +51,7 @@ public StampingProperties(StampingProperties other) { this.appendMode = other.appendMode; this.preserveEncryption = other.preserveEncryption; this.disableMac = other.disableMac; + this.dependencies = other.dependencies; } /** diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/VersionConforming.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/VersionConforming.java index 2b61acd4e0..b4648306a7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/VersionConforming.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/VersionConforming.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/WriterProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/WriterProperties.java index 9d14ca8dc5..526b78343a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/WriterProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/WriterProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -344,6 +344,7 @@ public WriterProperties setPublicKeyEncryption(Certificate[] certs, int[] permis * To help ensure the uniqueness of file identifiers, * it is recommended to be computed by means of a message digest algorithm such as MD5. * + *

* iText will by default keep the existing initial id. * But if you'd like you can set this id yourself using this setter. * diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/XmpMetaInfoConverter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/XmpMetaInfoConverter.java index e0032d1d04..9129d1312f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/XmpMetaInfoConverter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/XmpMetaInfoConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAction.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAction.java index bfef8ff9fa..37d4a64280 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAction.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfActionOcgState.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfActionOcgState.java index 3b15803ca0..9e328f6beb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfActionOcgState.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfActionOcgState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActions.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActions.java index 8aef3accdc..cd4b34ba2e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActions.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActions.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfMediaClipData.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfMediaClipData.java index 28a4c26d72..68afa5adc6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfMediaClipData.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfMediaClipData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfRendition.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfRendition.java index e31f53d251..17af1131d6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfRendition.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfRendition.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfTarget.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfTarget.java index b22a862e9b..8eefbca5ec 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfTarget.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfTarget.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfWin.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfWin.java index f029f71f7e..8427f410c8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfWin.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/action/PdfWin.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/BorderStyleUtil.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/BorderStyleUtil.java index ed95df7833..dd9d063a70 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/BorderStyleUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/BorderStyleUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/InteriorColorUtil.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/InteriorColorUtil.java index d7b493fce9..6367cf92d5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/InteriorColorUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/InteriorColorUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotation.java index 05c6c5ee80..ae9c762f4d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotation.java index 5869204d15..45ef1bdb72 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationAppearance.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationAppearance.java index c5065eb16f..757ba9597e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationAppearance.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationAppearance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCaretAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCaretAnnotation.java index beeb2c46e1..58d8fde25e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCaretAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCaretAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCircleAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCircleAnnotation.java index 797634b3b1..afd074c5f7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCircleAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfCircleAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFileAttachmentAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFileAttachmentAnnotation.java index f884de0c9e..f952336b4e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFileAttachmentAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFileAttachmentAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFixedPrint.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFixedPrint.java index c72817f04a..a3c8a730dc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFixedPrint.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFixedPrint.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotation.java index 65ae7b78ce..883ad33bfe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfInkAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfInkAnnotation.java index b9964c561b..035c960b42 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfInkAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfInkAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotation.java index 2a9ecf456a..f02d4a6999 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLinkAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLinkAnnotation.java index 2a2dc9a975..a26648aa5d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLinkAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfLinkAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotation.java index 38cfc9da21..e7cc727bfd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotation.java index 52d2711ecc..461e00946a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolygonAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolygonAnnotation.java index 94866ee3ff..62d35b651d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolygonAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolygonAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolylineAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolylineAnnotation.java index 4da2c05085..615194a459 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolylineAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPolylineAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPopupAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPopupAnnotation.java index 183be4caea..5cdc622df6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPopupAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPopupAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPrinterMarkAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPrinterMarkAnnotation.java index 05046ae129..62d5f5bcca 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPrinterMarkAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfPrinterMarkAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfRedactAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfRedactAnnotation.java index b89be578b9..4d7a577a61 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfRedactAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfRedactAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfScreenAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfScreenAnnotation.java index 31b8ebfc46..1d01c4855b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfScreenAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfScreenAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSoundAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSoundAnnotation.java index 807e9035a9..361182aa35 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSoundAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSoundAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSquareAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSquareAnnotation.java index e3f3b75cf0..159d03168e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSquareAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfSquareAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotation.java index 32163c8765..09a81449b5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextAnnotation.java index 76f9418e26..c7116578ef 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextMarkupAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextMarkupAnnotation.java index abb2885584..e4a76cab19 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextMarkupAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTextMarkupAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTrapNetworkAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTrapNetworkAnnotation.java index b42005adca..6415811b72 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTrapNetworkAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfTrapNetworkAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWatermarkAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWatermarkAnnotation.java index 5a376b28a1..f14d607b0c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWatermarkAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWatermarkAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWidgetAnnotation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWidgetAnnotation.java index 9ce5c2c149..6f8dfbd05f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWidgetAnnotation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/PdfWidgetAnnotation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/AnnotationDefaultAppearance.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/AnnotationDefaultAppearance.java index 14f2726779..a9ac5f4048 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/AnnotationDefaultAppearance.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/AnnotationDefaultAppearance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/ExtendedAnnotationFont.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/ExtendedAnnotationFont.java index e845a9f766..7473551ac3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/ExtendedAnnotationFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/ExtendedAnnotationFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/StandardAnnotationFont.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/StandardAnnotationFont.java index 033bbee412..deadcd0e55 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/StandardAnnotationFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/annot/da/StandardAnnotationFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasArtifact.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasArtifact.java index 62439d8a93..9c835588a3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasArtifact.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasArtifact.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasGraphicsState.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasGraphicsState.java index 77b8a9b301..571e069d2f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasGraphicsState.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasGraphicsState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasTag.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasTag.java index 3c70668f86..5eb62d4c39 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasTag.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/CanvasTag.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvas.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvas.java index 7f31e1a229..7c6e9a9665 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvas.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvas.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasConstants.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasConstants.java index 55f877186a..3601375976 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasConstants.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfPatternCanvas.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfPatternCanvas.java index 94ee3bb37d..2686ff0017 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfPatternCanvas.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/PdfPatternCanvas.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLine.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLine.java index 1e783bd299..eb63088fda 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLine.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLine.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLine.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLine.java index 4a6e3c04cb..2ba02a69e0 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLine.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLine.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/ILineDrawer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/ILineDrawer.java index 661ccb6303..31f12efb71 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/ILineDrawer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/ILineDrawer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLine.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLine.java index 6154e65e50..1a0a230654 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLine.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLine.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/EventType.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/EventType.java index 4578112201..5d5649a183 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/EventType.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/EventType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IContentOperator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IContentOperator.java index 9fb17e2dde..1ed0e748d9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IContentOperator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IContentOperator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IXObjectDoHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IXObjectDoHandler.java index b658160b0d..45dcf88474 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IXObjectDoHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/IXObjectDoHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/ParserGraphicsState.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/ParserGraphicsState.java index 9d6148ad6e..0e025ff600 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/ParserGraphicsState.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/ParserGraphicsState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessor.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessor.java index 677d6726f4..384958f50d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,14 +22,11 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.pdf.canvas.parser; +import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.io.font.FontProgram; -import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.io.source.PdfTokenizer; import com.itextpdf.io.source.RandomAccessFileOrArray; import com.itextpdf.io.source.RandomAccessSourceFactory; -import com.itextpdf.commons.utils.MessageFormatUtil; -import com.itextpdf.kernel.logs.KernelLogMessageConstant; -import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.colors.CalGray; import com.itextpdf.kernel.colors.CalRgb; import com.itextpdf.kernel.colors.Color; @@ -43,11 +40,13 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.colors.PatternColor; import com.itextpdf.kernel.colors.Separation; import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant; +import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.Matrix; import com.itextpdf.kernel.geom.NoninvertibleTransformException; import com.itextpdf.kernel.geom.Path; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; import com.itextpdf.kernel.pdf.MemoryLimitsAwareHandler; import com.itextpdf.kernel.pdf.PdfArray; import com.itextpdf.kernel.pdf.PdfDictionary; @@ -77,12 +76,19 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.colorspace.PdfSpecialCs; import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.io.IOException; import java.lang.ref.WeakReference; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Stack; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Processor for a PDF content stream. @@ -90,6 +96,8 @@ This file is part of the iText (R) project. public class PdfCanvasProcessor { public static final String DEFAULT_OPERATOR = "DefaultOperator"; + private static final Logger LOGGER = LoggerFactory.getLogger(PdfCanvasProcessor.class); + /** * Listener that will be notified of render events */ @@ -739,14 +747,22 @@ private static class TextSetTextMatrixOperator implements IContentOperator { * {@inheritDoc} */ public void invoke(PdfCanvasProcessor processor, PdfLiteral operator, List operands) { - float a = ((PdfNumber) operands.get(0)).floatValue(); - float b = ((PdfNumber) operands.get(1)).floatValue(); - float c = ((PdfNumber) operands.get(2)).floatValue(); - float d = ((PdfNumber) operands.get(3)).floatValue(); - float e = ((PdfNumber) operands.get(4)).floatValue(); - float f = ((PdfNumber) operands.get(5)).floatValue(); - - processor.textLineMatrix = new Matrix(a, b, c, d, e, f); + Matrix parsedMatrix; + if (operands.size() == 7) { + float a = ((PdfNumber) operands.get(0)).floatValue(); + float b = ((PdfNumber) operands.get(1)).floatValue(); + float c = ((PdfNumber) operands.get(2)).floatValue(); + float d = ((PdfNumber) operands.get(3)).floatValue(); + float e = ((PdfNumber) operands.get(4)).floatValue(); + float f = ((PdfNumber) operands.get(5)).floatValue(); + parsedMatrix = new Matrix(a, b, c, d, e, f); + } else { + LOGGER.warn(MessageFormatUtil.format( + KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS, operator, + Arrays.toString((Object[])operands.toArray()))); + parsedMatrix = new Matrix(); + } + processor.textLineMatrix = parsedMatrix; processor.textMatrix = processor.textLineMatrix; } } @@ -806,8 +822,7 @@ public void invoke(PdfCanvasProcessor processor, PdfLiteral operator, List operands) { - float miterLimit = ((PdfNumber) operands.get(0)).floatValue(); - processor.getGraphicsState().setMiterLimit(miterLimit); + public void invoke(PdfCanvasProcessor processor, PdfLiteral operator, List operands) { + if (operands.size() == 2) { + float miterLimit = ((PdfNumber) operands.get(0)).floatValue(); + processor.getGraphicsState().setMiterLimit(miterLimit); + } else { + LOGGER.warn(MessageFormatUtil.format( + KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS, operator, + Arrays.toString((Object[])operands.toArray()))); + } } } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfDocumentContentParser.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfDocumentContentParser.java index b4d4a073af..45d2eb339f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfDocumentContentParser.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfDocumentContentParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractor.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractor.java index 3b73dbf540..33bea547ef 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridge.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridge.java index af7d7196a9..403b0ee795 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridge.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridge.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -303,7 +303,16 @@ public static IClipper.PolyFillType getFillType(int fillingRule) { */ public boolean addPolygonToClipper(IClipper clipper, com.itextpdf.kernel.geom.Point[] polyVertices, IClipper.PolyType polyType) { - return clipper.addPath(new Path(convertToLongPoints(new ArrayList<>(Arrays.asList(polyVertices)))), polyType, true); + List convertedPoints = new ArrayList<>(polyVertices.length); + + for (com.itextpdf.kernel.geom.Point point : polyVertices) { + convertedPoints.add(new Point.LongPoint( + getFloatMultiplier() * point.getX(), + getFloatMultiplier() * point.getY() + )); + } + + return clipper.addPath(new Path(convertedPoints), polyType, true); } /** diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperException.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperException.java index ea5f02c1bc..4a2785a6ce 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperException.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperExceptionConstant.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperExceptionConstant.java index 2ddad747fc..2a8e197474 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperExceptionConstant.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperExceptionConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/AbstractRenderInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/AbstractRenderInfo.java index 6e6c2a7d25..3c27174391 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/AbstractRenderInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/AbstractRenderInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ClippingPathInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ClippingPathInfo.java index d9d8a2ca0b..f9fa4ee173 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ClippingPathInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ClippingPathInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/IEventData.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/IEventData.java index c69cdc8282..e6fab7e0b1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/IEventData.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/IEventData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfo.java index 44d35cc977..8c672d08da 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/PathRenderInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/PathRenderInfo.java index 1e66448cec..7dffcdce05 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/PathRenderInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/PathRenderInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/TextRenderInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/TextRenderInfo.java index 0fd274cbe4..cc4e74152a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/TextRenderInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/data/TextRenderInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/IEventFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/IEventFilter.java index 74412df956..08c5dcee3c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/IEventFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/IEventFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/TextRegionEventFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/TextRegionEventFilter.java index 015e04f0fe..f3c1961893 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/TextRegionEventFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/filter/TextRegionEventFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/CharacterRenderInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/CharacterRenderInfo.java index 23ee241831..7cb2599db7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/CharacterRenderInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/CharacterRenderInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultPdfTextLocation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultPdfTextLocation.java index d56ed4b50c..ee715ce8f3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultPdfTextLocation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultPdfTextLocation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultTextChunkLocationComparator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultTextChunkLocationComparator.java index 8ac148d848..d2dd83e53a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultTextChunkLocationComparator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/DefaultTextChunkLocationComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredEventListener.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredEventListener.java index f4a6ea590b..0f43702676 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredEventListener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredTextEventListener.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredTextEventListener.java index 5a21b18964..f64c0ec6c3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredTextEventListener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/FilteredTextEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphEventListener.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphEventListener.java index 415b912d8c..86986d0194 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphEventListener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphTextEventListener.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphTextEventListener.java index 338d7dbd82..04e68c8ff1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphTextEventListener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/GlyphTextEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IEventListener.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IEventListener.java index 9c584d26c1..c4847cde0d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IEventListener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ILocationExtractionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ILocationExtractionStrategy.java index 09e9f406be..f03844e024 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ILocationExtractionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ILocationExtractionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IPdfTextLocation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IPdfTextLocation.java index 7c535705cb..b03b9204e7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IPdfTextLocation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/IPdfTextLocation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextChunkLocation.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextChunkLocation.java index 0968e3bdcc..a549ed3a59 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextChunkLocation.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextChunkLocation.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextExtractionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextExtractionStrategy.java index b80a076367..f176c5e835 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextExtractionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/ITextExtractionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/LocationTextExtractionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/LocationTextExtractionStrategy.java index 6e66b238fc..bb7dd7d587 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/LocationTextExtractionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/LocationTextExtractionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategy.java index 9b4de72e7b..a5306ad377 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/SimpleTextExtractionStrategy.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/SimpleTextExtractionStrategy.java index f5c9ae54e5..b865e811c8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/SimpleTextExtractionStrategy.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/SimpleTextExtractionStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunk.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunk.java index a5e38a2db3..e8479c0ae4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunk.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunk.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationBasedComparator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationBasedComparator.java index c8cec0e4ce..25daa79072 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationBasedComparator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationBasedComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationDefaultImp.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationDefaultImp.java index 0306b05238..b2c880207e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationDefaultImp.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextChunkLocationDefaultImp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextMarginFinder.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextMarginFinder.java index 1c10003be8..13efba144f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextMarginFinder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/listener/TextMarginFinder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtils.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtils.java index d520aea92a..088e87f5fe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtils.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -241,7 +241,7 @@ private static PdfDictionary parseDictionary(PdfCanvasParser ps) throws IOExcept * Otherwise, value is returned without modification */ private static PdfObject getAlternateValue(PdfName key, PdfObject value) { - if (key == PdfName.Filter) { + if (PdfName.Filter.equals(key)) { if (value instanceof PdfName) { PdfName altValue = inlineImageFilterAbbreviationMap.get((PdfName) value); if (altValue != null) { @@ -256,7 +256,7 @@ private static PdfObject getAlternateValue(PdfName key, PdfObject value) { } return altArray; } - } else if (key == PdfName.ColorSpace && value instanceof PdfName) { + } else if (PdfName.ColorSpace.equals(key) && value instanceof PdfName) { PdfName altValue = inlineImageColorSpaceAbbreviationMap.get((PdfName) value); if (altValue != null) { return altValue; diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParser.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParser.java index 5eb49ec536..380376b9cc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParser.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/InputMeta.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/InputMeta.java index b3ec4b906a..7a9eeff44f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/InputMeta.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/InputMeta.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaBrush.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaBrush.java index e21d4a0327..ce10c1910e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaBrush.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaBrush.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDo.java index a7b09e2f61..7bd95091af 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaFont.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaFont.java index 3cf00ccbce..6faff8aff6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaFont.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaFont.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaObject.java index 0018dc3dc5..2833948694 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaPen.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaPen.java index 30ff1d5139..b27cf4b805 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaPen.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaPen.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaState.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaState.java index 00dacf5a52..d41bc58b7a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaState.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageData.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageData.java index fb4a1dc535..d0443ce128 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageData.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageHelper.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageHelper.java index 1d85dedacd..8a79f74fd3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageHelper.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/canvas/wmf/WmfImageHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollection.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollection.java index 0f82989e3b..48efb395bd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollection.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollection.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionField.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionField.java index 77f23d6306..fc9f69a13d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionField.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionField.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItem.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItem.java index db684378cf..2e776b18b3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchema.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchema.java index 0a5747f1e4..51e7c503b7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchema.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchema.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSort.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSort.java index 943a388406..6b0a683d14 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSort.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSort.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCs.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCs.java index cddc1ebe97..bcd03e437a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCs.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCs.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfColorSpace.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfColorSpace.java index 1e0cadb5c1..5881bbe330 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfColorSpace.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfColorSpace.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfDeviceCs.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfDeviceCs.java index 2b4dba1c59..88e7454bca 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfDeviceCs.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfDeviceCs.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfPattern.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfPattern.java index b221ec17a3..738e3a78bd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfPattern.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfPattern.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfSpecialCs.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfSpecialCs.java index 922e7097b3..3bc55cedcc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfSpecialCs.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/PdfSpecialCs.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShading.java index fb5292a847..af855091f2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingBlend.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingBlend.java index 503fe13bac..660cbe10db 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingBlend.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingBlend.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMesh.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMesh.java index d29d58a2eb..330e89c7cf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMesh.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMesh.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMeshWithFlags.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMeshWithFlags.java index b25a739934..b7883c39d3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMeshWithFlags.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/AbstractPdfShadingMeshWithFlags.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfAxialShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfAxialShading.java index 9c4b0ca299..fab681f13b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfAxialShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfAxialShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -134,4 +134,4 @@ public PdfAxialShading(PdfColorSpace cs, PdfArray coords, PdfArray domain, IPdfF public final void setCoords(float x0, float y0, float x1, float y1) { setCoords(new PdfArray(new float[] {x0, y0, x1, y1})); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfCoonsPatchShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfCoonsPatchShading.java index 88dfc29169..d0ca7e661b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfCoonsPatchShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfCoonsPatchShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -114,4 +114,4 @@ public PdfCoonsPatchShading(PdfColorSpace cs, int bitsPerCoordinate, int bitsPer setBitsPerFlag(bitsPerFlag); setDecode(decode); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFreeFormGouraudShadedTriangleShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFreeFormGouraudShadedTriangleShading.java index a475a5994a..98bc710ccf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFreeFormGouraudShadedTriangleShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFreeFormGouraudShadedTriangleShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -110,4 +110,4 @@ public PdfFreeFormGouraudShadedTriangleShading(PdfColorSpace cs, int bitsPerCoor setBitsPerFlag(bitsPerFlag); setDecode(decode); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFunctionBasedShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFunctionBasedShading.java index 3110072dc4..85f4de97af 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFunctionBasedShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfFunctionBasedShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfLatticeFormGouraudShadedTriangleShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfLatticeFormGouraudShadedTriangleShading.java index aed5620191..12fcac159c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfLatticeFormGouraudShadedTriangleShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfLatticeFormGouraudShadedTriangleShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -119,4 +119,4 @@ public final void setVerticesPerRow(int verticesPerRow) { getPdfObject().put(PdfName.VerticesPerRow, new PdfNumber(verticesPerRow)); setModified(); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfRadialShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfRadialShading.java index 7ffbdccee5..4c6f343ecb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfRadialShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfRadialShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -140,4 +140,4 @@ public PdfRadialShading(PdfColorSpace cs, PdfArray coords, IPdfFunction function public final void setCoords(float x0, float y0, float r0, float x1, float y1, float r1) { setCoords(new PdfArray(new float[] {x0, y0, r0, x1, y1, r1})); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfTensorProductPatchShading.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfTensorProductPatchShading.java index 8dc1a93e90..7cfa6b14d0 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfTensorProductPatchShading.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/PdfTensorProductPatchShading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -99,4 +99,4 @@ public PdfTensorProductPatchShading(PdfColorSpace cs, int bitsPerCoordinate, int setBitsPerFlag(bitsPerFlag); setDecode(decode); } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/ShadingType.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/ShadingType.java index 02d3d3f1db..2bd4c647e9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/ShadingType.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/colorspace/shading/ShadingType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -59,4 +59,4 @@ public final class ShadingType { private ShadingType() { } -} \ No newline at end of file +} diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEvent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEvent.java index 945525bfda..7191289fc3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEventHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEventHandler.java index 06afdd29e3..af28a09cf5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEventHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/AbstractPdfDocumentEventHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/PdfDocumentEvent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/PdfDocumentEvent.java index 26fa9a6402..a8dbe02967 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/event/PdfDocumentEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/event/PdfDocumentEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/extgstate/PdfExtGState.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/extgstate/PdfExtGState.java index 8528c9496e..6b3982f371 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/extgstate/PdfExtGState.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/extgstate/PdfExtGState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfDictionaryFS.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfDictionaryFS.java index 005d137ce2..3c8ec9d02f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfDictionaryFS.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfDictionaryFS.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfEncryptedPayloadFileSpecFactory.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfEncryptedPayloadFileSpecFactory.java index 002a4e5e3e..a968ce09a7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfEncryptedPayloadFileSpecFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfEncryptedPayloadFileSpecFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfFileSpec.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfFileSpec.java index a3c1becfce..8b2b200836 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfFileSpec.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfFileSpec.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfStringFS.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfStringFS.java index 489e32237f..156f0b72a8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfStringFS.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filespec/PdfStringFS.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilter.java index 66181cae55..2c4c25932b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilter.java index aeb4b27871..f23910e642 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/BrotliFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/BrotliFilter.java index 489a3beec9..fbfeae3fa1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/BrotliFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/BrotliFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/CCITTFaxDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/CCITTFaxDecodeFilter.java index fb401cd4f3..52cc81f18c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/CCITTFaxDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/CCITTFaxDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DctDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DctDecodeFilter.java index 6fde0fee70..392a95b68c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DctDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DctDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DoNothingFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DoNothingFilter.java index 5771b4b06d..5093aa4ece 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DoNothingFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/DoNothingFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FilterHandlers.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FilterHandlers.java index 78320750d9..292efbbb62 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FilterHandlers.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FilterHandlers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeFilter.java index 433f2acbec..b1ac16341b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeStrictFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeStrictFilter.java index 7c4f52d51c..7217f9d64d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeStrictFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/FlateDecodeStrictFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/IFilterHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/IFilterHandler.java index 8d6c8e6b31..22fd5165c2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/IFilterHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/IFilterHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/JpxDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/JpxDecodeFilter.java index 3b5d1719f5..b7f9ba5c97 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/JpxDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/JpxDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilter.java index 50df19d99f..270efb972c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecoder.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecoder.java index 8cb1f203d2..191daaa928 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecoder.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/LZWDecoder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/RunLengthDecodeFilter.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/RunLengthDecodeFilter.java index d02e45f867..c60bdd3bb2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/RunLengthDecodeFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/filters/RunLengthDecodeFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/AbstractPdfFunction.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/AbstractPdfFunction.java index b84e496df3..5dce9346b5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/AbstractPdfFunction.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/AbstractPdfFunction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertors.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertors.java index d3ee26c8f4..f19dd87217 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertors.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertors.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IInputConversionFunction.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IInputConversionFunction.java index f90e555229..70c7c69617 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IInputConversionFunction.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IInputConversionFunction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IOutputConversionFunction.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IOutputConversionFunction.java index 96252fbe49..8bac2da9c0 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IOutputConversionFunction.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IOutputConversionFunction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunction.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunction.java index c7f7ff57f1..8cab089016 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunction.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunction.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunctionFactory.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunctionFactory.java index b8f623c830..83161ab2fa 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunctionFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/IPdfFunctionFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactory.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactory.java index 8ec506a715..135e6455b6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType0Function.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType0Function.java index 3fc389497c..79ce6ae4d7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType0Function.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType0Function.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType2Function.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType2Function.java index d36af56936..a9810d1120 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType2Function.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType2Function.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType3Function.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType3Function.java index 4da1d1db1c..7561f29ade 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType3Function.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType3Function.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType4Function.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType4Function.java index e7ea34e132..71f8dabb38 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType4Function.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/PdfType4Function.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/AbstractSampleExtractor.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/AbstractSampleExtractor.java index 8c5fdd102b..3e086d6a9f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/AbstractSampleExtractor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/AbstractSampleExtractor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractor.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractor.java index c052a6d995..cbd78c0406 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractor.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/IPdfOCG.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/IPdfOCG.java index 6c2dc6e05f..a82b4baa02 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/IPdfOCG.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/IPdfOCG.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayer.java index 503bb7b89a..38e558e8cc 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,7 +51,7 @@ This file is part of the iText (R) project. */ public class PdfLayer extends PdfObjectWrapper implements IPdfOCG { - /** + /** * Used for titling group of objects but not actually grouping them. */ protected String title; @@ -71,7 +71,13 @@ public class PdfLayer extends PdfObjectWrapper implements IPdfOCG * Creates a new layer by existing dictionary, which must be an indirect object. * * @param layerDictionary the layer dictionary, must have an indirect reference. + * + * @deprecated {@link PdfLayer} shall not be created from {@link PdfDictionary}, + * since some of the properties are not part of that dictionary. + * Instead, already existing layers shall be accessed through {@link PdfOCProperties#getLayers()}. */ + // Make package-private on next major release. + @Deprecated public PdfLayer(PdfDictionary layerDictionary) { super(layerDictionary); setForbidRelease(); @@ -80,7 +86,8 @@ public PdfLayer(PdfDictionary layerDictionary) { /** * Creates a new layer by its name and document. - * @param name the layer name + * + * @param name the layer name * @param document the PdfDocument which the layer belongs to */ public PdfLayer(String name, PdfDocument document) { @@ -98,8 +105,10 @@ private PdfLayer(PdfDocument document) { /** * Creates a title layer. A title layer is not really a layer but a collection of layers * under the same title heading. - * @param title the title text + * + * @param title the title text * @param document the PdfDocument + * * @return the title layer */ public static PdfLayer createTitle(String title, PdfDocument document) { @@ -114,8 +123,9 @@ public static PdfLayer createTitle(String title, PdfDocument document) { * That is, the state of at most one optional content group * in the array should be ON at a time: if one group is turned * ON, all others must be turned OFF. + * * @param document the PdfDocument - * @param group the radio group + * @param group the radio group */ public static void addOCGRadioGroup(PdfDocument document, List group) { document.getCatalog().getOCProperties(true).addOCGRadioGroup(group); @@ -123,6 +133,7 @@ public static void addOCGRadioGroup(PdfDocument document, List group) /** * Adds a child layer. Nested layers can only have one parent. + * * @param childLayer the child layer */ public void addChild(PdfLayer childLayer) { @@ -156,8 +167,18 @@ public List getParents() { return parentLayers == null ? null : new ArrayList<>(parentLayers); } + /** + * Gets the name of the layer to be displayed in the Layers panel. + * + * @return the name of the layer. + */ + public PdfString getName() { + return getPdfObject().getAsString(PdfName.Name); + } + /** * Sets the name of the layer to be displayed in the Layers panel. + * * @param name the name of the layer. */ public void setName(String name) { @@ -167,6 +188,7 @@ public void setName(String name) { /** * Gets the initial visibility of the layer when the document is opened. + * * @return the initial visibility of the layer */ public boolean isOn() { @@ -175,17 +197,20 @@ public boolean isOn() { /** * Sets the initial visibility of the layer when the document is opened. + * * @param on the initial visibility of the layer */ public void setOn(boolean on) { - if (this.on != on) + if (this.on != on) { fetchOCProperties().setModified(); + } this.on = on; } /** * Gets whether the layer is currently locked or not. If the layer is locked, * it will not be possible to change its state (on/off) in a viewer. + * * @return true if the layer is currently locked, false otherwise. */ public boolean isLocked() { @@ -201,13 +226,15 @@ public boolean isLocked() { * @param locked sets whether the layer is currently locked or not */ public void setLocked(boolean locked) { - if (this.isLocked() != locked) + if (this.isLocked() != locked) { fetchOCProperties().setModified(); + } this.locked = locked; } /** * Gets the layer visibility in Acrobat's layer panel + * * @return the layer visibility in Acrobat's layer panel */ public boolean isOnPanel() { @@ -218,11 +245,13 @@ public boolean isOnPanel() { * Sets the visibility of the layer in Acrobat's layer panel. If false * the layer cannot be directly manipulated by the user. Note that any children layers will * also be absent from the panel. + * * @param onPanel the visibility of the layer in Acrobat's layer panel */ public void setOnPanel(boolean onPanel) { - if (this.on != onPanel) + if (this.on != onPanel) { fetchOCProperties().setModified(); + } this.onPanel = onPanel; } @@ -230,13 +259,14 @@ public void setOnPanel(boolean onPanel) { * Gets a collection of current intents specified for this layer. * The default value is {@link PdfName#View}, so it will be the only element of the * resultant collection if no intents are currently specified. + * * @return the collection of intents. */ public Collection getIntents() { final PdfObject intent = getPdfObject().get(PdfName.Intent); - if (intent instanceof PdfName) + if (intent instanceof PdfName) { return Collections.singletonList((PdfName) intent); - else if (intent instanceof PdfArray) { + } else if (intent instanceof PdfArray) { PdfArray intentArr = (PdfArray) intent; Collection intentsCollection = new ArrayList<>(intentArr.size()); for (PdfObject i : intentArr) { @@ -251,6 +281,7 @@ else if (intent instanceof PdfArray) { /** * Sets the intents of the layer. + * * @param intents the list of intents. */ public void setIntents(List intents) { @@ -273,11 +304,12 @@ public void setIntents(List intents) { /** * Used by the creating application to store application-specific * data associated with this optional content group. + * * @param creator a text string specifying the application that created the group * @param subtype a string defining the type of content controlled by the group. Suggested - * values include but are not limited to Artwork, for graphic-design or publishing - * applications, and Technical, for technical designs such as building plans or - * schematics + * values include but are not limited to Artwork, for graphic-design or publishing + * applications, and Technical, for technical designs such as building plans or + * schematics */ public void setCreatorInfo(String creator, String subtype) { PdfDictionary usage = getUsage(); @@ -291,17 +323,19 @@ public void setCreatorInfo(String creator, String subtype) { /** * Specifies the language of the content controlled by this * optional content group - * @param lang a language string which specifies a language and possibly a locale - * (for example, es-MX represents Mexican Spanish) + * + * @param lang a language string which specifies a language and possibly a locale + * (for example, es-MX represents Mexican Spanish) * @param preferred used by viewer applications when there is a partial match but no exact - * match between the system language and the language strings in all usage dictionaries + * match between the system language and the language strings in all usage dictionaries */ public void setLanguage(String lang, boolean preferred) { PdfDictionary usage = getUsage(); PdfDictionary dic = new PdfDictionary(); dic.put(PdfName.Lang, new PdfString(lang, PdfEncodings.UNICODE_BIG)); - if (preferred) + if (preferred) { dic.put(PdfName.Preferred, PdfName.ON); + } usage.put(PdfName.Language, dic); usage.setModified(); } @@ -311,6 +345,7 @@ public void setLanguage(String lang, boolean preferred) { * group when the document (or part of it) is saved by a viewer application to a format * that does not support optional content (for example, an earlier version of * PDF or a raster image format). + * * @param export the export state */ public void setExport(boolean export) { @@ -324,21 +359,25 @@ public void setExport(boolean export) { /** * Specifies a range of magnifications at which the content * in this optional content group is best viewed. + * * @param min the minimum recommended magnification factors at which the group - * should be ON. A negative value will set the default to 0 + * should be ON. A negative value will set the default to 0 * @param max the maximum recommended magnification factor at which the group - * should be ON. A negative value will set the largest possible magnification supported by the - * viewer application + * should be ON. A negative value will set the largest possible magnification supported by the + * viewer application */ public void setZoom(float min, float max) { - if (min <= 0 && max < 0) + if (min <= 0 && max < 0) { return; + } PdfDictionary usage = getUsage(); PdfDictionary dic = new PdfDictionary(); - if (min > 0) + if (min > 0) { dic.put(PdfName.min, new PdfNumber(min)); - if (max >= 0) + } + if (max >= 0) { dic.put(PdfName.max, new PdfNumber(max)); + } usage.put(PdfName.Zoom, dic); usage.setModified(); } @@ -346,10 +385,11 @@ public void setZoom(float min, float max) { /** * Specifies that the content in this group is intended for * use in printing - * @param subtype a name specifying the kind of content controlled by the group; - * for example, Trapping, PrintersMarks and Watermark + * + * @param subtype a name specifying the kind of content controlled by the group; + * for example, Trapping, PrintersMarks and Watermark * @param printState indicates that the group should be - * set to that state when the document is printed from a viewer application + * set to that state when the document is printed from a viewer application */ public void setPrint(String subtype, boolean printState) { PdfDictionary usage = getUsage(); @@ -363,6 +403,7 @@ public void setPrint(String subtype, boolean printState) { /** * Indicates that the group should be set to that state when the * document is opened in a viewer application. + * * @param view the view state */ public void setView(boolean view) { @@ -376,15 +417,18 @@ public void setView(boolean view) { /** * Specifies one or more users for whom this optional content group * is primarily intended. - * @param type a name that can be Ind (individual), Ttl (title), or Org (organization). + * + * @param type a name that can be Ind (individual), Ttl (title), or Org (organization). * @param names one or more text strings representing - * the name(s) of the individual, position or organization + * the name(s) of the individual, position or organization */ public void setUser(String type, String... names) { - if (type == null || !"Ind".equals(type) && !"Ttl".equals(type) && !"Org".equals(type)) + if (type == null || !"Ind".equals(type) && !"Ttl".equals(type) && !"Org".equals(type)) { throw new IllegalArgumentException("Illegal type argument"); - if (names == null || names.length == 0) + } + if (names == null || names.length == 0) { throw new IllegalArgumentException("Illegal names argument"); + } PdfDictionary usage = getUsage(); PdfDictionary dic = new PdfDictionary(); dic.put(PdfName.Type, new PdfName(type)); @@ -403,8 +447,9 @@ public void setUser(String type, String... names) { /** * Indicates that the group contains a pagination artifact. + * * @param pe one of the following names: "HF" (Header Footer), - * "FG" (Foreground), "BG" (Background), or "L" (Logo). + * "FG" (Foreground), "BG" (Background), or "L" (Logo). */ public void setPageElement(String pe) { PdfDictionary usage = getUsage(); @@ -416,6 +461,7 @@ public void setPageElement(String pe) { /** * Gets the indirect reference to the current layer object. + * * @return the indirect reference to the object representing the layer */ public PdfIndirectReference getIndirectReference() { @@ -435,12 +481,30 @@ public String getTitle() { * Gets the list of the current child layers of the layer. * BE CAREFUL! Do not try to add a child layer using the resultant child list, * use #addChild method instead. + * * @return the list of the current child layers, null if the layer has no children. */ public List getChildren() { return childLayers == null ? null : new ArrayList<>(childLayers); } + /** + * Creates a title layer without registering it in PdfOCProperties. + * + * @param title the title of the layer + * @param document the document this title layer belongs to + * + * @return the created layer + */ + protected static PdfLayer createTitleSilent(String title, PdfDocument document) { + if (title == null) { + throw new IllegalArgumentException("Invalid title argument"); + } + PdfLayer layer = new PdfLayer(document); + layer.title = title; + return layer; + } + @Override protected boolean isWrappedObjectMustBeIndirect() { return true; @@ -455,22 +519,9 @@ protected PdfDocument getDocument() { return getPdfObject().getIndirectReference().getDocument(); } - /** - * Creates a title layer without registering it in PdfOCProperties. - * @param title the title of the layer - * @param document the document this title layer belongs to - * @return the created layer - */ - protected static PdfLayer createTitleSilent(String title, PdfDocument document) { - if (title == null) - throw new IllegalArgumentException("Invalid title argument"); - PdfLayer layer = new PdfLayer(document); - layer.title = title; - return layer; - } - /** * Gets the /Usage dictionary, creating a new one if necessary. + * * @return the /Usage dictionary */ protected PdfDictionary getUsage() { diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembership.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembership.java index c20a628e8c..0e7ee93aa4 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembership.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembership.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,6 +32,7 @@ This file is part of the iText (R) project. import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; /** @@ -46,8 +47,6 @@ This file is part of the iText (R) project. * must be indirect. */ public class PdfLayerMembership extends PdfObjectWrapper implements IPdfOCG { - - /** * Creates a new, empty membership layer. * @@ -78,15 +77,33 @@ public PdfLayerMembership(PdfDictionary membershipDictionary) { */ public Collection getLayers() { final PdfObject layers = getPdfObject().get(PdfName.OCGs); + List allLayers = getDocument().getCatalog().getOCProperties(false).getLayers(); if (layers instanceof PdfDictionary) { - List list = new ArrayList<>(); - list.add(new PdfLayer((PdfDictionary) ((PdfDictionary) layers).makeIndirect(getDocument()))); - return list; + for (PdfLayer layer : allLayers) { + if (layer.getPdfObject().getIndirectReference().equals(layers.getIndirectReference())) { + return Collections.singleton(layer); + } + } + // This logic should only be triggered if layer is not in the document yet. + return Collections.singletonList(new PdfLayer((PdfDictionary) layers.makeIndirect(getDocument()))); } else if (layers instanceof PdfArray) { List layerList = new ArrayList<>(); for (int ind = 0; ind < ((PdfArray) layers).size(); ind++) { - layerList.add(new PdfLayer(((PdfArray) (((PdfArray) layers).makeIndirect(getDocument()))).getAsDictionary(ind))); + boolean layerFound = false; + for (PdfLayer layer : allLayers) { + if (layer.getPdfObject().getIndirectReference().equals( + ((PdfArray) layers).get(ind).getIndirectReference())) { + layerList.add(layer); + layerFound = true; + break; + } + } + if (layerFound) { + continue; + } + // This logic should only be triggered if layer is not in the document yet. + layerList.add(new PdfLayer(((PdfArray) layers.makeIndirect(getDocument())).getAsDictionary(ind))); } return layerList; } diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfOCProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfOCProperties.java index bb74f765af..a21d6dd924 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfOCProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfOCProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -56,7 +56,7 @@ public class PdfOCProperties extends PdfObjectWrapper { static final String OC_CONFIG_NAME_PATTERN = "OCConfigName"; - private List layers = new ArrayList<>(); + private final List layers = new ArrayList<>(); /** * Creates a new PdfOCProperties instance. @@ -94,7 +94,7 @@ public void addOCGRadioGroup(List group) { if (layer.getTitle() == null) ar.add(layer.getPdfObject().getIndirectReference()); } - if (ar.size() != 0) { + if (!ar.isEmpty()) { PdfDictionary d = getPdfObject().getAsDictionary(PdfName.D); if (d == null) { d = new PdfDictionary(); @@ -168,20 +168,19 @@ public PdfObject fillDictionary(boolean removeNonDocumentOcgs) { } PdfArray order = new PdfArray(); - for (Object element : docOrder) { - PdfLayer layer = (PdfLayer) element; - getOCGOrder(order, layer); + for (PdfLayer element : docOrder) { + getOCGOrder(order, element); } filledDDictionary.put(PdfName.Order, order); PdfArray off = new PdfArray(); - for (Object element : layers) { - PdfLayer layer = (PdfLayer) element; - if (layer.getTitle() == null && !layer.isOn()) - off.add(layer.getIndirectReference()); + for (PdfLayer element : layers) { + if (element.getTitle() == null && !element.isOn()) { + off.add(element.getIndirectReference()); + } } - if (off.size() > 0) { + if (!off.isEmpty()) { filledDDictionary.put(PdfName.OFF, off); } @@ -190,7 +189,7 @@ public PdfObject fillDictionary(boolean removeNonDocumentOcgs) { if (layer.getTitle() == null && layer.isLocked()) locked.add(layer.getIndirectReference()); } - if (locked.size() > 0) { + if (!locked.isEmpty()) { filledDDictionary.put(PdfName.Locked, locked); } @@ -220,10 +219,9 @@ public static boolean checkDDictonaryFieldValue(PdfName field, PdfObject value) if (PdfName.BaseState.equals(field) && !PdfName.ON.equals(value)) { return false; //for dictionary D Intent should have the value View - } else if (PdfName.Intent.equals(field) && !PdfName.View.equals(value)) { - return false; + } else { + return !PdfName.Intent.equals(field) || PdfName.View.equals(value); } - return true; } @Override @@ -287,8 +285,9 @@ private static void getOCGOrder(PdfArray order, PdfLayer layer) { for (PdfLayer child : children) { getOCGOrder(kids, child); } - if (kids.size() > 0) + if (!kids.isEmpty()) { order.add(kids); + } } private static void copyDDictionaryField(PdfName fieldToAdd, PdfDictionary fromDictionary, PdfDictionary toDictionary) { @@ -345,7 +344,7 @@ private void addASEvent(PdfName event, PdfName category) { arr.add(layer.getPdfObject().getIndirectReference()); } } - if (arr.size() == 0) + if (arr.isEmpty()) return; PdfDictionary d = getPdfObject().getAsDictionary(PdfName.D); PdfArray arras = d.getAsArray(PdfName.AS); @@ -370,7 +369,7 @@ private void readLayersFromDictionary() { if (ocgs == null || ocgs.isEmpty()) return; - Map layerMap = new TreeMap(); + Map layerMap = new TreeMap<>(); for (int ind = 0; ind < ocgs.size(); ind++) { PdfLayer currentLayer = new PdfLayer((PdfDictionary) ocgs.getAsDictionary(ind).makeIndirect(getDocument())); // We will set onPanel to true later for the objects present in /D->/Order entry. @@ -443,7 +442,7 @@ private void readOrderFromDictionary(PdfLayer parent, PdfArray orderArray, Map

0 && nextArray.get(0).getType() != PdfObject.STRING) { + if (!nextArray.isEmpty() && nextArray.get(0).getType() != PdfObject.STRING) { readOrderFromDictionary(layer, orderArray.getAsArray(i + 1), layerMap, layerReferences, titleLayers); i++; diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpression.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpression.java index 3cea0c0b07..ee0f9e43c0 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpression.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpression.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfDestination.java index 555bd3da54..cc8a55c190 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitDestination.java index e27e8e58b6..8cf9c85761 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitRemoteGoToDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitRemoteGoToDestination.java index 52a77f21aa..e501c0d50d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitRemoteGoToDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfExplicitRemoteGoToDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfNamedDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfNamedDestination.java index 5cf9ac3aa4..4f2d8ba3f3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfNamedDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfNamedDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStringDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStringDestination.java index 71520337d4..f5c7547c0a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStringDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStringDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStructureDestination.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStructureDestination.java index 9a8b09e6c8..9a5cb89334 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStructureDestination.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/navigation/PdfStructureDestination.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsAggregator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsAggregator.java index 7a268d2e15..6e115a9694 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsAggregator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsEvent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsEvent.java index a14286d422..0d7e6cd6b5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsAggregator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsAggregator.java index 38834d6239..aac4400254 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsAggregator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsEvent.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsEvent.java index 89146b51f8..1652ec90e9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsEvent.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/IStructureNode.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/IStructureNode.java index 2889354161..cc4d649414 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/IStructureNode.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/IStructureNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/McrCheckUtil.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/McrCheckUtil.java index 90b0545cad..352c216774 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/McrCheckUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/McrCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandler.java index bc5f9e1f0e..debf2c0855 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcr.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcr.java index 6eb5d313e3..5ddb1de1bf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcr.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcr.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrDictionary.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrDictionary.java index 12e593da85..ef13a5ef1d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrDictionary.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrDictionary.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrNumber.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrNumber.java index 09e3166c53..1cc96ef294 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrNumber.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfMcrNumber.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfNamespace.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfNamespace.java index be858de950..7d32778c0b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfNamespace.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfNamespace.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfObjRef.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfObjRef.java index 270d742566..8b775a2d14 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfObjRef.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfObjRef.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructElem.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructElem.java index 1361e4389c..f807729263 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructElem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructElem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructIdTree.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructIdTree.java index 58105ae3fe..fa9282c7cf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructIdTree.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructIdTree.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructTreeRoot.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructTreeRoot.java index a7dde0e0e1..c6c5405626 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructTreeRoot.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructTreeRoot.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributes.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributes.java index 75df75dad2..5c2e9b4509 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributes.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserPropertiesAttributes.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserPropertiesAttributes.java index ce9ba78ecc..a8f2b01932 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserPropertiesAttributes.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserPropertiesAttributes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserProperty.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserProperty.java index dae5ace597..8e3e915f7b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserProperty.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/PdfUserProperty.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardNamespaces.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardNamespaces.java index 0794b35511..0e80307dea 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardNamespaces.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardNamespaces.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardRoles.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardRoles.java index f75a1bd607..73ad62f577 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardRoles.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StandardRoles.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopier.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopier.java index b03a298016..4b8fd8a4fe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopier.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AbstractAvoidDuplicatesTagTreeIteratorHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AbstractAvoidDuplicatesTagTreeIteratorHandler.java index 22df6cc7c8..c3a2a63fb3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AbstractAvoidDuplicatesTagTreeIteratorHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AbstractAvoidDuplicatesTagTreeIteratorHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityProperties.java index 4e986d1b65..081af18abf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesToStructElem.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesToStructElem.java index 2e8e764e77..e147fa9ea9 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesToStructElem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesToStructElem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/BackedAccessibilityProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/BackedAccessibilityProperties.java index 7456dbfac2..e51f36035e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/BackedAccessibilityProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/BackedAccessibilityProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/DefaultAccessibilityProperties.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/DefaultAccessibilityProperties.java index ec401fb08f..e9654d32ec 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/DefaultAccessibilityProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/DefaultAccessibilityProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/IRoleMappingResolver.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/IRoleMappingResolver.java index c653da9bfa..e94758a149 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/IRoleMappingResolver.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/IRoleMappingResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/ITagTreeIteratorHandler.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/ITagTreeIteratorHandler.java index db01b7e890..be396399f8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/ITagTreeIteratorHandler.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/ITagTreeIteratorHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelations.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelations.java index 0f2eee440f..39c45a3231 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelations.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelations.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolver.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolver.java index 7e41c3ec34..9b5a71319e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolver.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolverPdf2.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolverPdf2.java index 6c53228464..483a4d9f1f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolverPdf2.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RoleMappingResolverPdf2.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RootTagNormalizer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RootTagNormalizer.java index 1e39269cba..90389c99af 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RootTagNormalizer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/RootTagNormalizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagReference.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagReference.java index adc7b61bf2..fe198fcee7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagReference.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagReference.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContext.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContext.java index 66433c97e0..d607179fff 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIterator.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIterator.java index 18f1a3ccab..4bd778248e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIterator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorFlusher.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorFlusher.java index b8ce46f3bd..6b87325b71 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorFlusher.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorFlusher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointer.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointer.java index e6c7c09f6b..b38ff84af3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/WaitingTagsManager.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/WaitingTagsManager.java index c45845d64d..d25cb0cca7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/WaitingTagsManager.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/tagutils/WaitingTagsManager.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfo.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfo.java index a436b2665f..34d268dd4a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfo.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -86,7 +86,7 @@ class ImagePdfBytesInfo { private byte[] iccData; public ImagePdfBytesInfo(PdfImageXObject imageXObject, ImageBytesRetrievalProperties properties) { - this.properties =properties; + this.properties = properties; this.imageXObject = imageXObject; if (properties.isApplyDecodeArray() && imageXObject.getPdfObject().containsKey(PdfName.Decode)) { @@ -112,7 +112,7 @@ public byte[] getProcessedImageData(byte[] intialBytes) throws IOException { byte[] data = PdfReader.decodeBytes(intialBytes, imageXObject.getPdfObject()); - if ( decodeArray != null && !isNeutralDecodeArray(decodeArray)) { + if (decodeArray != null && !isNeutralDecodeArray(decodeArray)) { data = applyDecoding(data); } for (IPdfFunction fct : colorTransformations) { @@ -197,14 +197,16 @@ private void extractColorInfo(PdfImageXObject imageXObject) { switch (((PdfName) csArray.get(0)).getValue()) { case "Indexed": palette = new Palette(csArray, colorDepth); - long color0 = isPaletteBlackAndWhite(palette); - if (colorDepth == 1 && color0 >= 0) { - targetColorSpace = new PdfDeviceCs.Gray(); - if (color0 == 1 && decodeArray == null) { - decodeArray = new double[] {1.0, 0.0}; + if (colorDepth == 1 && palette.getPaletteSize() == 2) { + long color0 = isPaletteBlackAndWhite(palette); + if (color0 >= 0) { + targetColorSpace = new PdfDeviceCs.Gray(); + if (color0 == 1 && decodeArray == null) { + decodeArray = new double[] {1.0, 0.0}; + } + palette = null; + break; } - palette = null; - break; } if ((properties.isApplyTransparency() && alphaChannel) || palette.getBaseColorspace().getNumberOfComponents() == 1) { @@ -271,33 +273,6 @@ private void extractColorInfo(PdfImageXObject imageXObject) { } } - private static long isPaletteBlackAndWhite(Palette palette) { - // more than 2 values - if (palette.getHiVal() > 1) { - return -1; - } - long color0 = -1; - for (int c = 0; c < palette.getBaseColorspace().getNumberOfComponents(); c++) { - for (int i = 0; i < 2; i++) { - switch ((int) palette.getColor(i)[c]) { - case 0: - if (i == 0) { - color0 = 0; - } - break; - case 0xff: - if (i == 0) { - color0 = 1; - } - break; - default: - return -1; - } - } - } - return color0; - } - private byte[] applytransparency(byte[] imageData) { int maskMultiplier = 8 / transparencyMask.getPdfObject().getAsNumber(PdfName.BitsPerComponent).intValue(); byte[] mask = transparencyMask.getImageBytes(false); @@ -347,6 +322,33 @@ private byte[] applyDecoding(byte[] imageData) { return imagePixels.getData(); } + private static long isPaletteBlackAndWhite(Palette palette) { + // more than 2 values + if (palette.getHiVal() > 1) { + return -1; + } + long color0 = -1; + for (int c = 0; c < palette.getBaseColorspace().getNumberOfComponents(); c++) { + for (int i = 0; i < 2 && i < palette.getPaletteSize(); i++) { + switch ((int) palette.getColor(i)[c]) { + case 0: + if (i == 0) { + color0 = 0; + } + break; + case 0xff: + if (i == 0) { + color0 = 1; + } + break; + default: + return -1; + } + } + } + return color0; + } + public enum OutputFileType { TIFF, PNG @@ -362,12 +364,17 @@ public enum PngColorType { RGBA } + private interface ImageProcesser { + byte[] processImage() throws IOException; + } + private static class Palette { private final PdfColorSpace baseColorspace; private final int hiVal; private final int indexBitDepth; private final byte[] paletteData; private final int paletteChannels; + public Palette(PdfArray csArray, int indexBitDepth) { if (csArray.size() != 4) { throw new PdfException(KernelExceptionMessageConstant.PALLET_CONTENT_ERROR); @@ -410,10 +417,10 @@ public long[] getColor(long index) { public int getHiVal() { return hiVal; } - } - private interface ImageProcesser { - byte[] processImage() throws IOException; + public int getPaletteSize() { + return paletteData.length / paletteChannels; + } } private static class TiffImageProcessor implements ImageProcesser { diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfFormXObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfFormXObject.java index 7b7b90ed17..6233dfcab2 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfFormXObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfFormXObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObject.java index a7b26d104d..05ca64bb6d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfTransparencyGroup.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfTransparencyGroup.java index c00954e528..5e81efa96c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfTransparencyGroup.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfTransparencyGroup.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfXObject.java b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfXObject.java index f6283c8fcd..f1c0368da3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfXObject.java +++ b/kernel/src/main/java/com/itextpdf/kernel/pdf/xobject/PdfXObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/security/IExternalDecryptionProcess.java b/kernel/src/main/java/com/itextpdf/kernel/security/IExternalDecryptionProcess.java index 35a00e797f..e879433090 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/security/IExternalDecryptionProcess.java +++ b/kernel/src/main/java/com/itextpdf/kernel/security/IExternalDecryptionProcess.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/BitmapImagePixels.java b/kernel/src/main/java/com/itextpdf/kernel/utils/BitmapImagePixels.java index f98a0b618e..9bc7b0dc3b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/BitmapImagePixels.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/BitmapImagePixels.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/CompareTool.java b/kernel/src/main/java/com/itextpdf/kernel/utils/CompareTool.java index d799b3c0f8..74db92c152 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/CompareTool.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/CompareTool.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/DefaultSafeXmlParserFactory.java b/kernel/src/main/java/com/itextpdf/kernel/utils/DefaultSafeXmlParserFactory.java index b4a5743d93..55f7a94980 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/DefaultSafeXmlParserFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/DefaultSafeXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/ICopyFilter.java b/kernel/src/main/java/com/itextpdf/kernel/utils/ICopyFilter.java index fcda9e9fd2..8888639b04 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/ICopyFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/ICopyFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/IXmlParserFactory.java b/kernel/src/main/java/com/itextpdf/kernel/utils/IXmlParserFactory.java index 6c36fea0e0..d147f930a8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/IXmlParserFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/IXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/IdleOutputStream.java b/kernel/src/main/java/com/itextpdf/kernel/utils/IdleOutputStream.java index baabd5d5d7..37e21f8dc8 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/IdleOutputStream.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/IdleOutputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/MemoryFirstPdfWriter.java b/kernel/src/main/java/com/itextpdf/kernel/utils/MemoryFirstPdfWriter.java index c00e9f4894..391e5be365 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/MemoryFirstPdfWriter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/MemoryFirstPdfWriter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/NullCopyFilter.java b/kernel/src/main/java/com/itextpdf/kernel/utils/NullCopyFilter.java index 9e7cdd12f3..eaef3258cd 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/NullCopyFilter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/NullCopyFilter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PageRange.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PageRange.java index e5afad9c10..fb67a8c708 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PageRange.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PageRange.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfAnnotationFlattener.java index bb09c74948..947dd85937 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMerger.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMerger.java index 2299b0972e..c8bab5ad1b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMerger.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMerger.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMergerProperties.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMergerProperties.java index 8b29a5cc2c..450e7d6788 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMergerProperties.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfMergerProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfResourceCounter.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfResourceCounter.java index 00cf032698..902ce9dcfe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfResourceCounter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfResourceCounter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfScriptMerger.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfScriptMerger.java index e6fba8e7a9..e85ecd3c46 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfScriptMerger.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfScriptMerger.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfSplitter.java b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfSplitter.java index 9a68bcace2..e1ce2f2338 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/PdfSplitter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/PdfSplitter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainer.java b/kernel/src/main/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainer.java index 1236652e4f..08a298a27d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/TaggedPdfReaderTool.java b/kernel/src/main/java/com/itextpdf/kernel/utils/TaggedPdfReaderTool.java index 604760f1b9..5bbf4e019c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/TaggedPdfReaderTool.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/TaggedPdfReaderTool.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/XmlProcessorCreator.java b/kernel/src/main/java/com/itextpdf/kernel/utils/XmlProcessorCreator.java index 9256b7bb98..8cb7389671 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/XmlProcessorCreator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/XmlProcessorCreator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/XmlUtils.java b/kernel/src/main/java/com/itextpdf/kernel/utils/XmlUtils.java index 326e967cdd..57b2fbb57c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/XmlUtils.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/XmlUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -26,13 +26,14 @@ This file is part of the iText (R) project. import java.io.InputStream; import java.io.OutputStream; import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; import org.xml.sax.SAXException; final class XmlUtils { @@ -45,20 +46,43 @@ public static void writeXmlDocToStream(Document xmlReport, OutputStream stream) transformer.transform(source, result); } - public static boolean compareXmls(InputStream xml1, InputStream xml2) - throws ParserConfigurationException, SAXException, IOException { + public static boolean compareXmls(InputStream xml1, InputStream xml2) throws SAXException, IOException { DocumentBuilder db = XmlProcessorCreator.createSafeDocumentBuilder(true, true); Document doc1 = db.parse(xml1); doc1.normalizeDocument(); + normalizeTextNodes(doc1.getDocumentElement()); Document doc2 = db.parse(xml2); doc2.normalizeDocument(); + normalizeTextNodes(doc2.getDocumentElement()); return doc2.isEqualNode(doc1); } - public static Document initNewXmlDocument() throws ParserConfigurationException { + private static void normalizeTextNodes(Node node) { + NodeList children = node.getChildNodes(); + java.util.List toRemove = new java.util.ArrayList(); + + for (int i = 0; i < children.getLength(); i++) { + Node child = children.item(i); + + if (child.getNodeType() == Node.TEXT_NODE) { + String text = child.getNodeValue(); + if (text != null && text.trim().isEmpty()) { + toRemove.add(child); + } + } else if (child.getNodeType() == Node.ELEMENT_NODE) { + normalizeTextNodes(child); + } + } + + for (Node n : toRemove) { + node.removeChild(n); + } + } + + public static Document initNewXmlDocument() { DocumentBuilder db = XmlProcessorCreator.createSafeDocumentBuilder(false, false); return db.newDocument(); } diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/AbstractTextMarkupAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/AbstractTextMarkupAnnotationFlattener.java index 5e95445782..5d62733b3e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/AbstractTextMarkupAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/AbstractTextMarkupAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/DefaultAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/DefaultAnnotationFlattener.java index 9140207ec0..3025e33cb6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/DefaultAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/DefaultAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/HighLightTextMarkupAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/HighLightTextMarkupAnnotationFlattener.java index a75f29ac8d..8b3e512334 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/HighLightTextMarkupAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/HighLightTextMarkupAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/IAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/IAnnotationFlattener.java index 8f1f158706..c81f2ff2ae 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/IAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/IAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/NotSupportedFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/NotSupportedFlattener.java index 2ab054c579..dc0def03e5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/NotSupportedFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/NotSupportedFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/PdfAnnotationFlattenFactory.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/PdfAnnotationFlattenFactory.java index a67c38e4bb..ee225be976 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/PdfAnnotationFlattenFactory.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/PdfAnnotationFlattenFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/RemoveWithoutDrawingFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/RemoveWithoutDrawingFlattener.java index d38f31c07c..bcede84187 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/RemoveWithoutDrawingFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/RemoveWithoutDrawingFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/SquigglyTextMarkupAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/SquigglyTextMarkupAnnotationFlattener.java index 84535f746a..315a98338d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/SquigglyTextMarkupAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/SquigglyTextMarkupAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/StrikeOutTextMarkupAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/StrikeOutTextMarkupAnnotationFlattener.java index 1f5ae3eb00..cb0d1bdbc7 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/StrikeOutTextMarkupAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/StrikeOutTextMarkupAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/UnderlineTextMarkupAnnotationFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/UnderlineTextMarkupAnnotationFlattener.java index b5089c63f2..8e6e5759ce 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/UnderlineTextMarkupAnnotationFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/UnderlineTextMarkupAnnotationFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/WarnFormfieldFlattener.java b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/WarnFormfieldFlattener.java index 06220ca600..6100c92c46 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/WarnFormfieldFlattener.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/annotationsflattening/WarnFormfieldFlattener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/BCP47Validator.java b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/BCP47Validator.java index 9bbf066cc6..066442d283 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/BCP47Validator.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/BCP47Validator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/FontCheckUtil.java b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/FontCheckUtil.java index fa20451ff8..6f98cc596b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/FontCheckUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/FontCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/PdfCheckersUtil.java b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/PdfCheckersUtil.java index 0ef15ff544..a4583bd025 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/PdfCheckersUtil.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/checkers/PdfCheckersUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItem.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItem.java index 9670c5f7cd..e9890c7f43 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItem.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItem.java index d8ec030db5..909cac984f 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItem.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItem.java index deac8d144e..5457ab30ff 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/LocalPathItem.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/LocalPathItem.java index 1050371486..f3333d5864 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/LocalPathItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/LocalPathItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPath.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPath.java index b630d3f6b8..d84f4dd462 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPath.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPath.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItem.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItem.java index 846f24f84b..1ebfc71b43 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItem.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPath.java b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPath.java index 390a5231f5..d5710c9760 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPath.java +++ b/kernel/src/main/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPath.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationChecker.java b/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationChecker.java index 4b32999e41..91826eaa63 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationChecker.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationContext.java index 2fc8add4d8..7d5a453627 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/IValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/Pdf20Checker.java b/kernel/src/main/java/com/itextpdf/kernel/validation/Pdf20Checker.java index c45e7111c4..20226489cf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/Pdf20Checker.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/Pdf20Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationContainer.java b/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationContainer.java index c182f5b6bb..0f9df10351 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationContainer.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationType.java b/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationType.java index f2828c7db6..748b64b237 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationType.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/ValidationType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/AbstractColorValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/AbstractColorValidationContext.java index 2e3f1c41ed..31f3bdc44c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/AbstractColorValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/AbstractColorValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasBmcValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasBmcValidationContext.java index 6370a383a0..3e6ed2c034 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasBmcValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasBmcValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasStackValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasStackValidationContext.java index ed954dbc31..d10cfd7e92 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasStackValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasStackValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasTextAdditionContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasTextAdditionContext.java index 2416a0387d..afeb9047c3 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasTextAdditionContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasTextAdditionContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasWritingContentValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasWritingContentValidationContext.java index 4ad9692af4..239f06d2bb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasWritingContentValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CanvasWritingContentValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CryptoValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CryptoValidationContext.java index c111b56b31..b243e84dc1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/CryptoValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/CryptoValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/DuplicateIdEntryValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/DuplicateIdEntryValidationContext.java index cef5b01dfa..b9f6a4a60b 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/DuplicateIdEntryValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/DuplicateIdEntryValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/ExtendedGStateValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/ExtendedGStateValidationContext.java index 57e206f94c..1679d7755c 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/ExtendedGStateValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/ExtendedGStateValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FillColorValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FillColorValidationContext.java index c773332165..d5eb8cb73e 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FillColorValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FillColorValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontGlyphsGStateValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontGlyphsGStateValidationContext.java index 8dd34639e1..2499eef753 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontGlyphsGStateValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontGlyphsGStateValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontValidationContext.java index 68b8c08a73..86438ca1fe 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/FontValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/IContentStreamValidationParameter.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/IContentStreamValidationParameter.java index e10d987dd4..a36662a4ca 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/IContentStreamValidationParameter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/IContentStreamValidationParameter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/IGraphicStateValidationParameter.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/IGraphicStateValidationParameter.java index cc6ff2c129..2970c31038 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/IGraphicStateValidationParameter.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/IGraphicStateValidationParameter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/InlineImageValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/InlineImageValidationContext.java index c883fa288c..699b69266d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/InlineImageValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/InlineImageValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfAnnotationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfAnnotationContext.java index 5ede9ad908..62a01ebff5 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfAnnotationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfAnnotationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDestinationAdditionContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDestinationAdditionContext.java index 29739b9d16..7ccddadbef 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDestinationAdditionContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDestinationAdditionContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDocumentValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDocumentValidationContext.java index 5c48a2f050..b012daccd6 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDocumentValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfDocumentValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfObjectValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfObjectValidationContext.java index 7ffb7a4454..13495f2ef1 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfObjectValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfObjectValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfPageValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfPageValidationContext.java index 7702758122..ab66072f93 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfPageValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/PdfPageValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/RenderingIntentValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/RenderingIntentValidationContext.java index 85ba4afd32..747f672732 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/RenderingIntentValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/RenderingIntentValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignTypeValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignTypeValidationContext.java index 0d745f987a..515647474a 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignTypeValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignTypeValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignatureValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignatureValidationContext.java index 6e6c379eb5..77adf26b6d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignatureValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/SignatureValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/StrokeColorValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/StrokeColorValidationContext.java index 3499a31c63..161aa68b38 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/StrokeColorValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/StrokeColorValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/TagStructElementValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/TagStructElementValidationContext.java index 0295c493a9..9358ae75cb 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/TagStructElementValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/TagStructElementValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/validation/context/XrefTableValidationContext.java b/kernel/src/main/java/com/itextpdf/kernel/validation/context/XrefTableValidationContext.java index 7d1b8d5c22..fe9ac8aa1d 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/validation/context/XrefTableValidationContext.java +++ b/kernel/src/main/java/com/itextpdf/kernel/validation/context/XrefTableValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/main/java/com/itextpdf/kernel/xmp/PdfConst.java b/kernel/src/main/java/com/itextpdf/kernel/xmp/PdfConst.java index ef350ac461..465081ddcf 100644 --- a/kernel/src/main/java/com/itextpdf/kernel/xmp/PdfConst.java +++ b/kernel/src/main/java/com/itextpdf/kernel/xmp/PdfConst.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigCustomMembers.java b/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigCustomMembers.java index f33cedcf29..a99fd1a5c0 100644 --- a/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigCustomMembers.java +++ b/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigCustomMembers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigMapping.java b/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigMapping.java index 3a80bed663..396181be03 100644 --- a/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigMapping.java +++ b/kernel/src/sharpenconfig/java/com/itextpdf/kernel/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -82,6 +82,9 @@ public void applyMappingConfiguration(MappingConfigurator configurator) { configurator.mapProperty("com.itextpdf.kernel.pdf.canvas.parser.clipper.PolyNode.isOpen", "IsOpen"); configurator.mapProperty("com.itextpdf.kernel.pdf.canvas.parser.clipper.Point.LongPoint.getX", "X"); configurator.mapProperty("com.itextpdf.kernel.pdf.canvas.parser.clipper.Point.LongPoint.getY", "Y"); + configurator.mapProperty("com.itextpdf.kernel.pdf.canvas.parser.clipper.PolyTree.getTotalSize", "Total"); + + configurator.addFullName("com.itextpdf.kernel.geom.Path"); configurator.removeMethodOverload("com.itextpdf.kernel.pdf.PdfWriter.write(int)"); configurator.removeMethodOverload("com.itextpdf.kernel.pdf.PdfWriter.write(byte[])"); @@ -157,6 +160,8 @@ public void applyMappingConfiguration(MappingConfigurator configurator) { configurator.mapMethodParametersOrder("com.itextpdf.kernel.crypto.CryptoUtil.getMessageDigest", "1"); configurator.mapMethodParametersOrder("com.itextpdf.kernel.crypto.CryptoUtil.getMessageDigest(java.lang.String,java.lang.String)", "1"); //BouncyCastleWrappersConfigUtils.applyMappingConfiguration(configurator); + + configurator.addCustomUsingDeclaration("com.itextpdf.kernel.contrast.ContrastAnalyzer", Arrays.asList("Paths = System.Collections.Generic.List>")); } @Override diff --git a/kernel/src/test/java/com/itextpdf/kernel/PdfExceptionTest.java b/kernel/src/test/java/com/itextpdf/kernel/PdfExceptionTest.java index caa484f4f2..1a411a0bd5 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/PdfExceptionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/PdfExceptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ProducerBuilderIntegrationTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ProducerBuilderIntegrationTest.java index c8372c7bf8..e2518b72e3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ProducerBuilderIntegrationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ProducerBuilderIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerAccess.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerAccess.java index 1f36e331d6..70d0a43f99 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerAccess.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerAccess.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerTest.java index c8ed482528..eefb12fd93 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ProductEventHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/ITextTestEvent.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/ITextTestEvent.java index 9c433c003b..42712f4934 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/ITextTestEvent.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/ITextTestEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestConfigurationEvent.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestConfigurationEvent.java index c51ebe66ba..1d8ee4f6a1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestConfigurationEvent.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestConfigurationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestMetaInfo.java b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestMetaInfo.java index 6fa2937b35..3966998463 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestMetaInfo.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/ecosystem/TestMetaInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/events/AddFingerPrintEventTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/events/AddFingerPrintEventTest.java index 40991c7395..9c283b8b90 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/events/AddFingerPrintEventTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/events/AddFingerPrintEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEventTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEventTest.java index b35819137d..a4e52c99ef 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEventTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/events/FlushPdfDocumentEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/events/ITextCoreProductEventTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/events/ITextCoreProductEventTest.java index 2efb89c648..86fae26f45 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/events/ITextCoreProductEventTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/events/ITextCoreProductEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEventTest.java b/kernel/src/test/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEventTest.java index c8d02421ca..d1e8621ff4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEventTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/actions/events/LinkDocumentIdEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/ColorTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/ColorTest.java index 98efeb6631..d7305bc512 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/ColorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/ColorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/DeviceRgbTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/DeviceRgbTest.java index f593f1fbf5..20222210cc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/DeviceRgbTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/DeviceRgbTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/WebColorsTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/WebColorsTest.java index bd4233f02a..dd970b2e79 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/WebColorsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/WebColorsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/GradientColorStopTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/GradientColorStopTest.java index ab839a8c43..ca1fa9c258 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/GradientColorStopTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/GradientColorStopTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilderTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilderTest.java index 0b815a1124..b8b0e6f99c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilderTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/LinearGradientBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilderTest.java b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilderTest.java index af3f9b07f5..dff244be5f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilderTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/colors/gradients/StrategyBasedLinearGradientBuilderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCalculatorTest.java b/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCalculatorTest.java new file mode 100644 index 0000000000..c8234bd3e9 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCalculatorTest.java @@ -0,0 +1,73 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.DeviceRgb; +import com.itextpdf.test.ExtendedITextTest; + +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.*; + +@Tag("UnitTest") +public class ColorContrastCalculatorTest extends ExtendedITextTest { + + public static Object[][] colors() { + // As per https://webaim.org/resources/contrastchecker/ + return new Object[][] { + {new DeviceRgb(0, 0, 0), new DeviceRgb(255, 255, 255), 21.0}, + {new DeviceRgb(255, 0, 0), new DeviceRgb(0, 0, 255), 2.15}, + {new DeviceRgb(255, 255, 0), new DeviceRgb(0, 0, 255), 8}, + {new DeviceRgb(128, 128, 128), new DeviceRgb(0, 0, 255), 2.17}, + {new DeviceRgb(128, 128, 128), new DeviceRgb(192, 192, 192), 2.17}, + {new DeviceRgb(0, 128, 0), new DeviceRgb(255, 255, 255), 5.13}, + {new DeviceRgb(255, 165, 0), new DeviceRgb(0, 0, 0), 10.63}, + }; + } + + @ParameterizedTest(name = "Contrast between RGB({0}) and RGB({1}) should be {2}") + @MethodSource("colors") + public void calculateContrastShouldBeTheSameAsWebAimContrastTool(DeviceRgb color1, DeviceRgb color2, + double expectedContrast) { + double calculatedContrast = ColorContrastCalculator.contrastRatio(color1, color2); + assertEquals(expectedContrast, calculatedContrast, 0.01); + } + + @Test + public void contrastColor1NullShouldThrowException() { + DeviceRgb color2 = new DeviceRgb(255, 255, 255); + assertThrows(IllegalArgumentException.class, () -> { + ColorContrastCalculator.contrastRatio(null, color2); + }); + } + + @Test + public void contrastColor2NullShouldThrowException() { + DeviceRgb color1 = new DeviceRgb(0, 0, 0); + assertThrows(IllegalArgumentException.class, () -> { + ColorContrastCalculator.contrastRatio(color1, null); + }); + } +} \ No newline at end of file diff --git a/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCheckerTest.java b/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCheckerTest.java new file mode 100644 index 0000000000..1e09869713 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/contrast/ColorContrastCheckerTest.java @@ -0,0 +1,695 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.ColorConstants; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.kernel.validation.IValidationContext; +import com.itextpdf.kernel.validation.ValidationContainer; +import com.itextpdf.kernel.validation.ValidationType; +import com.itextpdf.kernel.validation.context.PdfPageValidationContext; +import com.itextpdf.test.AssertUtil; +import com.itextpdf.test.ExtendedITextTest; +import com.itextpdf.test.LogLevelConstants; +import com.itextpdf.test.annotations.LogMessage; +import com.itextpdf.test.annotations.LogMessages; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +@Tag("IntegrationTest") +public class ColorContrastCheckerTest extends ExtendedITextTest { + + @Test + public void testSetMinimalPercentualCoverageValid() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + AssertUtil.doesNotThrow(() -> { + checker.setMinimalPercentualCoverage(0.5); + }); + } + + @Test + public void testSetMinimalPercentualCoverageZero() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + AssertUtil.doesNotThrow(() -> { + checker.setMinimalPercentualCoverage(0.0); + }); + } + + @Test + public void testSetMinimalPercentualCoverageOne() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + AssertUtil.doesNotThrow(() -> { + checker.setMinimalPercentualCoverage(1.0); + }); + } + + @Test + public void testSetMinimalPercentualCoverageNegative() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + Exception exception = assertThrows(IllegalArgumentException.class, + () -> checker.setMinimalPercentualCoverage(-0.1)); + assertEquals("Minimal percentual coverage must be a value between 0.0 and 1.0", exception.getMessage()); + } + + @Test + public void testSetMinimalPercentualCoverageGreaterThanOne() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + Exception exception = assertThrows(IllegalArgumentException.class, + () -> checker.setMinimalPercentualCoverage(1.1)); + assertEquals("Minimal percentual coverage must be a value between 0.0 and 1.0", exception.getMessage()); + } + + @Test + public void testSetCheckWcagAATrue() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + ColorContrastChecker result = checker.setCheckWcagAA(true); + assertSame(checker, result); + } + + @Test + public void testSetCheckWcagAAFalse() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + ColorContrastChecker result = checker.setCheckWcagAA(false); + assertSame(checker, result); + } + + @Test + @LogMessages(messages = @LogMessage(messageTemplate = + KernelLogMessageConstant.BOTH_WCAG_AA_AND_AAA_COMPLIANCE_CHECKS_DISABLED, logLevel = + LogLevelConstants.WARN)) + public void testSetCheckWcagAAFalseLogsWarningWhenBothDisabled() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + AssertUtil.doesNotThrow(() -> { + checker.setCheckWcagAAA(false); + checker.setCheckWcagAA(false); + }); + } + + + @Test + @LogMessages(messages = @LogMessage(messageTemplate = + KernelLogMessageConstant.BOTH_WCAG_AA_AND_AAA_COMPLIANCE_CHECKS_DISABLED, logLevel = + LogLevelConstants.WARN)) + public void testSetCheckWcagAAAFalseLogsWarningWhenBothDisabled() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + AssertUtil.doesNotThrow(() -> { + checker.setCheckWcagAAA(false); + checker.setCheckWcagAA(false); + }); + } + + @Test + public void testIsPdfObjectReadyToFlush() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + assertTrue(checker.isPdfObjectReadyToFlush(null)); + } + + @Test + public void testValidateWithNonPdfPageContext() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + IValidationContext context = new IValidationContext() { + @Override + public ValidationType getType() { + return ValidationType.PDF_DOCUMENT; + } + }; + AssertUtil.doesNotThrow(() -> { + checker.validate(context); + }); + } + + @Test + public void testValidateWithCompliantBlackTextOnWhiteBackground() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception - black on white is compliant + AssertUtil.doesNotThrow(() -> { + checker.validate(context); + }); + + pdfDoc.close(); + } + + @Test + public void testValidateWithNonCompliantTextThrowsException() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create low contrast: light gray text on white background + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + Exception exception = assertThrows(PdfException.class, () -> checker.validate(context)); + + assertTrue(exception.getMessage().contains("Color contrast check failed")); + assertTrue(exception.getMessage().contains("Page 1")); + + pdfDoc.close(); + } + + @Test + @LogMessages(messages = @LogMessage(messageTemplate = "Page 1: Text: 'T', ", logLevel = LogLevelConstants.WARN)) + public void testValidateWithNonCompliantTextLogsWarning() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create low contrast: light gray text on white background + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("T"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(true, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should log warning but not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithWcagAAOnlyEnabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + checker.setCheckWcagAAA(false); + checker.setCheckWcagAA(true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithWcagAAAOnlyEnabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + checker.setCheckWcagAA(false); + checker.setCheckWcagAAA(true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + @LogMessages(messages = @LogMessage(messageTemplate = + KernelLogMessageConstant.BOTH_WCAG_AA_AND_AAA_COMPLIANCE_CHECKS_DISABLED, logLevel = + LogLevelConstants.WARN)) + public void testValidateWithBothWcagChecksDisabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create low contrast text + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.CYAN, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, true); + checker.setCheckWcagAA(false); + checker.setCheckWcagAAA(false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception because checks are disabled + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithIndividualGlyphsEnabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("ABC"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(true, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithLargeText() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Large text (20pt) has different WCAG requirements + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 20); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithTextOnColoredBackground() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Draw colored background + PdfCanvas canvas = new PdfCanvas(page); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(50, 50, 200, 100); + canvas.fill(); + + // Draw white text on blue background + canvas.beginText(); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception - white on blue should be compliant + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithMinimalCoverageFiltering() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + checker.setMinimalPercentualCoverage(0.9); // Very high threshold + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testMethodChaining() { + ColorContrastChecker checker = new ColorContrastChecker(false, false); + ColorContrastChecker result = checker + .setCheckWcagAA(true) + .setCheckWcagAAA(false); + + assertSame(checker, result); + } + + @Test + public void testValidateWithTextWithoutParent() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create text without parent context + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("X"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(true, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithAACompliantButNotAAA() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create a scenario where AA passes but AAA fails + // Using gray on white which has ~4.5:1 ratio + PdfCanvas canvas = new PdfCanvas(page); + canvas.setFillColor(ColorConstants.LIGHT_GRAY); + canvas.rectangle(50, 50, 200, 100); + canvas.fill(); + + canvas.beginText(); + canvas.setColor(ColorConstants.BLACK, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 80); + canvas.showText("Test"); + canvas.endText(); + + // Enable only AAA check + ColorContrastChecker checker = new ColorContrastChecker(false, false); + checker.setCheckWcagAA(false); + checker.setCheckWcagAAA(true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception with logging mode + AssertUtil.doesNotThrow(() -> { + checker.validate(context); + }); + + pdfDoc.close(); + } + + @Test + public void testValidateWithMultipleBackgrounds() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Draw multiple overlapping backgrounds + PdfCanvas canvas = new PdfCanvas(page); + + // First background + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(50, 50, 150, 100); + canvas.fill(); + + // Second overlapping background + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(100, 50, 150, 100); + canvas.fill(); + + // Draw text over overlapping area + canvas.beginText(); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(120, 80); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithSmallFontAndLowContrast() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Small font with insufficient contrast + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 8); // Small font + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should throw exception for low contrast with small font + assertThrows(PdfException.class, () -> checker.validate(context)); + + pdfDoc.close(); + } + + @Test + public void testValidateWithLargeFontAndModerateContrast() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Large font (>18pt) has more lenient requirements + PdfCanvas canvas = new PdfCanvas(page); + + // Background + canvas.setFillColor(ColorConstants.LIGHT_GRAY); + canvas.rectangle(50, 50, 200, 100); + canvas.fill(); + + // Large text + canvas.beginText(); + canvas.setColor(ColorConstants.BLACK, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 24); + canvas.moveText(100, 80); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw exception - large text has lower requirements + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateWithZeroCoverageThreshold() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, false); + checker.setMinimalPercentualCoverage(0.0); // Include all backgrounds + PdfPageValidationContext context = new PdfPageValidationContext(page); + + checker.validate(context); + + pdfDoc.close(); + } + + @Test + public void testValidateMessageIncludesParentText() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create low contrast text that will have parent context + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(true, true); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + Exception e = Assertions.assertThrows(PdfException.class, () -> checker.validate(context)); + System.out.println(e.getMessage()); + Assertions.assertTrue(e.getMessage().contains("parent text: 'Test'")); + } + + @Test + public void testValidateAAFailsButAAADisabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create text that fails AA but AAA is disabled + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + ColorContrastChecker checker = new ColorContrastChecker(false, true); + checker.setCheckWcagAAA(false); // Disable AAA + checker.setCheckWcagAA(true); // Enable AA + PdfPageValidationContext context = new PdfPageValidationContext(page); + + Exception exception = assertThrows(PdfException.class, () -> checker.validate(context)); + assertTrue(exception.getMessage().contains("WCAG AA compliant")); + assertFalse(exception.getMessage().contains("WCAG AAA compliant")); + + pdfDoc.close(); + } + + @Test + public void testValidateAAAFailsButAADisabled() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + ValidationContainer container = new ValidationContainer(); + ColorContrastChecker contrastChecker = new ColorContrastChecker(false, true); + contrastChecker.setCheckWcagAA(false); + contrastChecker.setCheckWcagAAA(true); + container.addChecker(contrastChecker); + + pdfDoc.getDiContainer().register(ValidationContainer.class, container); + + PdfPage page = pdfDoc.addNewPage(); + + // Create text that passes AA but fails AAA + PdfCanvas canvas = new PdfCanvas(page); + canvas.setFillColor(ColorConstants.LIGHT_GRAY); + canvas.rectangle(50, 50, 200, 100); + canvas.fill(); + + canvas.beginText(); + canvas.setColor(ColorConstants.CYAN, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 80); + canvas.showText("Test"); + canvas.endText(); + + PdfPageValidationContext context = new PdfPageValidationContext(page); + + Exception exception = assertThrows(PdfException.class, () -> pdfDoc.close()); + assertTrue(exception.getMessage().contains("WCAG AAA compliant")); + assertFalse(exception.getMessage().contains("WCAG AA compliant")); + + } + + @Test + public void testValidateBothAAAndAAAFail() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + ValidationContainer container = new ValidationContainer(); + container.addChecker(new ColorContrastChecker(false, true)); + + pdfDoc.getDiContainer().register(ValidationContainer.class, container); + + PdfPage page = pdfDoc.addNewPage(); + + // Create very low contrast that fails both + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setColor(ColorConstants.LIGHT_GRAY, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + Exception exception = assertThrows(PdfException.class, () -> pdfDoc.close()); + assertTrue(exception.getMessage().contains("WCAG AA compliant")); + assertTrue(exception.getMessage().contains("WCAG AAA compliant")); + + } + + @Test + public void testConstructorSetsDefaultValues() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDoc.addNewPage(); + + // Create compliant text + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(100, 100); + canvas.showText("Test"); + canvas.endText(); + + // Constructor should set both WCAG checks to true by default + ColorContrastChecker checker = new ColorContrastChecker(false, false); + PdfPageValidationContext context = new PdfPageValidationContext(page); + + // Should not throw - defaults allow compliant text + checker.validate(context); + + pdfDoc.close(); + } +} \ No newline at end of file diff --git a/kernel/src/test/java/com/itextpdf/kernel/contrast/ContrastAnalyzerTest.java b/kernel/src/test/java/com/itextpdf/kernel/contrast/ContrastAnalyzerTest.java new file mode 100644 index 0000000000..b178f81978 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/contrast/ContrastAnalyzerTest.java @@ -0,0 +1,500 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.kernel.colors.ColorConstants; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfWriter; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.kernel.pdf.layer.PdfLayer; +import com.itextpdf.test.ExtendedITextTest; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + + +@Tag("IntegrationTest") +public class ContrastAnalyzerTest extends ExtendedITextTest { + + + @Test + public void blackTextOnNoBackGround() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.moveTo(250, 250); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.showText("Test"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + assertEquals(4, results.size()); + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + dummyDoc.close(); + } + + @Test + public void whiteTextOnNoBackGround() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.showText("Test"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(4, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(1, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + + @Test + public void whiteLetterOnBlackBackGroundWhereBackgroundCompletlyCovers() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.rectangle(30, 30, page.getPageSize().getWidth() / 2, page.getPageSize().getHeight() / 2); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + @Test + public void whiteTextOnBlackBackGroundWhereBackgroundCompletlyCovers() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.rectangle(30, 30, page.getPageSize().getWidth() / 2, page.getPageSize().getHeight() / 2); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.showText("AT"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(2, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + + @Test + public void whiteLetterBlackBackGroundWhereBackgroundHalfCovers() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.rectangle(260, 250, 200, 200); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(2, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + assertEquals(1, result.getOverlappingAreas().get(1).getContrastRatio(), 0.1); + } + + } + + @Test + public void blackLetterNoFillCovers() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + canvas.rectangle(100, 100, 500, 500).clip().endPath(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21.0, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + @Test + public void textDrawnOutsideOfPageShouldNotBeAnalyzed() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.beginText(); + canvas.moveText(-100, -100); // Position text outside the page + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + // No text should be analyzed as it's outside the page + assertEquals(0, results.size()); + } + + @Test + @Disabled("DEVSIX-9718: Clipping path handling needs to be improved in the ContrastAnalyzer") + public void clipTextShouldNotShowUp() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + // Text positioning + float x = 50; + float y = 700; + + canvas.saveState(); + canvas.rectangle(50, 690, 200, 60); // clip width cuts text + canvas.clip(); + canvas.endPath(); + + canvas.beginText(); + + canvas.setFontAndSize(PdfFontFactory.createFont(), 48); + canvas.moveText(x, y); + canvas.showText("1234567890"); + canvas.endText(); + + canvas.restoreState(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + //8 characters should be fully or partially visible + // 9 and 0 should be clipped out + assertEquals(8, results.size()); + + for (ContrastResult result : results) { + //will need to change this as for 8 it's partially visible + //so there will be 2 contrast ratios + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21.0, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + + @Test + public void whiteLetterBlackBackGroundWhereBacgroundDoesNotIntersect() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.rectangle(20, 25, 90, 90); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.GREEN, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(1.37, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + + } + + @Test + public void whiteLetter2BackgroundTogetherOverlapSoDefaultBackgroundShouldBeIgnored() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.rectangle(260, 250, 200, 200); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + + canvas.rectangle(200, 250, 60, 100); + canvas.setColor(ColorConstants.ORANGE, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 270); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(2, result.getOverlappingAreas().size()); + assertEquals(1.553, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + assertEquals(21, result.getOverlappingAreas().get(1).getContrastRatio(), 0.1); + } + } + + @Test + public void whiteTextOnOrangegroundWithLayerOn() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + // Create a layer that is initially ON + PdfLayer layer = new PdfLayer("Background Layer", dummyDoc); + layer.setOn(true); + + PdfCanvas canvas = new PdfCanvas(page); + + // Draw black rectangle background inside the layer + canvas.beginLayer(layer); + canvas.rectangle(30, 30, page.getPageSize().getWidth() / 2, page.getPageSize().getHeight() / 2); + canvas.setColor(ColorConstants.ORANGE, true); + canvas.fill(); + canvas.endLayer(); + + // Draw white text on top (outside the layer) + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("Test"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + // When layer is ON, the black background should be visible + assertEquals(4, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(1.5539, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + @Test + public void whiteTextOnOrangeBackGroundWithLayerOff() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + // Create a layer that is initially OFF + PdfLayer layer = new PdfLayer("Background Layer", dummyDoc); + layer.setOn(false); + + PdfCanvas canvas = new PdfCanvas(page); + + // Draw black rectangle background inside the layer + canvas.beginLayer(layer); + canvas.rectangle(30, 30, page.getPageSize().getWidth() / 2, page.getPageSize().getHeight() / 2); + canvas.setColor(ColorConstants.ORANGE, true); + canvas.fill(); + canvas.endLayer(); + + // Draw white text on top (outside the layer) + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("Test"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + // When layer is OFF, the black background should still be analyzed + // because PdfCanvasProcessor processes all content regardless of layer state + // The layer state only affects viewer display, not the content structure + assertEquals(4, results.size()); + + for (ContrastResult result : results) { + // The analyzer should still detect the black background even if layer is off + // because it analyzes the actual PDF content stream + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(1, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + @Test + public void whiteLetterBlackBackgroundCircle() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.circle(300, 300, 100); + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + + @Test + public void whiteLetterBlackBackgroundTriangle() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.moveTo(200, 200); + canvas.lineTo(400, 200); + canvas.lineTo(300, 400); + canvas.closePath(); + + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(1, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + } + } + + @Test + public void whiteLetterBlackBackgroundTriangleHalfIntersects() throws IOException { + PdfDocument dummyDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = dummyDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.moveTo(240, 200); + canvas.lineTo(400, 200); + canvas.lineTo(300, 400); + canvas.closePath(); + + canvas.setColor(ColorConstants.BLACK, true); + canvas.fill(); + canvas.beginText(); + canvas.moveText(250, 250); + canvas.setColor(ColorConstants.WHITE, true); + canvas.setFontAndSize(PdfFontFactory.createFont(), 32); + canvas.showText("T"); + canvas.endText(); + + List results = new ContrastAnalyzer(true).checkPageContrast(page); + dummyDoc.close(); + + assertEquals(1, results.size()); + + for (ContrastResult result : results) { + assertEquals(2, result.getOverlappingAreas().size()); + assertEquals(21, result.getOverlappingAreas().get(0).getContrastRatio(), 0.1); + assertEquals(1, result.getOverlappingAreas().get(1).getContrastRatio(), 0.1); + } + } +} \ No newline at end of file diff --git a/kernel/src/test/java/com/itextpdf/kernel/contrast/WCagCheckerTest.java b/kernel/src/test/java/com/itextpdf/kernel/contrast/WCagCheckerTest.java new file mode 100644 index 0000000000..c4cfaf6a31 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/contrast/WCagCheckerTest.java @@ -0,0 +1,87 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.contrast; + +import com.itextpdf.test.ExtendedITextTest; + +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import static org.junit.jupiter.api.Assertions.*; + +@Tag("UnitTest") +public class WCagCheckerTest extends ExtendedITextTest { + + + public static Object[][] wcagAAATestData() { + return new Object[][] { + // Normal text (<18pt) + {12.0, 7.0, true}, // exact minimum + {12.0, 6.99, false}, // just below minimum + {16.0, 8.0, true}, + {16.0, 4.5, false}, + + // Large text (>=18.66pt is our threshold for large text) + {18.66, 4.5, true}, // exact minimum + {18.66, 4.49, false}, + {24.0, 5.0, true}, + {24.0, 3.0, false} + }; + } + + + public static Object[][] wcagAATestData() { + return new Object[][] { + // Normal text (<18pt) + {12.0, 4.5, true}, // exact minimum + {12.0, 4.49, false}, + {16.0, 5.0, true}, + {16.0, 3.0, false}, + + // Large text (>=18.66pt is our threshold for large text) + {18.66, 3.0, true}, // exact minimum + {18.66, 2.99, false}, + {24.0, 4.5, true}, + {24.0, 2.0, false} + }; + } + + @ParameterizedTest(name = "AAA: fontSize={0}pt, contrast={1} should be {2}") + @MethodSource("wcagAAATestData") + public void testWCAGAAACompliance(double fontSize, double contrastRatio, boolean expectedCompliant) { + boolean result = WCagChecker.isTextWcagAAACompliant(fontSize, contrastRatio); + assertEquals(expectedCompliant, result, + String.format("Font size %.2fpt with contrast %.2f should %s WCAG AAA", + fontSize, contrastRatio, expectedCompliant ? "pass" : "fail")); + } + + @ParameterizedTest(name = "AA: fontSize={0}pt, contrast={1} should be {2}") + @MethodSource("wcagAATestData") + public void testWCAGAACompliance(double fontSize, double contrastRatio, boolean expectedCompliant) { + boolean result = WCagChecker.isTextWcagAACompliant(fontSize, contrastRatio); + assertEquals(expectedCompliant, result, + String.format("Font size %.2fpt with contrast %.2f should %s WCAG AA", + fontSize, contrastRatio, expectedCompliant ? "pass" : "fail")); + } +} + diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/CryptoUtilTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/CryptoUtilTest.java index 5f91fecc92..ffbdc69632 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/CryptoUtilTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/CryptoUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/EncryptionInApprovedModeTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/EncryptionInApprovedModeTest.java index bb635bdaf8..d0fc194fbf 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/EncryptionInApprovedModeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/EncryptionInApprovedModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfDecryptingTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfDecryptingTest.java index 4938576aa9..7eedc2e60d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfDecryptingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfDecryptingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptingTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptingTest.java index b2cb10b57c..7339dd243f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptionManuallyPortedTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptionManuallyPortedTest.java index 028c5ffd88..685f976f12 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptionManuallyPortedTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfEncryptionManuallyPortedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfReaderCustomFilterTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfReaderCustomFilterTest.java index 44b7b38fb6..2a41c603f4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfReaderCustomFilterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/PdfReaderCustomFilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/UnencryptedWrapperTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/UnencryptedWrapperTest.java index ff8dc76478..34df3c7c3c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/UnencryptedWrapperTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/UnencryptedWrapperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTest.java index ff62974df6..a928565c61 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.java index ea5dd9f70f..6805162c29 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfEncryptionTestUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfPreserveEncryptionTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfPreserveEncryptionTest.java index 9e2d802220..ec3a252ff4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfPreserveEncryptionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/PdfPreserveEncryptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.java index d9d5ffea41..8e7df599c8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/pdfencryption/UnicodeBasedPasswordEncryptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtilsTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtilsTest.java index b8ef9161cf..36a082c3ae 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtilsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/EncryptionUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -37,4 +37,4 @@ public void fetchEnvelopedDataThrows() { Assertions.assertThrows(Exception.class, () -> EncryptionUtils.fetchEnvelopedData(null, null, null, null, null)); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandlerTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandlerTest.java index ee605ef02c..4716304d8d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandlerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubKeySecurityHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.java index 9ebcdb24de..378d4624ae 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/PubSecHandlerUsingAesGcmTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.java b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.java index cb232e787c..f6193f4106 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/crypto/securityhandler/StandardHandlerUsingAesGcmTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/FontUtilTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/FontUtilTest.java index 90fb2c75e1..f2d52c7ce8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/FontUtilTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/FontUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontFactoryTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontFactoryTest.java index 39e2f8e588..37e1a78db7 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontFactoryTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,15 +22,15 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.font; +import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.io.font.FontNames; import com.itextpdf.io.font.FontProgramFactory; import com.itextpdf.io.font.PdfEncodings; import com.itextpdf.io.font.TrueTypeFont; import com.itextpdf.io.font.Type1Font; import com.itextpdf.io.font.constants.StandardFonts; -import com.itextpdf.commons.utils.MessageFormatUtil; -import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant; +import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.font.PdfFontFactory.EmbeddingStrategy; import com.itextpdf.kernel.pdf.PdfDictionary; import com.itextpdf.kernel.pdf.PdfDocument; @@ -38,14 +38,11 @@ This file is part of the iText (R) project. import java.io.IOException; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("UnitTest") public class PdfFontFactoryTest extends ExtendedITextTest { - - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/font/"; - @Test public void standardFontForceEmbeddedTest() throws IOException { Type1Font fontProgram = (Type1Font) FontProgramFactory.createFont(StandardFonts.HELVETICA); diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontUnitTest.java index 63266ba2dc..1a5adbbc37 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfFontUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfSimpleFontTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfSimpleFontTest.java index 1ce1db84b5..47d9807361 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfSimpleFontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfSimpleFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -267,7 +267,7 @@ public void writeTextGlyphLineWithEmptyEncodingTest() throws IOException { private static class TestSimpleFont extends PdfSimpleFont { public TestSimpleFont(FontEncoding fontEncoding) throws IOException { - this.fontEncoding = fontEncoding; + setFontEncoding(fontEncoding); setFontProgram(FontProgramFactory.createFont(StandardFonts.HELVETICA)); } diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfTrueTypeFontTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfTrueTypeFontTest.java index ce084c7714..d81a28420d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfTrueTypeFontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfTrueTypeFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,13 +32,13 @@ This file is part of the iText (R) project. import java.io.IOException; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("UnitTest") public class PdfTrueTypeFontTest extends ExtendedITextTest { - - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/"; @Test public void testReadingPdfTrueTypeFontWithType1StandardFontProgram() throws IOException { @@ -64,7 +64,7 @@ public void isBuiltInTest() { @Test public void isNotBuiltInTest() throws IOException { PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "NotoSans-Regular.ttf", + FONTS_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.WINANSI); Assertions.assertTrue(font instanceof PdfTrueTypeFont); Assertions.assertFalse(((PdfTrueTypeFont) font).isBuiltInFont()); diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfType0FontTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfType0FontTest.java index d6a53d4911..22329be51c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfType0FontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfType0FontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -29,27 +29,29 @@ This file is part of the iText (R) project. import com.itextpdf.io.font.otf.GlyphLine; import com.itextpdf.kernel.exceptions.KernelExceptionMessageConstant; import com.itextpdf.kernel.exceptions.PdfException; -import com.itextpdf.kernel.pdf.*; +import com.itextpdf.kernel.pdf.PdfArray; +import com.itextpdf.kernel.pdf.PdfDictionary; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfName; +import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.test.ExtendedITextTest; -import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("UnitTest") public class PdfType0FontTest extends ExtendedITextTest { - - public static final String DESTINATION_FOLDER = "./target/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/"; - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; @Test public void trueTypeFontAndCmapConstructorTest() throws IOException { - TrueTypeFont ttf = new TrueTypeFont(SOURCE_FOLDER + "NotoSerif-Regular_v1.7.ttf"); + TrueTypeFont ttf = new TrueTypeFont(FONTS_FOLDER + "NotoSerif-Regular_v1.7.ttf"); PdfType0Font type0Font = new PdfType0Font(ttf, PdfEncodings.IDENTITY_H); @@ -67,7 +69,7 @@ public void trueTypeFontAndCmapConstructorTest() throws IOException { @Test public void unsupportedCmapTest() throws IOException { - TrueTypeFont ttf = new TrueTypeFont(SOURCE_FOLDER + "NotoSerif-Regular_v1.7.ttf"); + TrueTypeFont ttf = new TrueTypeFont(FONTS_FOLDER + "NotoSerif-Regular_v1.7.ttf"); Exception e = Assertions.assertThrows(PdfException.class, () -> new PdfType0Font(ttf, PdfEncodings.WINANSI) @@ -103,7 +105,7 @@ public void appendThreeSurrogatePairsTest() throws IOException { // this text contains three successive surrogate pairs, which should result in three glyphs String textWithThreeSurrogatePairs = "\uD800\uDF10\uD800\uDF00\uD800\uDF11"; PdfFont type0Font = - PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSansOldItalic-Regular.ttf", PdfEncodings.IDENTITY_H); + PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansOldItalic-Regular.ttf", PdfEncodings.IDENTITY_H); List glyphs = new ArrayList<>(); type0Font.appendGlyphs(textWithThreeSurrogatePairs, 0, textWithThreeSurrogatePairs.length() - 1, glyphs); diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/PdfType3FontTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/PdfType3FontTest.java index 5b526570f6..4af233cc0f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/PdfType3FontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/PdfType3FontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/Type3FontTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/Type3FontTest.java index 6acb77eb97..121c9ddde2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/Type3FontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/Type3FontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/font/Type3GlyphUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/font/Type3GlyphUnitTest.java index 0b69e24ebb..d519dc20ad 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/font/Type3GlyphUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/font/Type3GlyphUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/AffineTransformTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/AffineTransformTest.java index acf3d4b3af..b04e638351 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/AffineTransformTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/AffineTransformTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -383,4 +383,13 @@ public void inverseTransformFloatArrayTest() throws NoninvertibleTransformExcept Assertions.assertArrayEquals(expected, dest, 0); } + + @Test + public void getMatrixNoArgumentTest() { + float[] expected = new float[]{0f, 1f, 2f, 3f, 4f, 5f}; + AffineTransform affineTransform = new AffineTransform(expected); + float[] result = affineTransform.getMatrix(); + + Assertions.assertArrayEquals(expected, result, 0); + } } diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/BezierCurveTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/BezierCurveTest.java index 747331d699..584c4569f1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/BezierCurveTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/BezierCurveTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/LineSegmentTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/LineSegmentTest.java index 906d873d02..eb41173b79 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/LineSegmentTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/LineSegmentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/MatrixTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/MatrixTest.java index 2bec91fe70..6c46fdcb5e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/MatrixTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/MatrixTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeTest.java index 2257ad4253..82dceac6e9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeUnitTest.java index abcd6de99a..5ae86dd267 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/PageSizeUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/PointTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/PointTest.java index e330209e5b..0268926af3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/PointTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/PointTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/RectangleTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/RectangleTest.java index 3236d590c3..a8b0bf49a2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/RectangleTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/RectangleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/ShapeTransformUtilTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/ShapeTransformUtilTest.java index 122280120c..03fa2513c9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/ShapeTransformUtilTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/ShapeTransformUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/geom/VectorTest.java b/kernel/src/test/java/com/itextpdf/kernel/geom/VectorTest.java index bfc7340445..a8a93e5f9c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/geom/VectorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/geom/VectorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorCreationTest.java b/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorCreationTest.java index 6530552807..cd8d57800c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorCreationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorCreationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.java b/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.java index 0b7c805a35..eecb1f1c83 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/mac/MacIntegrityProtectorReadingAndRewritingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/numbering/ArmenianNumberingTest.java b/kernel/src/test/java/com/itextpdf/kernel/numbering/ArmenianNumberingTest.java index 029bfd817d..c0c5240f7c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/numbering/ArmenianNumberingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/numbering/ArmenianNumberingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/numbering/GeorgianNumberingTest.java b/kernel/src/test/java/com/itextpdf/kernel/numbering/GeorgianNumberingTest.java index fe8b2f7848..25ac1efdee 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/numbering/GeorgianNumberingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/numbering/GeorgianNumberingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/numbering/GreekAlphabetNumberingTest.java b/kernel/src/test/java/com/itextpdf/kernel/numbering/GreekAlphabetNumberingTest.java index 569bb41e66..2b729a663e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/numbering/GreekAlphabetNumberingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/numbering/GreekAlphabetNumberingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/numbering/RomanNumberingTest.java b/kernel/src/test/java/com/itextpdf/kernel/numbering/RomanNumberingTest.java index 0eb272834c..10dfc0e0c3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/numbering/RomanNumberingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/numbering/RomanNumberingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/CompressionStrategyTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/CompressionStrategyTest.java new file mode 100644 index 0000000000..f1b68040df --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/CompressionStrategyTest.java @@ -0,0 +1,294 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.pdf; + +import com.itextpdf.commons.utils.SystemUtil; +import com.itextpdf.io.source.ByteArrayOutputStream; +import com.itextpdf.io.source.IFinishable; +import com.itextpdf.kernel.font.PdfFontFactory; +import com.itextpdf.kernel.pdf.canvas.PdfCanvas; +import com.itextpdf.test.ExtendedITextTest; +import com.itextpdf.test.TestUtil; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +@Tag("IntegrationTest") +public class CompressionStrategyTest extends ExtendedITextTest { + + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/"; + + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/CompressionStrategyTest/"; + + @BeforeAll + public static void beforeClass() { + createDestinationFolder(DESTINATION_FOLDER); + } + + private static final String testString = "Some test string for testing compression strategy should be big enough"; + + private static final byte[] TEST_CONTENT_STREAM_DATA = ("q\n" + + "0 0 0 RG\n" + + "10 w\n" + + "1 j\n" + + "2 J\n" + + "100 100 m\n" + + "300 100 l\n" + + "200 300 l\n" + + "s\n" + + "1 0 0 RG\n" + + "200 50 m\n" + + "200 350 l\n" + + "S\n" + + "Q\n" + ).getBytes(StandardCharsets.US_ASCII); + + public static Iterable compressionStrategiesArguments() { + return Arrays.asList( + new Object[]{ + new ASCII85CompressionStrategy(), + "ASCII85" + }, + new Object[]{ + new ASCIIHexCompressionStrategy(), + "ASCIIHex" + }, + new Object[]{ + new RunLengthCompressionStrategy(), + "RunLength" + } + ); + } + + public static Iterable twoCompressionStrategies() { + return Arrays.asList( + new Object[]{ + new RunLengthCompressionStrategy(), + new ASCII85CompressionStrategy(), + "Run length on ASCII85" + }, + new Object[]{ + new ASCII85CompressionStrategy(), + new ASCIIHexCompressionStrategy(), + "ASCII85 on ASCIIHex" + }, + new Object[]{ + new ASCIIHexCompressionStrategy(), + new RunLengthCompressionStrategy(), + "ASCIIHex on RunLength" + } + ); + } + + @Test + public void ascii85DecodeTest() throws IOException { + doStrategyTest(new ASCII85CompressionStrategy()); + } + + @Test + public void asciiHexDecodeTest() throws IOException { + doStrategyTest(new ASCIIHexCompressionStrategy()); + } + + @Test + public void flateDecodeTest() throws IOException { + doStrategyTest(new FlateCompressionStrategy()); + } + + @Test + public void runLengthDecodeTest() throws IOException { + doStrategyTest(new RunLengthCompressionStrategy()); + } + + @ParameterizedTest(name = "{1}") + @MethodSource("compressionStrategiesArguments") + public void addStreamCompressionStampingModeTest(IStreamCompressionStrategy strategy, String compressionName) throws IOException { + String resultPath = DESTINATION_FOLDER + "stamped" + compressionName + "Streams.pdf"; + StampingProperties props = new StampingProperties(); + props.registerDependency(IStreamCompressionStrategy.class, strategy); + int streamCount = 3; + try (PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + compressionName + "ContentStream.pdf"), + new PdfWriter(resultPath), props)) { + PdfPage page = pdfDoc.addNewPage(); + + + PdfStream stream = new PdfStream(testString.getBytes(StandardCharsets.UTF_8), CompressionConstants.BEST_COMPRESSION); + stream.makeIndirect(pdfDoc); + PdfArray contents = new PdfArray(); + contents.add(page.getPdfObject().get(PdfName.Contents)); + + for (int i = 0; i < streamCount; i++) { + contents.add(stream.getIndirectReference()); + } + page.getPdfObject().put(PdfName.Contents, contents); + } + + try (PdfDocument pdfDoc = new PdfDocument(new PdfReader(resultPath), props)) { + PdfPage page = pdfDoc.getPage(2); + Assertions.assertEquals(streamCount + 1, page.getContentStreamCount()); + + for (int i = 1; i < page.getContentStreamCount(); i++) { + PdfObject filterObject = page.getContentStream(i).get(PdfName.Filter); + Assertions.assertEquals(strategy.getFilterName(), filterObject); + Assertions.assertArrayEquals(page.getContentStream(i).getBytes(), + testString.getBytes(StandardCharsets.UTF_8)); + } + } + } + + + @ParameterizedTest(name = "{2}") + @MethodSource("twoCompressionStrategies") + public void twoFiltersInSingleStreamTest(IStreamCompressionStrategy firstStrategy, IStreamCompressionStrategy secondStrategy, String testName) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + StampingProperties props = new StampingProperties(); + props.registerDependency(IStreamCompressionStrategy.class, firstStrategy); + + try (PdfDocument pdfDoc = new PdfDocument( + new PdfWriter(baos), props)) { + PdfPage page = pdfDoc.addNewPage(); + + PdfCanvas canvas = new PdfCanvas(page); + canvas.beginText(); + canvas.setFontAndSize(PdfFontFactory.createFont(), 12); + canvas.moveText(50, 700); + canvas.showText(testString); + canvas.endText(); + canvas.release(); + + PdfStream contentStream = page.getContentStream(0); + contentStream.setCompressionLevel(CompressionConstants.DEFAULT_COMPRESSION); + + ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); + OutputStream zip = secondStrategy.createNewOutputStream(byteArrayStream, contentStream); + ((ByteArrayOutputStream) contentStream.getOutputStream().getOutputStream()).writeTo(zip); + ((IFinishable) zip).finish(); + + contentStream.setData(byteArrayStream.toByteArray()); + PdfArray filters = new PdfArray(); + filters.add(secondStrategy.getFilterName()); + contentStream.put(PdfName.Filter, filters); + } + + try (PdfDocument readDoc = new PdfDocument( + new PdfReader(new ByteArrayInputStream(baos.toByteArray())))) { + + PdfStream stream = readDoc.getFirstPage().getContentStream(0); + + PdfArray filters = stream.getAsArray(PdfName.Filter); + Assertions.assertEquals(firstStrategy.getFilterName(), filters.getAsName(0)); + Assertions.assertEquals(secondStrategy.getFilterName(), filters.getAsName(1)); + + byte[] decoded = stream.getBytes(); + + String decodedText = new String(decoded, StandardCharsets.UTF_8); + Assertions.assertTrue(decodedText.contains(testString)); + } + + } + + private static void doStrategyTest(IStreamCompressionStrategy strategy) throws IOException { + long writePlainTime = SystemUtil.currentTimeMillis(); + ByteArrayOutputStream plainPdfBytes = new ByteArrayOutputStream(); + writeTestDocument(plainPdfBytes, null, CompressionConstants.NO_COMPRESSION); + byte[] bytes = plainPdfBytes.toByteArray(); + long plainSize = bytes.length; + writePlainTime = SystemUtil.currentTimeMillis() - writePlainTime; + System.out.println( + "Generated PDF size without compression: " + + plainSize + " bytes in " + writePlainTime + "ms" + ); + + long writeCompressedTime = SystemUtil.currentTimeMillis(); + ByteArrayOutputStream compressedPdfBytes = new ByteArrayOutputStream(); + writeTestDocument(compressedPdfBytes, strategy, CompressionConstants.DEFAULT_COMPRESSION); + byte[] compressedBytes = compressedPdfBytes.toByteArray(); + long compressedSize = compressedBytes.length; + writeCompressedTime = SystemUtil.currentTimeMillis() - writeCompressedTime; + System.out.println( + "Generated PDF with `" + strategy.getFilterName() + "` compression: " + + compressedSize + " bytes in " + writeCompressedTime + "ms" + ); + + System.out.println("Compression ratio: " + ((double) compressedSize / plainSize)); + + PdfDocument plainDoc = new PdfDocument(new PdfReader(new ByteArrayInputStream(compressedBytes))); + PdfDocument compressedDoc = new PdfDocument(new PdfReader(new ByteArrayInputStream(bytes))); + + int numberOfPdfObjects = plainDoc.getNumberOfPdfObjects(); + Assertions.assertEquals( + numberOfPdfObjects, compressedDoc.getNumberOfPdfObjects(), + "Number of PDF objects should be the same in both documents" + ); + + for (int objNum = 1; objNum <= numberOfPdfObjects; ++objNum) { + PdfObject plainObj = plainDoc.getPdfObject(objNum); + PdfObject compressedObj = compressedDoc.getPdfObject(objNum); + Assertions.assertEquals( + getType(plainObj), getType(compressedObj), + "PDF object type should be identical for object number " + objNum + ); + if ((plainObj instanceof PdfStream) && (compressedObj instanceof PdfStream)) { + byte[] plainStreamBytes = ((PdfStream) plainObj).getBytes(); + byte[] compressedStreamBytes = ((PdfStream) compressedObj).getBytes(); + Assertions.assertArrayEquals( + plainStreamBytes, compressedStreamBytes, + "PDF stream bytes should be identical for object number " + objNum + ); + } + } + } + + private static void writeTestDocument( + ByteArrayOutputStream os, + IStreamCompressionStrategy strategy, + int compressionLevel + ) { + DocumentProperties docProps = new DocumentProperties(); + if (strategy != null) { + docProps.registerDependency(IStreamCompressionStrategy.class, strategy); + } + WriterProperties writerProps = new WriterProperties() + .setCompressionLevel(compressionLevel); + try (PdfDocument doc = new PdfDocument(new PdfWriter(os, writerProps), docProps)) { + PdfPage page = doc.addNewPage(); + page.getFirstContentStream().setData(TEST_CONTENT_STREAM_DATA); + } + } + + private static byte getType(PdfObject obj) { + if (obj == null) { + return (byte) 0; + } + return obj.getType(); + } +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/DocumentPropertiesUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/DocumentPropertiesUnitTest.java index 8e0ce539b8..45f506e801 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/DocumentPropertiesUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/DocumentPropertiesUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/EncodingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/EncodingTest.java index 32bf440f11..a608ba3b00 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/EncodingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/EncodingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -42,26 +42,27 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class EncodingTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/"; - public static final String outputFolder = TestUtil.getOutputPath() + "/kernel/pdf/EncodingTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/EncodingTest/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(outputFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(outputFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } @Test public void surrogatePairTest() throws IOException, InterruptedException { String fileName = "surrogatePairTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "DejaVuSans.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "DejaVuSans.ttf", PdfEncodings.IDENTITY_H); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. saveState(). @@ -75,16 +76,17 @@ public void surrogatePairTest() throws IOException, InterruptedException { canvas.release(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void customSimpleEncodingTimesRomanTest() throws IOException, InterruptedException { String fileName = "customSimpleEncodingTimesRomanTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", "# simple 1 0020 041c 0456 0440 044a 0050 0065 0061 0063", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); @@ -99,13 +101,14 @@ public void customSimpleEncodingTimesRomanTest() throws IOException, Interrupted restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void customFullEncodingTimesRomanTest() throws IOException, InterruptedException { String fileName = "customFullEncodingTimesRomanTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); PdfFont font = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN, @@ -121,13 +124,14 @@ public void customFullEncodingTimesRomanTest() throws IOException, InterruptedEx restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void notdefInStandardFontTest() throws IOException, InterruptedException { String fileName = "notdefInStandardFontTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); PdfFont font = PdfFontFactory.createFont(StandardFonts.HELVETICA, @@ -155,15 +159,16 @@ public void notdefInStandardFontTest() throws IOException, InterruptedException doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void notdefInTrueTypeFontTest() throws IOException, InterruptedException { String fileName = "notdefInTrueTypeFontTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", "# simple 32 0020 00C5 1987", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. @@ -174,7 +179,7 @@ public void notdefInTrueTypeFontTest() throws IOException, InterruptedException showText("\u00C5 \u1987"). endText(). restoreState(); - font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.PREFER_EMBEDDED); canvas. saveState(). @@ -187,16 +192,17 @@ public void notdefInTrueTypeFontTest() throws IOException, InterruptedException doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void notdefInType0Test() throws IOException, InterruptedException { String fileName = "notdefInType0Test.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. saveState(). @@ -209,13 +215,14 @@ public void notdefInType0Test() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void symbolDefaultFontTest() throws IOException, InterruptedException { String fileName = "symbolDefaultFontTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); PdfFont font = PdfFontFactory.createFont(StandardFonts.SYMBOL); @@ -225,7 +232,8 @@ public void symbolDefaultFontTest() throws IOException, InterruptedException { fillSymbolDefaultPage(font, doc.addNewPage()); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } private void fillSymbolDefaultPage(PdfFont font, PdfPage page) { @@ -268,11 +276,11 @@ private void fillSymbolDefaultPage(PdfFont font, PdfPage page) { @Test public void symbolTrueTypeFontWinAnsiTest() throws IOException, InterruptedException { String fileName = "symbolTrueTypeFontWinAnsiTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); // TODO DEVSIX-9589 Create symbol font with cmap 3,0 for testing - PdfFont font = PdfFontFactory.createFont(sourceFolder + "Symbols1.ttf", PdfEncodings.WINANSI, + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "Symbols1.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); StringBuilder str = new StringBuilder(); @@ -311,17 +319,18 @@ public void symbolTrueTypeFontWinAnsiTest() throws IOException, InterruptedExcep restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void symbolTrueTypeFontIdentityTest() throws IOException, InterruptedException { String fileName = "symbolTrueTypeFontIdentityTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); // TODO DEVSIX-9589 Create symbol font with cmap 3,0 for testing - PdfFont font = PdfFontFactory.createFont(sourceFolder + "Symbols1.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "Symbols1.ttf", PdfEncodings.IDENTITY_H); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); StringBuilder builder = new StringBuilder(); for (int i = 32; i <= 100; i++) { @@ -363,17 +372,18 @@ public void symbolTrueTypeFontIdentityTest() throws IOException, InterruptedExce restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void symbolTrueTypeFontSameCharsIdentityTest() throws IOException, InterruptedException { String fileName = "symbolTrueTypeFontSameCharsIdentityTest.pdf"; - PdfWriter writer = CompareTool.createTestPdfWriter(outputFolder + fileName); + PdfWriter writer = CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName); PdfDocument doc = new PdfDocument(writer); // TODO DEVSIX-9589 Create symbol font with cmap 3,0 for testing - PdfFont font = PdfFontFactory.createFont(sourceFolder + "Symbols1.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "Symbols1.ttf", PdfEncodings.IDENTITY_H); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); String line = "AABBCCDDEEFFGGHHIIJJ"; canvas. @@ -386,12 +396,13 @@ public void symbolTrueTypeFontSameCharsIdentityTest() throws IOException, Interr restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outputFolder + fileName, sourceFolder + "cmp_" + fileName, outputFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, SOURCE_FOLDER + "cmp_" + fileName, + DESTINATION_FOLDER, "diff_")); } @Test public void encodingStreamExtractionTest() throws IOException { - String fileName = sourceFolder + "encodingStream01.pdf"; + String fileName = SOURCE_FOLDER + "encodingStream01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfReader(fileName)); String extractedText = PdfTextExtractor.getTextFromPage(pdfDocument.getPage(1)); Assertions.assertEquals("abc", extractedText); @@ -399,7 +410,7 @@ public void encodingStreamExtractionTest() throws IOException { @Test public void differentCodeSpaceRangeLengthsExtractionTest() throws IOException { - String fileName = sourceFolder + "differentCodeSpaceRangeLengths01.pdf"; + String fileName = SOURCE_FOLDER + "differentCodeSpaceRangeLengths01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfReader(fileName)); String extractedText = PdfTextExtractor.getTextFromPage(pdfDocument.getPage(1)); Assertions.assertEquals("Hello\u7121\u540dworld\u6b98\u528d", extractedText); diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandlerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandlerTest.java index 48892ecd87..65016fc54d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandlerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/EncryptedEmbeddedStreamsHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/FingerPrintTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/FingerPrintTest.java index 075bbecc5d..fe7040f54b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/FingerPrintTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/FingerPrintTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/FontToUnicodeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/FontToUnicodeTest.java index 9020424442..bfedba2e42 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/FontToUnicodeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/FontToUnicodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,25 +44,25 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class FontToUnicodeTest extends ExtendedITextTest { - public static final String fontsFolder = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/kernel/pdf/FontToUnicodeTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/FontToUnicodeTest/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(destinationFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } @Test public void severalUnicodesWithinOneGlyphTest() throws IOException { - String outFileName = destinationFolder + "severalUnicodesWithinOneGlyphTest.pdf"; + String outFileName = DESTINATION_FOLDER + "severalUnicodesWithinOneGlyphTest.pdf"; PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(outFileName)); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSansCJKjp-Bold.otf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", PdfEncodings.IDENTITY_H); List glyphs = Collections.singletonList(font.getGlyph((int) '\u65E0')); diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/FreeReferencesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/FreeReferencesTest.java index 6043f76956..2fbecfa243 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/FreeReferencesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/FreeReferencesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/ImageFormatsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/ImageFormatsTest.java index 0ab6d560fe..3494d2fae6 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/ImageFormatsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/ImageFormatsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/InheritedPageEntriesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/InheritedPageEntriesTest.java index 83fe41d218..c7ea422de1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/InheritedPageEntriesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/InheritedPageEntriesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandlerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandlerTest.java index 859676101f..b6a612d32c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandlerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStreamTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStreamTest.java index 9fd26cd8ad..a28451439d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStreamTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/MemoryLimitsAwareOutputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/OcgPropertiesCopierTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/OcgPropertiesCopierTest.java index b98324dd89..1da9dd1473 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/OcgPropertiesCopierTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/OcgPropertiesCopierTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingHelperUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingHelperUnitTest.java index 269fe93b20..44ed0ebbde 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingHelperUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingHelperUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingTest.java index c7471e65d1..6cd98e2d77 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageFlushingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerTest.java index a81fc06b1e..8214859779 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerUnitTest.java index 1ec6923b0a..d424ce789b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PageResizerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/ParentTreeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/ParentTreeTest.java index c8e24ef6d9..7357c936dd 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/ParentTreeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/ParentTreeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfAConformanceTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfAConformanceTest.java index 67fb5b1927..bfdcb17567 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfAConformanceTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfAConformanceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfActionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfActionTest.java index 9aa2d36b76..acc92a01ed 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfActionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfActionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayTest.java index 49acf4f2b2..2e36f7c030 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayUnitTest.java index be97d6df13..889eccb2a4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfCopyTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfCopyTest.java index 0a03913e42..d2b52fa5d0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfCopyTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfCopyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDashPatternTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDashPatternTest.java index 0d6a2b381a..80babc7a1e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDashPatternTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDashPatternTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDestinationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDestinationTest.java index b98ff0af97..72c0034455 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDestinationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDestinationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDeveloperExtensionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDeveloperExtensionTest.java index a7efccfebc..d675a033bd 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDeveloperExtensionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDeveloperExtensionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryDictionaryValuesModificationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryDictionaryValuesModificationTest.java index 0d18b41ded..473f5acd6c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryDictionaryValuesModificationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryDictionaryValuesModificationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTest.java index e2810c51ae..7d28efd224 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTokenizerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTokenizerTest.java index e5a1436770..eae4a577d9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTokenizerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDictionaryTokenizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentAppendModeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentAppendModeTest.java index 9c78b11596..94054e3f54 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentAppendModeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentAppendModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentIdTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentIdTest.java index da6e7f908c..6173e3d942 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentIdTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentIdTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentInfoTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentInfoTest.java index 0cb7c8cd51..5b29432814 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentInfoTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java index d75eb6f129..b2ceb1420f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentUnitTest.java index 1645d52b21..220b815bb1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptionUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptionUnitTest.java index 3d2195cf64..74ddadb99d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptionUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptionUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptorTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptorTest.java index 14a201045a..7c31f4c3d0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfEncryptorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfExtGStateTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfExtGStateTest.java index e6ca61d99e..10d62098f7 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfExtGStateTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfExtGStateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontCacheTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontCacheTest.java index 27ef1f62a2..146d457635 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontCacheTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontCacheTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,22 +45,21 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfFontCacheTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/"; - private static final String fontsFolder = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/kernel/pdf/PdfFontCacheTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/PdfFontCacheTest/"; - - static final String pangramme = "Amazingly few discotheques provide jukeboxes " + + private static final String pangramme = "Amazingly few discotheques provide jukeboxes " + "but it now while sayingly ABEFGHJKNOPQRSTUWYZ?"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(destinationFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } private static final String[] TextSetHelloWorld = new String[]{"Hello World"}; @@ -71,8 +70,8 @@ public static void afterClass() { @Test public void createDocumentWithKozmin() throws IOException, InterruptedException { String testName = "DocumentWithKozmin"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); addPagesWithFonts(pdfDoc, "KozMinPro-Regular", "UniJIS-UCS2-H", TextSetChinese); @@ -80,15 +79,15 @@ public void createDocumentWithKozmin() throws IOException, InterruptedException pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaMixEncodings() throws IOException, InterruptedException { String testName = "DocumentWithHelveticaMixEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.HELVETICA; @@ -99,15 +98,15 @@ public void createDocumentWithHelveticaMixEncodings() throws IOException, Interr pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelvetica() throws IOException, InterruptedException { String testName = "DocumentWithHelvetica"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.HELVETICA; @@ -119,15 +118,15 @@ public void createDocumentWithHelvetica() throws IOException, InterruptedExcepti pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaFlushed() throws IOException, InterruptedException { String testName = "DocumentWithHelveticaFlushed"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.HELVETICA; @@ -142,15 +141,15 @@ public void createDocumentWithHelveticaFlushed() throws IOException, Interrupted //Flushed fonts cannot be reused. Assertions.assertEquals(3, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTimesAndCustomEncoding() throws IOException, InterruptedException { String testName = "DocumentTimesAndCustomEncoding"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.TIMES_ROMAN; @@ -164,15 +163,15 @@ public void createDocumentWithTimesAndCustomEncoding() throws IOException, Inter pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithCourierAndWinAnsiEncodings() throws IOException, InterruptedException { String testName = "DocumentCourierAndWinAnsiEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.COURIER; @@ -187,18 +186,18 @@ public void createDocumentWithCourierAndWinAnsiEncodings() throws IOException, I pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test - public void createDocumentWithAbserifAndIdentityHEncodings() throws IOException, InterruptedException { - String testName = "DocumentWithAbserifAndIdentityHEncodings"; + public void createDocumentWithPTserifAndIdentityHEncodings() throws IOException, InterruptedException { + String testName = "DocumentWithPTserifAndIdentityHEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; //All those encodings actually the same Identity-H. addPagesWithFonts(pdfDoc, font, null, TextSetWithABC); @@ -208,54 +207,54 @@ public void createDocumentWithAbserifAndIdentityHEncodings() throws IOException, pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test - public void createDocumentWithEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings() throws IOException, InterruptedException { - String testName = "DocumentWithEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings"; + public void createDocumentWithEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings() throws IOException, InterruptedException { + String testName = "DocumentWithEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; addPagesWithFonts(pdfDoc, font, PdfEncodings.WINANSI, TextSetWithABC); addPagesWithFonts(pdfDoc, font, "", TextSetWithABC); pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test - public void createDocumentWithEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings() throws IOException, InterruptedException { - String testName = "DocumentWithEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings"; + public void createDocumentWithEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings() throws IOException, InterruptedException { + String testName = "DocumentWithEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; addPagesWithFonts(pdfDoc, font, "", TextSetWithABC); addPagesWithFonts(pdfDoc, font, PdfEncodings.WINANSI, TextSetWithABC); pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test - public void createDocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings() throws IOException, InterruptedException { - String testName = "DocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings"; + public void createDocumentWithNotEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings() throws IOException, InterruptedException { + String testName = "DocumentWithNotEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; EmbeddingStrategy embeddingStrategy = EmbeddingStrategy.PREFER_NOT_EMBEDDED; addPagesWithFonts(pdfDoc, font, PdfEncodings.WINANSI, embeddingStrategy, TextSetWithABC); @@ -263,18 +262,18 @@ public void createDocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodin pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test - public void createDocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings() throws IOException, InterruptedException { - String testName = "DocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings"; + public void createDocumentWithNotEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings() throws IOException, InterruptedException { + String testName = "DocumentWithNotEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; EmbeddingStrategy embeddingStrategy = EmbeddingStrategy.PREFER_NOT_EMBEDDED; addPagesWithFonts(pdfDoc, font, "", embeddingStrategy, TextSetWithABC); @@ -282,15 +281,15 @@ public void createDocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodin pdfDoc.close(); Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTimesBoldAndMacRomanEncodings() throws IOException, InterruptedException { String testName = "DocumentTimesBoldAndMacRomanEncodings"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); String font = StandardFonts.TIMES_BOLD; @@ -302,18 +301,18 @@ public void createDocumentWithTimesBoldAndMacRomanEncodings() throws IOException pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsType0DefaultEncoding() throws IOException, InterruptedException { String testName = "DocumentWithTrueTypeAsType0DefaultEncoding"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; String encoding = null; addPagesWithFonts(pdfDoc, font, encoding, TextSetWithABC); @@ -322,18 +321,18 @@ public void createDocumentWithTrueTypeAsType0DefaultEncoding() throws IOExceptio pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsTrueType() throws IOException, InterruptedException { String testName = "DocumentWithTrueType"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; String encoding = PdfEncodings.WINANSI; addPagesWithFonts(pdfDoc, font, encoding, TextSetWithABC); @@ -342,18 +341,18 @@ public void createDocumentWithTrueTypeAsTrueType() throws IOException, Interrupt pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeFlushed() throws IOException, InterruptedException { String testName = "DocumentWithTrueTypeFlushed"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; String encoding = null; addPagesWithFonts(pdfDoc, font, encoding, TextSetWithABC); @@ -367,18 +366,18 @@ public void createDocumentWithTrueTypeFlushed() throws IOException, InterruptedE //For some reason Acrobat shows only one font in Properties. //RUPS shows 3 instances of the same font. Assertions.assertEquals(3, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsType0() throws IOException, InterruptedException { String testName = "DocumentWithTrueTypeAsType0"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; String encoding = "Identity-H"; addPagesWithFonts(pdfDoc, font, encoding, TextSetWithABC); @@ -387,18 +386,18 @@ public void createDocumentWithTrueTypeAsType0() throws IOException, InterruptedE pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsType0Flushed() throws IOException, InterruptedException { String testName = "DocumentWithTrueTypeAsType0Flushed"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; String encoding = "Identity-H"; addPagesWithFonts(pdfDoc, font, encoding, TextSetWithABC); @@ -410,18 +409,18 @@ public void createDocumentWithTrueTypeAsType0Flushed() throws IOException, Inter //Flushed fonts cannot be reused. Assertions.assertEquals(3, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithOpenTypeAsType0() throws IOException, InterruptedException { String testName = "DocumentWithOpenTypeAsType0"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "NotoSansCJKjp-Bold.otf"; + String font = FONTS_FOLDER + "NotoSansCJKjp-Bold.otf"; String encoding = "Identity-H"; addPagesWithFonts(pdfDoc, font, encoding, TextSetInternational); @@ -430,18 +429,18 @@ public void createDocumentWithOpenTypeAsType0() throws IOException, InterruptedE pdfDoc.close(); Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithOpenTypeAsType0Flushed() throws IOException, InterruptedException { String testName = "DocumentWithOpenTypeAsType0Flushed"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); - String font = fontsFolder + "NotoSansCJKjp-Bold.otf"; + String font = FONTS_FOLDER + "NotoSansCJKjp-Bold.otf"; String encoding = "Identity-H"; addPagesWithFonts(pdfDoc, font, encoding, TextSetInternational); @@ -453,16 +452,16 @@ public void createDocumentWithOpenTypeAsType0Flushed() throws IOException, Inter //Flushed fonts cannot be reused. Assertions.assertEquals(3, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaFromDocument() throws IOException, InterruptedException { String testName = "DocumentWithHelveticaFromDocument"; - String input = sourceFolder + "DocumentWithHelvetica.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithHelvetica.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -502,16 +501,16 @@ public void createDocumentWithHelveticaFromDocument() throws IOException, Interr //We cannot rely on font name for a document font, so we treat them as two different fonts. //However we're trying to detect standard fonts in this case, so it will work. Assertions.assertEquals(1, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaFromDocumentWithWrongEncoding() throws IOException, InterruptedException { String testName = "DocumentWithHelveticaFromDocumentWithWrongEncoding"; - String input = sourceFolder + "DocumentWithHelvetica.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithHelvetica.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -550,15 +549,15 @@ public void createDocumentWithHelveticaFromDocumentWithWrongEncoding() throws IO //Two different encodings were used -> two fonts are expected. Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAboriginalFromDocument() throws IOException, InterruptedException { String testName = "DocumentWithTrueTypeAboriginalFromDocument"; - String input = sourceFolder + "DocumentWithTrueTypeAboriginalSerif.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithTrueTypeAboriginalSerif.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -590,21 +589,22 @@ public void createDocumentWithTrueTypeAboriginalFromDocument() throws IOExceptio //There is only one just loaded and used document font. Assertions.assertEquals(1, pdfDoc.getDocumentFonts().size()); - addPagesWithFonts(pdfDoc, fontsFolder + "abserif4_5.ttf", "WinAnsi", TextSetWithABC); + // TODO DEVSIX-9683 Replace abserif4_5.ttc in kernel + addPagesWithFonts(pdfDoc, FONTS_FOLDER + "abserif4_5.ttf", "WinAnsi", TextSetWithABC); pdfDoc.close(); //We cannot rely on font name for a document font, so we treat them as two different fonts. Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType1NotoFromDocument() throws IOException, InterruptedException { String testName = "DocumentWithType1NotoFromDocument"; - String input = sourceFolder + "DocumentWithType1Noto.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithType1Noto.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -636,22 +636,22 @@ public void createDocumentWithType1NotoFromDocument() throws IOException, Interr //There is only one just loaded and used document font. Assertions.assertEquals(1, pdfDoc.getDocumentFonts().size()); - addPagesWithFonts(pdfDoc, fontsFolder + "NotoSansCJKjp-Bold.otf", encoding, + addPagesWithFonts(pdfDoc, FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", encoding, EmbeddingStrategy.FORCE_NOT_EMBEDDED, TextSetWithABC); pdfDoc.close(); //We cannot rely on font name for a document font, so we treat them as two different fonts. Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType0AboriginalFromDocument1() throws IOException, InterruptedException { String testName = "DocumentWithType0AboriginalFromDocument"; - String input = sourceFolder + "DocumentWithType0AboriginalSerif.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithType0AboriginalSerif.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -683,21 +683,22 @@ public void createDocumentWithType0AboriginalFromDocument1() throws IOException, //There is only one just loaded and used document font. Assertions.assertEquals(1, pdfDoc.getDocumentFonts().size()); - addPagesWithFonts(pdfDoc, fontsFolder + "abserif4_5.ttf", encoding, TextSetWithABC); + // TODO DEVSIX-9683 Replace abserif4_5.ttc in kernel + addPagesWithFonts(pdfDoc, FONTS_FOLDER + "abserif4_5.ttf", encoding, TextSetWithABC); pdfDoc.close(); //We cannot rely on font name for a document font, so we treat them as two different fonts. Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType0NotoFromDocument1() throws IOException, InterruptedException { String testName = "DocumentWithType0NotoFromDocument"; - String input = sourceFolder + "DocumentWithType0Noto.pdf"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String input = SOURCE_FOLDER + "DocumentWithType0Noto.pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfReader reader = new PdfReader(input); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -729,21 +730,21 @@ public void createDocumentWithType0NotoFromDocument1() throws IOException, Inter //There is only one just loaded and used document font. Assertions.assertEquals(1, pdfDoc.getDocumentFonts().size()); - addPagesWithFonts(pdfDoc, fontsFolder + "NotoSansCJKjp-Bold.otf", PdfEncodings.WINANSI, + addPagesWithFonts(pdfDoc, FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", PdfEncodings.WINANSI, EmbeddingStrategy.PREFER_NOT_EMBEDDED, TextSetWithABC); pdfDoc.close(); //We cannot rely on font name for a document font, so we treat them as two different fonts. Assertions.assertEquals(2, countPdfFonts(filename)); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType3Font() throws IOException, InterruptedException { String testName = "DocumentWithType3Font"; - String filename = destinationFolder + testName + ".pdf"; - String cmpFilename = sourceFolder + "cmp_" + testName + ".pdf"; + String filename = DESTINATION_FOLDER + testName + ".pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_" + testName + ".pdf"; PdfDocument pdfDoc = createDocument(filename); @@ -787,7 +788,7 @@ public void createDocumentWithType3Font() throws IOException, InterruptedExcepti Assertions.assertEquals(2, countPdfFonts(filename)); // reading and comparing text - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } private void addPagesWithFonts(PdfDocument pdfDoc, String fontProgram, String fontEncoding, String[] text) throws IOException { diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontTest.java index b26075ee0c..764bbde050 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -69,28 +69,28 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfFontTest extends ExtendedITextTest { - public static final int PageCount = 1; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/"; - public static final String fontsFolder = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/kernel/pdf/PdfFontTest/"; + private static final int PageCount = 1; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/PdfFontTest/"; - static final String author = "Alexander Chingarev"; - static final String creator = "iText"; + private static final String author = "Alexander Chingarev"; + private static final String creator = "iText"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(destinationFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } @Test public void createDocumentWithKozmin() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithKozmin.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithKozmin.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithKozmin.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithKozmin.pdf"; String title = "Type 0 test"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -116,13 +116,13 @@ public void createDocumentWithKozmin() throws IOException, InterruptedException canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithKozminAndDifferentCodespaceRanges() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithKozminDifferentCodespaceRanges.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithKozminDifferentCodespaceRanges.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithKozminDifferentCodespaceRanges.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithKozminDifferentCodespaceRanges.pdf"; String title = "Type 0 test"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -148,13 +148,13 @@ public void createDocumentWithKozminAndDifferentCodespaceRanges() throws IOExcep canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithStSongUni() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithStSongUni.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithStSongUni.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithStSongUni.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithStSongUni.pdf"; String title = "Type0 test"; PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION)); @@ -178,14 +178,14 @@ public void createDocumentWithStSongUni() throws IOException, InterruptedExcepti canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithStSong() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithStSong.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithStSong.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithStSong.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithStSong.pdf"; String title = "Type0 test"; PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION)); @@ -209,13 +209,13 @@ public void createDocumentWithStSong() throws IOException, InterruptedException canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsType0() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithTrueTypeAsType0.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeAsType0.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeAsType0.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeAsType0.pdf"; String title = "Type0 test"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -225,7 +225,7 @@ public void createDocumentWithTrueTypeAsType0() throws IOException, InterruptedE pdfDoc.getDocumentInfo().setAuthor(author). setCreator(creator). setTitle(title); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; PdfFont type0Font = PdfFontFactory.createFont(font, "Identity-H"); // type0Font.setSubset(false); Assertions.assertTrue(type0Font instanceof PdfType0Font, "PdfType0Font expected"); @@ -271,13 +271,13 @@ public void createDocumentWithTrueTypeAsType0() throws IOException, InterruptedE page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType3Font() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithType3Font.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithType3Font.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithType3Font.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithType3Font.pdf"; // A A A A E E E ~ é String testString = "A A A A E E E ~ \u00E9"; @@ -349,13 +349,13 @@ public void createDocumentWithType3Font() throws IOException, InterruptedExcepti pdfDoc.close(); // reading and comparing text - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test //TODO DEVSIX-4995 This test should be updated when DEVSIX-4995 is resolved public void notReplaceToUnicodeMappingTest() throws IOException { - String filename = sourceFolder + "toUnicodeAndDifferenceFor32.pdf"; + String filename = SOURCE_FOLDER + "toUnicodeAndDifferenceFor32.pdf"; try (PdfDocument pdf = new PdfDocument(new PdfReader(filename))) { PdfDictionary pdfType3FontDict = (PdfDictionary) pdf.getPdfObject(112); @@ -369,8 +369,8 @@ public void notReplaceToUnicodeMappingTest() throws IOException { @Test public void createTaggedDocumentWithType3Font() throws IOException, InterruptedException { - String filename = destinationFolder + "createTaggedDocumentWithType3Font.pdf"; - String cmpFilename = sourceFolder + "cmp_createTaggedDocumentWithType3Font.pdf"; + String filename = DESTINATION_FOLDER + "createTaggedDocumentWithType3Font.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_createTaggedDocumentWithType3Font.pdf"; // A A A A E E E ~ é String testString = "A A A A E E E ~ \u00E9"; @@ -433,13 +433,13 @@ public void createTaggedDocumentWithType3Font() throws IOException, InterruptedE pdfDoc.close(); // reading and comparing text - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelvetica() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithHelvetica.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithHelvetica.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithHelvetica.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithHelvetica.pdf"; String title = "Type3 test"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -466,13 +466,13 @@ public void createDocumentWithHelvetica() throws IOException, InterruptedExcepti page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaOblique() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithHelveticaOblique.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithHelveticaOblique.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithHelveticaOblique.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithHelveticaOblique.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -500,13 +500,13 @@ public void createDocumentWithHelveticaOblique() throws IOException, Interrupted page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithHelveticaBoldOblique() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithHelveticaBoldOblique.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithHelveticaBoldOblique.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithHelveticaBoldOblique.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithHelveticaBoldOblique.pdf"; String title = "Empty iText Document"; @@ -535,13 +535,13 @@ public void createDocumentWithHelveticaBoldOblique() throws IOException, Interru page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithCourierBold() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithCourierBold.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCourierBold.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCourierBold.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCourierBold.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -569,13 +569,13 @@ public void createDocumentWithCourierBold() throws IOException, InterruptedExcep page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType1FontAfm() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithCMR10Afm.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCMR10Afm.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCMR10Afm.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCMR10Afm.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -585,7 +585,7 @@ public void createDocumentWithType1FontAfm() throws IOException, InterruptedExce setCreator(creator). setTitle(title); PdfFont pdfType1Font = PdfFontFactory.createFont(FontProgramFactory.createType1Font( - fontsFolder + "cmr10.afm", fontsFolder + "cmr10.pfb"), + FONTS_FOLDER + "cmr10.afm", FONTS_FOLDER + "cmr10.pfb"), FontEncoding.FONT_SPECIFIC, EmbeddingStrategy.PREFER_EMBEDDED); Assertions.assertTrue(pdfType1Font instanceof PdfType1Font, "PdfType1Font expected"); @@ -599,8 +599,8 @@ public void createDocumentWithType1FontAfm() throws IOException, InterruptedExce .restoreState() .rectangle(100, 500, 100, 100).fill(); - byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.afm")); - byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.pfb")); + byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.afm")); + byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.pfb")); pdfType1Font = PdfFontFactory.createFont(FontProgramFactory.createType1Font(afm, pfb), FontEncoding.FONT_SPECIFIC, EmbeddingStrategy.PREFER_EMBEDDED); Assertions.assertTrue(pdfType1Font instanceof PdfType1Font, "PdfType1Font expected"); @@ -617,13 +617,13 @@ public void createDocumentWithType1FontAfm() throws IOException, InterruptedExce pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType1FontPfm() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithCMR10Pfm.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCMR10Pfm.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCMR10Pfm.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCMR10Pfm.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -633,7 +633,7 @@ public void createDocumentWithType1FontPfm() throws IOException, InterruptedExce setCreator(creator). setTitle(title); PdfFont pdfType1Font = PdfFontFactory.createFont(FontProgramFactory.createType1Font( - fontsFolder + "cmr10.pfm", fontsFolder + "cmr10.pfb"), + FONTS_FOLDER + "cmr10.pfm", FONTS_FOLDER + "cmr10.pfb"), FontEncoding.FONT_SPECIFIC, EmbeddingStrategy.PREFER_EMBEDDED); PdfPage page = pdfDoc.addNewPage(); PdfCanvas canvas = new PdfCanvas(page); @@ -650,14 +650,14 @@ public void createDocumentWithType1FontPfm() throws IOException, InterruptedExce page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeFont1() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithTrueTypeFont1.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeFont1.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeFont1.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeFont1.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -665,7 +665,7 @@ public void createDocumentWithTrueTypeFont1() throws IOException, InterruptedExc pdfDoc.getDocumentInfo().setAuthor(author). setCreator(creator). setTitle(title); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; PdfFont pdfTrueTypeFont = PdfFontFactory.createFont(font, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED); Assertions.assertTrue(pdfTrueTypeFont instanceof PdfTrueTypeFont, "PdfTrueTypeFont expected"); @@ -702,13 +702,13 @@ public void createDocumentWithTrueTypeFont1() throws IOException, InterruptedExc pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeFont1NotEmbedded() throws IOException, InterruptedException { - String filename = destinationFolder + "createDocumentWithTrueTypeFont1NotEmbedded.pdf"; - String cmpFilename = sourceFolder + "cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf"; + String filename = DESTINATION_FOLDER + "createDocumentWithTrueTypeFont1NotEmbedded.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -716,7 +716,7 @@ public void createDocumentWithTrueTypeFont1NotEmbedded() throws IOException, Int pdfDoc.getDocumentInfo().setAuthor(author). setCreator(creator). setTitle(title); - String font = fontsFolder + "abserif4_5.ttf"; + String font = FONTS_FOLDER + "PTSerif-Regular.ttf"; PdfFont pdfTrueTypeFont = PdfFontFactory.createFont(font, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_NOT_EMBEDDED); Assertions.assertTrue(pdfTrueTypeFont instanceof PdfTrueTypeFont, "PdfTrueTypeFont expected"); @@ -753,13 +753,13 @@ public void createDocumentWithTrueTypeFont1NotEmbedded() throws IOException, Int pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeOtfFont() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithTrueTypeOtfFont.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeOtfFont.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeOtfFont.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeOtfFont.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -769,7 +769,7 @@ public void createDocumentWithTrueTypeOtfFont() throws IOException, InterruptedE setCreator(creator). setTitle(title); - String font = fontsFolder + "Puritan2.otf"; + String font = FONTS_FOLDER + "Puritan-Regular.otf"; PdfFont pdfTrueTypeFont = PdfFontFactory.createFont(font, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED); @@ -809,19 +809,19 @@ public void createDocumentWithTrueTypeOtfFont() throws IOException, InterruptedE pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeOtfFontPdf20() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithTrueTypeOtfFontPdf20.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeOtfFontPdf20.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeOtfFontPdf20.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeOtfFontPdf20.pdf"; PdfWriter writer = CompareTool.createTestPdfWriter(filename, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument pdfDoc = new PdfDocument(writer); - String font = fontsFolder + "Puritan2.otf"; + String font = FONTS_FOLDER + "Puritan-Regular.otf"; PdfFont pdfTrueTypeFont = PdfFontFactory.createFont(font, PdfEncodings.IDENTITY_H); PdfPage page = pdfDoc.addNewPage(); @@ -846,13 +846,13 @@ public void createDocumentWithTrueTypeOtfFontPdf20() throws IOException, Interru Assertions.assertFalse(descriptor.containsKey(PdfName.CIDSet), "CIDSet is deprecated in PDF 2.0 and should not be written"); generatedDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType0OtfFont() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithType0OtfFont.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithType0OtfFont.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithType0OtfFont.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithType0OtfFont.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -862,7 +862,7 @@ public void createDocumentWithType0OtfFont() throws IOException, InterruptedExce setCreator(creator). setTitle(title); - String font = fontsFolder + "Puritan2.otf"; + String font = FONTS_FOLDER + "Puritan-Regular.otf"; PdfFont pdfFont = PdfFontFactory.createFont(font, "Identity-H"); Assertions.assertTrue(pdfFont instanceof PdfType0Font, "PdfType0Font expected"); @@ -900,14 +900,14 @@ public void createDocumentWithType0OtfFont() throws IOException, InterruptedExce pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testUpdateType3FontBasedExistingFont() throws IOException, InterruptedException { - String inputFileName = sourceFolder + "type3Font.pdf"; - String outputFileName = destinationFolder + "type3Font_update.pdf"; - String cmpOutputFileName = sourceFolder + "cmp_type3Font_update.pdf"; + String inputFileName = SOURCE_FOLDER + "type3Font.pdf"; + String outputFileName = DESTINATION_FOLDER + "type3Font_update.pdf"; + String cmpOutputFileName = SOURCE_FOLDER + "cmp_type3Font_update.pdf"; String title = "Type3 font iText Document"; int numberOfGlyphs = 0; @@ -941,14 +941,14 @@ public void testUpdateType3FontBasedExistingFont() throws IOException, Interrupt numberOfGlyphs = pdfType3Font.getNumberOfGlyphs(); } Assertions.assertEquals(6, numberOfGlyphs); - Assertions.assertNull(new CompareTool().compareByContent(outputFileName, cmpOutputFileName, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outputFileName, cmpOutputFileName, DESTINATION_FOLDER, "diff_")); } @Test public void testNewType3FontBasedExistingFont() throws IOException, InterruptedException { - String inputFileName = sourceFolder + "type3Font.pdf"; - String outputFileName = destinationFolder + "type3Font_new.pdf"; - String cmpOutputFileName = sourceFolder + "cmp_type3Font_new.pdf"; + String inputFileName = SOURCE_FOLDER + "type3Font.pdf"; + String outputFileName = DESTINATION_FOLDER + "type3Font_new.pdf"; + String cmpOutputFileName = SOURCE_FOLDER + "cmp_type3Font_new.pdf"; String title = "Type3 font iText Document"; int numberOfGlyphs = 0; @@ -984,12 +984,12 @@ public void testNewType3FontBasedExistingFont() throws IOException, InterruptedE } Assertions.assertEquals(6, numberOfGlyphs); - Assertions.assertNull(new CompareTool().compareByContent(outputFileName, cmpOutputFileName, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outputFileName, cmpOutputFileName, DESTINATION_FOLDER, "diff_")); } @Test public void testAddGlyphToType3FontWithCustomNames() throws IOException { - String inputFile = sourceFolder + "type3FontWithCustomNames.pdf"; + String inputFile = SOURCE_FOLDER + "type3FontWithCustomNames.pdf"; int initialGlyphsNumber = 0; int finalGlyphsNumber = 0; @@ -1023,9 +1023,9 @@ public void testAddGlyphToType3FontWithCustomNames() throws IOException { @Test public void testNewType1FontBasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithCMR10Afm.pdf"; - String filename = destinationFolder + "DocumentWithCMR10Afm_new.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCMR10Afm_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithCMR10Afm.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCMR10Afm_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCMR10Afm_new.pdf"; String title = "Type 1 font iText Document"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1055,14 +1055,14 @@ public void testNewType1FontBasedExistingFont() throws IOException, InterruptedE page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testNewTrueTypeFont1BasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithTrueTypeFont1.pdf"; - String filename = destinationFolder + "DocumentWithTrueTypeFont1_new.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeFont1_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithTrueTypeFont1.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeFont1_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeFont1_new.pdf"; String title = "testNewTrueTypeFont1BasedExistingFont"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1090,14 +1090,14 @@ public void testNewTrueTypeFont1BasedExistingFont() throws IOException, Interrup canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testNewTrueTypeFont2BasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithTrueTypeFont2.pdf"; - String filename = destinationFolder + "DocumentWithTrueTypeFont2_new.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeFont2_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithTrueTypeFont2.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeFont2_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeFont2_new.pdf"; String title = "True Type font iText Document"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1127,14 +1127,14 @@ public void testNewTrueTypeFont2BasedExistingFont() throws IOException, Interrup page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testTrueTypeFont1BasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithTrueTypeFont1.pdf"; - String filename = destinationFolder + "DocumentWithTrueTypeFont1_updated.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeFont1_updated.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithTrueTypeFont1.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeFont1_updated.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeFont1_updated.pdf"; PdfReader reader1 = new PdfReader(inputFileName1); PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -1158,14 +1158,14 @@ public void testTrueTypeFont1BasedExistingFont() throws IOException, Interrupted page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testUpdateCjkFontBasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithKozmin.pdf"; - String filename = destinationFolder + "DocumentWithKozmin_update.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithKozmin_update.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithKozmin.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithKozmin_update.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithKozmin_update.pdf"; String title = "Type0 font iText Document"; PdfReader reader = new PdfReader(inputFileName1); @@ -1193,14 +1193,14 @@ public void testUpdateCjkFontBasedExistingFont() throws IOException, Interrupted page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testNewCjkFontBasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithKozmin.pdf"; - String filename = destinationFolder + "DocumentWithKozmin_new.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithKozmin_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithKozmin.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithKozmin_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithKozmin_new.pdf"; String title = "Type0 font iText Document"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1230,14 +1230,14 @@ public void testNewCjkFontBasedExistingFont() throws IOException, InterruptedExc page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithTrueTypeAsType0BasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithTrueTypeAsType0.pdf"; - String filename = destinationFolder + "DocumentWithTrueTypeAsType0_new.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeAsType0_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithTrueTypeAsType0.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeAsType0_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeAsType0_new.pdf"; String title = "Type0 font iText Document"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1267,14 +1267,14 @@ public void createDocumentWithTrueTypeAsType0BasedExistingFont() throws IOExcept page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createUpdatedDocumentWithTrueTypeAsType0BasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithTrueTypeAsType0.pdf"; - String filename = destinationFolder + "DocumentWithTrueTypeAsType0_update.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTrueTypeAsType0_update.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithTrueTypeAsType0.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTrueTypeAsType0_update.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTrueTypeAsType0_update.pdf"; String title = "Type0 font iText Document"; PdfReader reader = new PdfReader(inputFileName1); @@ -1301,14 +1301,14 @@ public void createUpdatedDocumentWithTrueTypeAsType0BasedExistingFont() throws I page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createDocumentWithType1WithToUnicodeBasedExistingFont() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "fontWithToUnicode.pdf"; - String filename = destinationFolder + "fontWithToUnicode_new.pdf"; - String cmpFilename = sourceFolder + "cmp_fontWithToUnicode_new.pdf"; + String inputFileName1 = SOURCE_FOLDER + "fontWithToUnicode.pdf"; + String filename = DESTINATION_FOLDER + "fontWithToUnicode_new.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_fontWithToUnicode_new.pdf"; String title = "Type1 font iText Document"; PdfReader reader1 = new PdfReader(inputFileName1); @@ -1337,14 +1337,14 @@ public void createDocumentWithType1WithToUnicodeBasedExistingFont() throws IOExc page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testType1FontUpdateContent() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithCMR10Afm.pdf"; - String filename = destinationFolder + "DocumentWithCMR10Afm_updated.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCMR10Afm_updated.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithCMR10Afm.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCMR10Afm_updated.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCMR10Afm_updated.pdf"; PdfReader reader = new PdfReader(inputFileName1); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -1367,14 +1367,14 @@ public void testType1FontUpdateContent() throws IOException, InterruptedExceptio page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testType1FontUpdateContent2() throws IOException, InterruptedException { - String inputFileName1 = sourceFolder + "DocumentWithCMR10Afm.pdf"; - String filename = destinationFolder + "DocumentWithCMR10Afm2_updated.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithCMR10Afm2_updated.pdf"; + String inputFileName1 = SOURCE_FOLDER + "DocumentWithCMR10Afm.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithCMR10Afm2_updated.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithCMR10Afm2_updated.pdf"; PdfReader reader = new PdfReader(inputFileName1); PdfWriter writer = CompareTool.createTestPdfWriter(filename).setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -1407,14 +1407,14 @@ public void testType1FontUpdateContent2() throws IOException, InterruptedExcepti page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void createWrongAfm1() throws IOException { String message = ""; try { - byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.pfb")); + byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.pfb")); FontProgramFactory.createType1Font(null, pfb); } catch (com.itextpdf.io.exceptions.IOException e) { message = e.getMessage(); @@ -1425,7 +1425,7 @@ public void createWrongAfm1() throws IOException { @Test public void createWrongAfm2() throws IOException { String message = ""; - String font = fontsFolder + "cmr10.pfb"; + String font = FONTS_FOLDER + "cmr10.pfb"; try { FontProgramFactory.createType1Font(font, null); } catch (com.itextpdf.io.exceptions.IOException e) { @@ -1440,7 +1440,7 @@ public void createWrongAfm2() throws IOException { @LogMessage(messageTemplate = IoLogMessageConstant.START_MARKER_MISSING_IN_PFB_FILE) }) public void createWrongPfb() throws IOException { - byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.afm")); + byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.afm")); PdfFont font = PdfFontFactory.createFont(FontProgramFactory.createType1Font(afm, afm, false), null); byte[] streamContent = ((Type1Font) ((PdfType1Font) font).getFontProgram()).getFontStreamBytes(); Assertions.assertTrue(streamContent == null, "Empty stream content expected"); @@ -1448,48 +1448,49 @@ public void createWrongPfb() throws IOException { @Test public void autoDetect1() throws IOException { - byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.afm")); + byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.afm")); Assertions.assertTrue(FontProgramFactory.createFont(afm, false) instanceof Type1Font, "Type1 font expected"); } @Test public void autoDetect2() throws IOException { - byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.afm")); - byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "cmr10.pfb")); + byte[] afm = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.afm")); + byte[] pfb = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "cmr10.pfb")); Assertions.assertTrue(FontProgramFactory.createType1Font(afm, pfb) instanceof Type1Font, "Type1 font expected"); } @Test public void autoDetect3() throws IOException { - byte[] otf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "Puritan2.otf")); + byte[] otf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "Puritan-Regular.otf")); Assertions.assertTrue(FontProgramFactory.createFont(otf) instanceof TrueTypeFont, "TrueType (OTF) font expected"); } @Test public void autoDetect4() throws IOException { - byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "abserif4_5.ttf")); + byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "PTSerif-Regular.ttf")); Assertions.assertTrue(FontProgramFactory.createFont(ttf) instanceof TrueTypeFont, "TrueType (TTF) expected"); } @Test public void autoDetect5() throws IOException { - byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "abserif4_5.ttf")); + byte[] ttf = StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(FONTS_FOLDER + "PTSerif-Regular.ttf")); Assertions.assertTrue(FontProgramFactory.createFont(ttf) instanceof TrueTypeFont, "TrueType (TTF) expected"); } @Test public void testPdfFontFactoryTtc() throws IOException, InterruptedException { - String filename = destinationFolder + "testPdfFontFactoryTtc.pdf"; - String cmpFilename = sourceFolder + "cmp_testPdfFontFactoryTtc.pdf"; + String filename = DESTINATION_FOLDER + "testPdfFontFactoryTtc.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_testPdfFontFactoryTtc.pdf"; String txt = "The quick brown fox"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "uming.ttc,1"); + // TODO DEVSIX-9682 Replace uming.ttc in kernel + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "uming.ttc,1"); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -1501,13 +1502,13 @@ public void testPdfFontFactoryTtc() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testWriteTTC() throws IOException, InterruptedException { - String filename = destinationFolder + "DocumentWithTTC.pdf"; - String cmpFilename = sourceFolder + "cmp_DocumentWithTTC.pdf"; + String filename = DESTINATION_FOLDER + "DocumentWithTTC.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_DocumentWithTTC.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -1517,7 +1518,8 @@ public void testWriteTTC() throws IOException, InterruptedException { setCreator(creator). setTitle(title); - String font = fontsFolder + "uming.ttc"; + // TODO DEVSIX-9682 Replace uming.ttc in kernel + String font = FONTS_FOLDER + "uming.ttc"; PdfFont pdfTrueTypeFont = PdfFontFactory.createTtcFont(font, 0, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED, false); @@ -1556,13 +1558,13 @@ public void testWriteTTC() throws IOException, InterruptedException { pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testWriteTTCNotEmbedded() throws IOException, InterruptedException { - String filename = destinationFolder + "testWriteTTCNotEmbedded.pdf"; - String cmpFilename = sourceFolder + "cmp_testWriteTTCNotEmbedded.pdf"; + String filename = DESTINATION_FOLDER + "testWriteTTCNotEmbedded.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_testWriteTTCNotEmbedded.pdf"; String title = "Empty iText Document"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); @@ -1572,7 +1574,8 @@ public void testWriteTTCNotEmbedded() throws IOException, InterruptedException { setCreator(creator). setTitle(title); - String font = fontsFolder + "uming.ttc"; + // TODO DEVSIX-9682 Replace uming.ttc in kernel + String font = FONTS_FOLDER + "uming.ttc"; PdfFont pdfTrueTypeFont = PdfFontFactory.createTtcFont(font, 0, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_NOT_EMBEDDED, false); @@ -1611,20 +1614,20 @@ public void testWriteTTCNotEmbedded() throws IOException, InterruptedException { pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testNotoFont() throws IOException, InterruptedException { - String filename = destinationFolder + "testNotoFont.pdf"; - String cmpFilename = sourceFolder + "cmp_testNotoFont.pdf"; + String filename = DESTINATION_FOLDER + "testNotoFont.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_testNotoFont.pdf"; String japanese = "\u713C"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSansCJKjp-Bold.otf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", "Identity-H", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); @@ -1637,20 +1640,20 @@ public void testNotoFont() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void woffFontTest() throws IOException, InterruptedException { - String filename = destinationFolder + "testWoffFont.pdf"; - String cmpFilename = sourceFolder + "cmp_testWoffFont.pdf"; + String filename = DESTINATION_FOLDER + "testWoffFont.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_testWoffFont.pdf"; String helloWorld = "Hello world"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "SourceSerif4-Black.woff", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "SourceSerif4-Black.woff", "Identity-H", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); @@ -1663,19 +1666,19 @@ public void woffFontTest() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void NotoSansCJKjpTest() throws IOException, InterruptedException { - String filename = destinationFolder + "NotoSansCJKjpTest.pdf"; - String cmpFilename = sourceFolder + "cmp_NotoSansCJKjpTest.pdf"; + String filename = DESTINATION_FOLDER + "NotoSansCJKjpTest.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_NotoSansCJKjpTest.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSansCJKjp-Bold.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", "Identity-H"); // font.setSubset(false); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -1688,18 +1691,18 @@ public void NotoSansCJKjpTest() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void NotoSansCJKjpTest02() throws IOException, InterruptedException { - String filename = destinationFolder + "NotoSansCJKjpTest02.pdf"; - String cmpFilename = sourceFolder + "cmp_NotoSansCJKjpTest02.pdf"; + String filename = DESTINATION_FOLDER + "NotoSansCJKjpTest02.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_NotoSansCJKjpTest02.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSansCJKjp-Bold.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", "Identity-H"); // font.setSubset(false); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -1712,19 +1715,19 @@ public void NotoSansCJKjpTest02() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void NotoSansCJKjpTest03() throws IOException, InterruptedException { - String filename = destinationFolder + "NotoSansCJKjpTest03.pdf"; - String cmpFilename = sourceFolder + "cmp_NotoSansCJKjpTest03.pdf"; + String filename = DESTINATION_FOLDER + "NotoSansCJKjpTest03.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_NotoSansCJKjpTest03.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSansCJKjp-Bold.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKjp-Bold.otf", "Identity-H"); // font.setSubset(false); PdfCanvas canvas = new PdfCanvas(page); @@ -1740,19 +1743,19 @@ public void NotoSansCJKjpTest03() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void SourceHanSansHWTest() throws IOException, InterruptedException { - String filename = destinationFolder + "SourceHanSansHWTest.pdf"; - String cmpFilename = sourceFolder + "cmp_SourceHanSansHWTest.pdf"; + String filename = DESTINATION_FOLDER + "SourceHanSansHWTest.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_SourceHanSansHWTest.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "SourceHanSansHW-Regular.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "SourceHanSansHW-Regular.otf", "Identity-H"); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() .setFillColor(ColorConstants.RED) @@ -1764,17 +1767,17 @@ public void SourceHanSansHWTest() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void sourceHanSerifKRRegularTest() throws IOException, InterruptedException { - String filename = destinationFolder + "SourceHanSerifKRRegularTest.pdf"; - String cmpFilename = sourceFolder + "cmp_SourceHanSerifKRRegularTest.pdf"; + String filename = DESTINATION_FOLDER + "SourceHanSerifKRRegularTest.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_SourceHanSerifKRRegularTest.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "SourceHanSerifKR-Regular.otf"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "SourceHanSerifKR-Regular.otf"); //font.setSubset(false); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -1787,18 +1790,18 @@ public void sourceHanSerifKRRegularTest() throws IOException, InterruptedExcepti .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER)); } @Test public void sourceHanSerifKRRegularFullTest() throws IOException, InterruptedException { - String filename = destinationFolder + "SourceHanSerifKRRegularFullTest.pdf"; - String cmpFilename = sourceFolder + "cmp_SourceHanSerifKRRegularFullTest.pdf"; + String filename = DESTINATION_FOLDER + "SourceHanSerifKRRegularFullTest.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_SourceHanSerifKRRegularFullTest.pdf"; PdfDocument doc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(fontsFolder + "SourceHanSerifKR-Regular.otf"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "SourceHanSerifKR-Regular.otf"); font.setSubset(false); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -1811,12 +1814,12 @@ public void sourceHanSerifKRRegularFullTest() throws IOException, InterruptedExc .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER)); } @Test public void mmType1ReadTest() throws IOException { - String src = sourceFolder + "mmtype1.pdf"; + String src = SOURCE_FOLDER + "mmtype1.pdf"; PdfDocument doc = new PdfDocument(new PdfReader(src)); PdfFont font = PdfFontFactory.createFont((PdfDictionary) doc.getPdfObject(335)); @@ -1828,9 +1831,9 @@ public void mmType1ReadTest() throws IOException { @Test public void mmType1WriteTest() throws IOException, InterruptedException { - String src = sourceFolder + "mmtype1.pdf"; - String filename = destinationFolder + "mmtype1_res.pdf"; - String cmpFilename = sourceFolder + "cmp_mmtype1.pdf"; + String src = SOURCE_FOLDER + "mmtype1.pdf"; + String filename = DESTINATION_FOLDER + "mmtype1_res.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_mmtype1.pdf"; PdfDocument doc = new PdfDocument(new PdfReader(src), CompareTool.createTestPdfWriter(filename)); PdfFont font = PdfFontFactory.createFont((PdfDictionary) doc.getPdfObject(335)); @@ -1846,15 +1849,15 @@ public void mmType1WriteTest() throws IOException, InterruptedException { .restoreState(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testFontStyleProcessing() throws IOException, InterruptedException { - String filename = destinationFolder + "testFontStyleProcessing.pdf"; - String cmpFilename = sourceFolder + "cmp_testFontStyleProcessing.pdf"; + String filename = DESTINATION_FOLDER + "testFontStyleProcessing.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_testFontStyleProcessing.pdf"; PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(filename)); PdfFont romanDefault = PdfFontFactory.createRegisteredFont("Times-Roman", PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_NOT_EMBEDDED); @@ -1897,18 +1900,19 @@ public void testFontStyleProcessing() throws IOException, InterruptedException { canvas.release(); page.flush(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER, "diff_")); } @Test public void testCheckTTCSize() throws IOException { - TrueTypeCollection collection = new TrueTypeCollection(fontsFolder + "uming.ttc"); + // TODO DEVSIX-9682 Replace uming.ttc in kernel + TrueTypeCollection collection = new TrueTypeCollection(FONTS_FOLDER + "uming.ttc"); Assertions.assertTrue(collection.getTTCSize() == 4); } @Test public void testFontDirectoryRegister() throws IOException { - PdfFontFactory.registerDirectory(sourceFolder); + PdfFontFactory.registerDirectory(SOURCE_FOLDER); PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument pdfDoc = new PdfDocument(writer); @@ -1925,7 +1929,7 @@ public void testFontDirectoryRegister() throws IOException { @Test public void fontDirectoryRegisterRecursivelyTest() throws IOException { - PdfFontFactory.registerDirectoryRecursively(sourceFolder); + PdfFontFactory.registerDirectoryRecursively(SOURCE_FOLDER); for (String name : PdfFontFactory.getRegisteredFonts()) { PdfFont pdfFont = PdfFontFactory.createRegisteredFont(name); if (pdfFont == null) { @@ -1936,7 +1940,7 @@ public void fontDirectoryRegisterRecursivelyTest() throws IOException { @Test public void fontRegisterTest() throws IOException { - FontProgramFactory.registerFont(fontsFolder + "NotoSerif-Regular_v1.7.ttf", "notoSerifRegular"); + FontProgramFactory.registerFont(FONTS_FOLDER + "NotoSerif-Regular_v1.7.ttf", "notoSerifRegular"); PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); PdfDocument pdfDoc = new PdfDocument(writer); @@ -1960,48 +1964,50 @@ public void testSplitString() throws IOException { @Test public void otfByStringNames() { - FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(fontsFolder + "Puritan2.otf"); - Assertions.assertEquals(descriptor.getFontName(), "Puritan2"); - Assertions.assertEquals(descriptor.getFullNameLowerCase(), StringNormalizer.toLowerCase("Puritan 2.0 Regular")); - Assertions.assertEquals(descriptor.getFamilyNameLowerCase(), StringNormalizer.toLowerCase("Puritan 2.0")); - Assertions.assertEquals(descriptor.getStyle(), "Normal"); + FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(FONTS_FOLDER + "Puritan-Regular.otf"); + Assertions.assertEquals("Puritan-Regular", descriptor.getFontName()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Puritan Regular"), descriptor.getFullNameLowerCase()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Puritan"), descriptor.getFamilyNameLowerCase()); + Assertions.assertEquals("Regular", descriptor.getStyle()); Assertions.assertEquals(descriptor.getFontWeight(), 400); } @Test public void otfByStreamNames() throws Exception { - FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "Puritan2.otf"))); - Assertions.assertEquals(descriptor.getFontName(), "Puritan2"); - Assertions.assertEquals(descriptor.getFullNameLowerCase(), StringNormalizer.toLowerCase("Puritan 2.0 Regular")); - Assertions.assertEquals(descriptor.getFamilyNameLowerCase(), StringNormalizer.toLowerCase("Puritan 2.0")); - Assertions.assertEquals(descriptor.getStyle(), "Normal"); + FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile( + FONTS_FOLDER + "Puritan-Regular.otf"))); + Assertions.assertEquals("Puritan-Regular", descriptor.getFontName()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Puritan Regular"), descriptor.getFullNameLowerCase()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Puritan"), descriptor.getFamilyNameLowerCase()); + Assertions.assertEquals("Regular", descriptor.getStyle()); Assertions.assertEquals(descriptor.getFontWeight(), 400); } @Test public void ttfByStringNames() { - FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(fontsFolder + "abserif4_5.ttf"); - Assertions.assertEquals(descriptor.getFontName(), "AboriginalSerif"); - Assertions.assertEquals(descriptor.getFullNameLowerCase(), StringNormalizer.toLowerCase("Aboriginal Serif")); - Assertions.assertEquals(descriptor.getFamilyNameLowerCase(), StringNormalizer.toLowerCase("Aboriginal Serif")); + FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(FONTS_FOLDER + "PTSerif-Regular.ttf"); + Assertions.assertEquals("PTSerif-Regular", descriptor.getFontName()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Pt Serif"), descriptor.getFullNameLowerCase()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Pt Serif"), descriptor.getFamilyNameLowerCase()); Assertions.assertEquals(descriptor.getStyle(), "Regular"); Assertions.assertEquals(descriptor.getFontWeight(), 400); } @Test public void ttfByStreamNames() throws Exception { - FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile(fontsFolder + "abserif4_5.ttf"))); - Assertions.assertEquals(descriptor.getFontName(), "AboriginalSerif"); - Assertions.assertEquals(descriptor.getFullNameLowerCase(), StringNormalizer.toLowerCase("Aboriginal Serif")); - Assertions.assertEquals(descriptor.getFamilyNameLowerCase(), StringNormalizer.toLowerCase("Aboriginal Serif")); + FontProgramDescriptor descriptor = FontProgramDescriptorFactory.fetchDescriptor(StreamUtil.inputStreamToArray(FileUtil.getInputStreamForFile( + FONTS_FOLDER + "PTSerif-Regular.ttf"))); + Assertions.assertEquals("PTSerif-Regular", descriptor.getFontName()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Pt Serif"), descriptor.getFullNameLowerCase()); + Assertions.assertEquals(StringNormalizer.toLowerCase("Pt Serif"), descriptor.getFamilyNameLowerCase()); Assertions.assertEquals(descriptor.getStyle(), "Regular"); Assertions.assertEquals(descriptor.getFontWeight(), 400); } @Test public void testDefaultFontWithReader() throws IOException { - String inputFileName = sourceFolder + "type3Font.pdf"; + String inputFileName = SOURCE_FOLDER + "type3Font.pdf"; try(PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputFileName))) { Assertions.assertNotNull(pdfDoc.getDefaultFont()); @@ -2011,8 +2017,8 @@ public void testDefaultFontWithReader() throws IOException { @Test public void mSungLightFontRanges() throws IOException, InterruptedException { - String filename = destinationFolder + "mSungLightFontRanges.pdf"; - String cmpFilename = sourceFolder + "cmp_mSungLightFontRanges.pdf"; + String filename = DESTINATION_FOLDER + "mSungLightFontRanges.pdf"; + String cmpFilename = SOURCE_FOLDER + "cmp_mSungLightFontRanges.pdf"; PdfWriter writer = CompareTool.createTestPdfWriter(filename); writer.setCompressionLevel(CompressionConstants.NO_COMPRESSION); @@ -2031,13 +2037,13 @@ public void mSungLightFontRanges() throws IOException, InterruptedException { .restoreState(); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(filename, cmpFilename, DESTINATION_FOLDER)); } @Test public void halfWidthFontTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "halfWidthFont.pdf"; - String cmpFileName = sourceFolder + "cmp_halfWidthFont.pdf"; + String outFileName = DESTINATION_FOLDER + "halfWidthFont.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_halfWidthFont.pdf"; String uniEncodings = "UniJIS-UCS2-HW-H UniJIS-UTF16-H UniJIS-UTF32-H " + "UniJIS-UTF8-H UniJIS2004-UTF16-H UniJIS2004-UTF32-H UniJIS2004-UTF8-H " @@ -2065,12 +2071,12 @@ public void halfWidthFontTest() throws IOException, InterruptedException { } } - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff_")); } @Test public void utf16ToUcs2HWFontTest() throws IOException { - String outFileName = destinationFolder + "utf16ToUcs2HWFont.pdf"; + String outFileName = DESTINATION_FOLDER + "utf16ToUcs2HWFont.pdf"; try (PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(outFileName))) { // Surrogate pair @@ -2090,8 +2096,8 @@ public void utf16ToUcs2HWFontTest() throws IOException { @Test public void uniJIS2004UTF16FontTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "uniJIS2004UTF16Font.pdf"; - String cmpFileName = sourceFolder + "cmp_uniJIS2004UTF16Font.pdf"; + String outFileName = DESTINATION_FOLDER + "uniJIS2004UTF16Font.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_uniJIS2004UTF16Font.pdf"; try (PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(outFileName))) { // Surrogate pair @@ -2109,7 +2115,7 @@ public void uniJIS2004UTF16FontTest() throws IOException, InterruptedException { .restoreState(); } - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff_")); } private float getContentWidth(PdfType3Font type3, char glyph) { diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfIndirectReferenceTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfIndirectReferenceTest.java index 56e89f6a23..ddd3298221 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfIndirectReferenceTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfIndirectReferenceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTest.java index 7a4fe57355..edd62c608b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTreeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTreeTest.java index 298f7f6323..1902a0ffb3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTreeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNameTreeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNumberTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNumberTest.java index 5e23cac869..f79cbf1efc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNumberTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfNumberTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectReleaseTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectReleaseTest.java index f87862e938..5aa02526bc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectReleaseTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectReleaseTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectStreamUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectStreamUnitTest.java index 66fd7a2d40..894ba055c0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectStreamUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectStreamUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectTest.java index c9302b753e..85e01aff49 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectUnitTest.java index 2116d0eee0..1f1eb78368 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectWrapperUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectWrapperUnitTest.java index 4ce2b0bb2f..aebe864c47 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectWrapperUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfObjectWrapperUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutlineTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutlineTest.java index 6b4d03d99d..a52ef3e84b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutlineTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutlineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutputStreamTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutputStreamTest.java index e1f58bab19..1f14a89728 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutputStreamTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfOutputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageTest.java index 86820074da..1bff49e107 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageUnitTest.java index 3665cbb4c9..592cf66743 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPageUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTest.java index 1a0f4e58dc..94760cd2aa 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -34,6 +34,8 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.annot.PdfAnnotation; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; +import com.itextpdf.kernel.pdf.layer.PdfLayer; +import com.itextpdf.kernel.pdf.layer.PdfOCProperties; import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; import com.itextpdf.kernel.pdf.xobject.PdfImageXObject; import com.itextpdf.kernel.utils.CompareTool; @@ -772,10 +774,257 @@ public void testPageTreeGenerationWhenFirstPdfPagesHasOnePageOnly() { Assertions.assertEquals(1, pdfDocument.getCatalog().getPageTree().getParents().get(0).getCount()); - // TODO DEVSIX-5575 remove expected exception and add proper assertions - Assertions.assertThrows(NullPointerException.class, () -> pdfDocument.close()); + AssertUtil.doesNotThrow(() -> pdfDocument.close()); } + @Test + public void layerOnAndOffStateTest() { + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); + PdfPage page = pdfDocument.addNewPage(); + + // Create a layer that is ON + PdfLayer layerOn = new PdfLayer("LayerOn", pdfDocument); + layerOn.setOn(true); + + // Create a layer that is OFF + PdfLayer layerOff = new PdfLayer("LayerOff", pdfDocument); + layerOff.setOn(false); + + PdfCanvas canvas = new PdfCanvas(page); + + // Add content to the ON layer + canvas.beginLayer(layerOn); + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(100, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Add content to the OFF layer + canvas.beginLayer(layerOff); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(350, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Verify layer states before closing + Assertions.assertTrue(layerOn.isOn(), "LayerOn should be ON"); + Assertions.assertFalse(layerOff.isOn(), "LayerOff should be OFF"); + + pdfDocument.close(); + } + + @Test + public void layerOnAndOffStatePersistenceTest() throws IOException { + String filename = DESTINATION_FOLDER + "layerStatePersistence.pdf"; + + // Create document with layers + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)); + PdfPage page = pdfDocument.addNewPage(); + + // Create a layer that is ON + PdfLayer layerOn = new PdfLayer("LayerOn", pdfDocument); + layerOn.setOn(true); + + // Create a layer that is OFF + PdfLayer layerOff = new PdfLayer("LayerOff", pdfDocument); + layerOff.setOn(false); + + PdfCanvas canvas = new PdfCanvas(page); + + // Add content to the ON layer + canvas.beginLayer(layerOn); + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(100, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Add content to the OFF layer + canvas.beginLayer(layerOff); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(350, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Verify layer states before closing + Assertions.assertTrue(layerOn.isOn(), "LayerOn should be ON before close"); + Assertions.assertFalse(layerOff.isOn(), "LayerOff should be OFF before close"); + + pdfDocument.close(); + + // Reopen the document and verify layer states are persisted + PdfDocument reopenedDoc = new PdfDocument(new PdfReader(filename)); + + Assertions.assertEquals(2, reopenedDoc.getPage(1).getPdfLayers().size()); + + // Find the layers by name and verify their states + PdfLayer reopenedLayerOn = null; + PdfLayer reopenedLayerOff = null; + + for (PdfLayer layer : reopenedDoc.getPage(1).getPdfLayers()) { + String layerName = layer.getPdfObject().getAsString(PdfName.Name).getValue(); + if ("LayerOn".equals(layerName)) { + reopenedLayerOn = layer; + } else if ("LayerOff".equals(layerName)) { + reopenedLayerOff = layer; + } + } + + + Assertions.assertNotNull(reopenedLayerOn, "LayerOn should exist after reopening"); + Assertions.assertNotNull(reopenedLayerOff, "LayerOff should exist after reopening"); + + Assertions.assertTrue(reopenedLayerOn.isOn(), "LayerOn should be ON after reopening"); + Assertions.assertFalse(reopenedLayerOff.isOn(), "LayerOff should be OFF after reopening"); + + reopenedDoc.close(); + } + + @Test + public void layerPropertiesPersistenceTest() throws IOException { + String filename = DESTINATION_FOLDER + "layerPropertiesPersistence.pdf"; + + // Create document with layers + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)); + PdfPage page = pdfDocument.addNewPage(); + + // Create a layer that is ON + PdfLayer layerOn = new PdfLayer("LayerOn", pdfDocument); + layerOn.setOn(true); + layerOn.setOnPanel(true); + layerOn.setLocked(true); + + PdfLayer childLayer = new PdfLayer("ChildLayer", pdfDocument); + childLayer.setOn(false); + layerOn.addChild(childLayer); + + // Create a layer that is OFF + PdfLayer layerOff = new PdfLayer("LayerOff", pdfDocument); + layerOff.setOn(false); + layerOff.setOnPanel(false); + layerOff.setLocked(true); + + PdfCanvas canvas = new PdfCanvas(page); + + // Add content to the ON layer + canvas.beginLayer(layerOn); + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(100, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Add content to the OFF layer + canvas.beginLayer(layerOff); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(350, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + pdfDocument.close(); + + // Reopen the document and verify layer states are persisted + PdfDocument reopenedDoc = new PdfDocument(new PdfReader(filename)); + + Assertions.assertEquals(2, reopenedDoc.getPage(1).getPdfLayers().size()); + + // Find the layers by name and verify their states + PdfLayer reopenedLayerOn = null; + PdfLayer reopenedLayerOff = null; + + for (PdfLayer layer : reopenedDoc.getPage(1).getPdfLayers()) { + String layerName = layer.getPdfObject().getAsString(PdfName.Name).getValue(); + if ("LayerOn".equals(layerName)) { + reopenedLayerOn = layer; + } else if ("LayerOff".equals(layerName)) { + reopenedLayerOff = layer; + } + } + + Assertions.assertNotNull(reopenedLayerOn, "LayerOn should exist after reopening"); + Assertions.assertNotNull(reopenedLayerOff, "LayerOff should exist after reopening"); + + Assertions.assertTrue(reopenedLayerOn.isOn()); + Assertions.assertTrue(reopenedLayerOn.isOnPanel()); + Assertions.assertTrue(reopenedLayerOn.isLocked()); + Assertions.assertEquals(1, reopenedLayerOn.getChildren().size()); + Assertions.assertFalse(reopenedLayerOn.getChildren().get(0).isOn()); + + Assertions.assertFalse(reopenedLayerOff.isOn()); + Assertions.assertFalse(reopenedLayerOff.isOnPanel()); + Assertions.assertTrue(reopenedLayerOff.isLocked()); + + reopenedDoc.close(); + } + + @Test + public void layerOnAndOffStatePersistenceViaOCPropertiesTest() throws IOException { + String filename = DESTINATION_FOLDER + "layerStatePersistenceViaOCProperties.pdf"; + + // Create document with layers + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)); + PdfPage page = pdfDocument.addNewPage(); + + // Create a layer that is ON + PdfLayer layerOn = new PdfLayer("LayerOn", pdfDocument); + layerOn.setOn(true); + + // Create a layer that is OFF + PdfLayer layerOff = new PdfLayer("LayerOff", pdfDocument); + layerOff.setOn(false); + + PdfCanvas canvas = new PdfCanvas(page); + + // Add content to the ON layer + canvas.beginLayer(layerOn); + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(100, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Add content to the OFF layer + canvas.beginLayer(layerOff); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(350, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + // Verify layer states before closing + Assertions.assertTrue(layerOn.isOn(), "LayerOn should be ON before close"); + Assertions.assertFalse(layerOff.isOn(), "LayerOff should be OFF before close"); + + pdfDocument.close(); + + // Reopen the document and verify layer states are persisted via OCProperties + PdfDocument reopenedDoc = new PdfDocument(new PdfReader(filename)); + + PdfOCProperties ocProperties = reopenedDoc.getCatalog().getOCProperties(false); + Assertions.assertNotNull(ocProperties, "OCProperties should exist after reopening"); + + List layers = ocProperties.getLayers(); + Assertions.assertEquals(2, layers.size(), "Should have 2 layers"); + + // Find the layers by name and verify their states + PdfLayer reopenedLayerOn = null; + PdfLayer reopenedLayerOff = null; + + for (PdfLayer layer : layers) { + String layerName = layer.getPdfObject().getAsString(PdfName.Name).getValue(); + if ("LayerOn".equals(layerName)) { + reopenedLayerOn = layer; + } else if ("LayerOff".equals(layerName)) { + reopenedLayerOff = layer; + } + } + + Assertions.assertNotNull(reopenedLayerOn, "LayerOn should be found after reopening"); + Assertions.assertNotNull(reopenedLayerOff, "LayerOff should be found after reopening"); + + Assertions.assertTrue(reopenedLayerOn.isOn(), "LayerOn should still be ON after reopening"); + Assertions.assertFalse(reopenedLayerOff.isOn(), "LayerOff should still be OFF after reopening"); + + reopenedDoc.close(); + } + + private static void findAndAssertNullPages(PdfDocument pdfDocument, Set nullPages) { for (Integer nullPage : nullPages) { int pageNum = (int)nullPage; @@ -832,7 +1081,7 @@ private static ByteArrayOutputStream createSourceDocumentWithEmptyAnnotation(Byt } } - private class CustomPdfReader extends PdfReader { + private static class CustomPdfReader extends PdfReader { public boolean pagesAreRead = false; diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTreeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTreeTest.java index 521a51e169..7f8dff09d9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTreeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPagesTreeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPrimitivesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPrimitivesTest.java index f422135111..57890bece5 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPrimitivesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfPrimitivesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderDecodeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderDecodeTest.java index a7dcad6c35..3457d6f676 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderDecodeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderDecodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderTest.java index 664d4c1db0..321e2e0232 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderUnitTest.java index 2c18c974b9..7fb2a2eb25 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfReaderUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -69,4 +69,4 @@ public void readObjectInvalidObjectStreamNumberTest() throws java.io.IOException Assertions.assertEquals(MessageFormatUtil.format( KernelExceptionMessageConstant.INVALID_OBJECT_STREAM_NUMBER, 20, 5, 0), e.getMessage()); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfResourcesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfResourcesTest.java index 70ae7ffdbf..8e7b7a6c5b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfResourcesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfResourcesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfRevisionsReaderTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfRevisionsReaderTest.java index e7ef45fa61..ff7854a08b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfRevisionsReaderTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfRevisionsReaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStampingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStampingTest.java index 85f771bef6..e4ba7a355c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStampingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStampingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamDecodeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamDecodeTest.java index a7114bf01c..c24f6410ef 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamDecodeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamDecodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamTest.java index 1fe65511a4..425bdcfaa6 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamUnitTest.java index a720e09cf8..4b01ec2b5d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStreamUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStringTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStringTest.java index 828800499c..436139acfc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStringTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructElemTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructElemTest.java index 04343efa73..4bf8ed62e8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructElemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructElemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootTest.java index 233b22e34f..5fb1b3d61d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootUnitTest.java index c6e3ab4ff7..7d1d76c165 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfStructTreeRootUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTextArrayTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTextArrayTest.java index 635d36e347..a467110b1e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTextArrayTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTextArrayTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTokenizerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTokenizerTest.java index 8aecff704e..2bcc542500 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTokenizerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfTokenizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfType0FontIntegrationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfType0FontIntegrationTest.java index a0ae15066d..43e711ab6c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfType0FontIntegrationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfType0FontIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -39,7 +39,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfType0FontIntegrationTest extends ExtendedITextTest { private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/PdfType0FontIntegrationTest/"; - private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/PdfType0FontIntegrationTest/"; private static final String[] CHINESE = new String[] { diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfUAConformanceTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfUAConformanceTest.java index 0c5aeaf280..2506db1c27 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfUAConformanceTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfUAConformanceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesTest.java index 6c3166cfb1..694c64051c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesUnitTest.java index 9364b93c92..d3e3444e49 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfViewerPreferencesUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfWriterTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfWriterTest.java index fc977f9102..9049575c54 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfWriterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfWriterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXObjectTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXObjectTest.java index c52c47440f..1f2ce62e8d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXObjectTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableTest.java index acd0669d5b..856c31052d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -35,6 +35,7 @@ This file is part of the iText (R) project. import com.itextpdf.test.annotations.LogMessage; import com.itextpdf.test.annotations.LogMessages; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.jupiter.api.AfterAll; @@ -99,6 +100,37 @@ public void openWithWriterInvalidDocWithHugeRefTest() { Assertions.assertEquals(KernelExceptionMessageConstant.XREF_STRUCTURE_SIZE_EXCEEDED_THE_LIMIT, e.getMessage()); } + @Test + public void stampingModeDoesNotApplyXrefSizeLimitToNewContentTest() { + // Phase 1: create a small valid base PDF in memory. + ByteArrayOutputStream baseBaos = new ByteArrayOutputStream(); + try (PdfDocument baseDoc = new PdfDocument(new PdfWriter(baseBaos))) { + baseDoc.addNewPage(); + } + + // Phase 2: open in stamping mode with a strict xref limit for the ORIGINAL content. + MemoryLimitsAwareHandler handler = new MemoryLimitsAwareHandler(); + handler.setMaxNumberOfElementsInXrefStructure(30); + + byte[] baseBytes = baseBaos.toByteArray(); + ByteArrayOutputStream stampedBaos = new ByteArrayOutputStream(); + + AssertUtil.doesNotThrow(() -> { + try (PdfDocument stampingDoc = new PdfDocument( + new PdfReader(new ByteArrayInputStream(baseBytes), + new ReaderProperties().setMemoryLimitsAwareHandler(handler)), + new PdfWriter(stampedBaos))) { + + // Phase 3: add a lot of new content that will force xref growth beyond the configured limit. + // The xref size limit should NOT be applied to newly added content in stamping mode. + for (int i = 0; i < 200; i++) { + stampingDoc.addNewPage(); + } + } + }); + } + + @Test public void testCreateAndUpdateXMP() throws IOException, XMPException { String created = DESTINATION_FOLDER + "testCreateAndUpdateXMP_create.pdf"; diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableUnitTest.java index 877371acca..173d05f7a4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/PdfXrefTableUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -69,6 +69,28 @@ public void checkNumberOfIndirectObjectsWithFreeReferencesTest() { Assertions.assertTrue(table.get(freeReferenceNumber).isFree()); } + @Test + public void xrefSizeLimitIsNotAppliedAfterReadingCompletedTest() { + final MemoryLimitsAwareHandler memoryLimitsAwareHandler = new MemoryLimitsAwareHandler(); + memoryLimitsAwareHandler.setMaxNumberOfElementsInXrefStructure(5); + + final PdfXrefTable xrefTable = new PdfXrefTable(5, memoryLimitsAwareHandler); + + // Simulate that original document xref reading/building has finished (stamping scenario). + xrefTable.markReadingCompleted(); + + // After reading is completed, growing xref due to new content must not be blocked by the limit. + AssertUtil.doesNotThrow(() -> xrefTable.setCapacity(100)); + + // Also ensure adding new refs beyond the original limit doesn't throw. + AssertUtil.doesNotThrow(() -> { + for (int i = 1; i <= 50; i++) { + xrefTable.add(new PdfIndirectReference(null, i)); + } + }); + } + + @Test public void checkNumberOfIndirectObjectsWithRandomNumbersTest() { PdfXrefTable table = new PdfXrefTable(); diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/ReaderPropertiesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/ReaderPropertiesTest.java index 0e7c1fbaa1..027915451c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/ReaderPropertiesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/ReaderPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/ReorderPagesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/ReorderPagesTest.java index 9be76c8151..58f864995c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/ReorderPagesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/ReorderPagesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializerTest.java index acc6facb5e..86cabe1df0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModePdfObjectsSerializerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModeTest.java index 0c71333446..70fb839851 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/SmartModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/StampingPropertiesUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/StampingPropertiesUnitTest.java new file mode 100644 index 0000000000..c2ec676130 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/StampingPropertiesUnitTest.java @@ -0,0 +1,64 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.pdf; + +import com.itextpdf.test.ExtendedITextTest; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("UnitTest") +public class StampingPropertiesUnitTest extends ExtendedITextTest { + + @Test + public void basicStampingPropertiesTest() { + StampingProperties stampingProperties = new StampingProperties(); + + Assertions.assertFalse(stampingProperties.appendMode); + Assertions.assertFalse(stampingProperties.disableMac); + Assertions.assertFalse(stampingProperties.preserveEncryption); + + stampingProperties.useAppendMode(); + stampingProperties.disableMac(); + stampingProperties.preserveEncryption(); + + Assertions.assertTrue(stampingProperties.appendMode); + Assertions.assertTrue(stampingProperties.disableMac); + Assertions.assertTrue(stampingProperties.preserveEncryption); + } + + @Test + public void copiedStampingPropertiesTest() { + StampingProperties stampingProperties = new StampingProperties(); + stampingProperties.useAppendMode(); + stampingProperties.disableMac(); + stampingProperties.preserveEncryption(); + + StampingProperties copiedProperties = new StampingProperties(stampingProperties); + + Assertions.assertTrue(copiedProperties.appendMode); + Assertions.assertTrue(copiedProperties.disableMac); + Assertions.assertTrue(copiedProperties.preserveEncryption); + } +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/TagTreePointerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/TagTreePointerTest.java index 85540374ea..d02d3d312c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/TagTreePointerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/TagTreePointerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/TrailerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/TrailerTest.java index dd6a9933e8..e901056249 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/TrailerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/TrailerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/XMPMetadataTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/XMPMetadataTest.java index 2095d18a44..6c31df62f1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/XMPMetadataTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/XMPMetadataTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/XrefStreamDocumentUpdatesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/XrefStreamDocumentUpdatesTest.java index d88016c6a8..80beb9aeb0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/XrefStreamDocumentUpdatesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/XrefStreamDocumentUpdatesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfActionOcgStateTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfActionOcgStateTest.java index 052e7822ca..ebcd578e9f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfActionOcgStateTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfActionOcgStateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActionsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActionsTest.java index 70b4136d29..5d633ddddc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActionsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfAnnotationAdditionalActionsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfTargetTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfTargetTest.java index be4d240a49..c083659550 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfTargetTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfTargetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfWinTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfWinTest.java index a6d6581a1b..6da3eaa572 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfWinTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/action/PdfWinTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddLinkAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddLinkAnnotationTest.java index 11a49460d1..8074797231 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddLinkAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddLinkAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddMiscTypesAnnotationsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddMiscTypesAnnotationsTest.java index 20bdb32971..286d92b260 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddMiscTypesAnnotationsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddMiscTypesAnnotationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddScreenAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddScreenAnnotationTest.java index 0506a1dd83..210b77bda8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddScreenAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddScreenAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddSoundAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddSoundAnnotationTest.java index 65380eaefd..c42e6021d8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddSoundAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddSoundAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddTextMarkupAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddTextMarkupAnnotationTest.java index aadf9668b4..c0cc59d680 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddTextMarkupAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/AddTextMarkupAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/CopyAnnotationsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/CopyAnnotationsTest.java index 255682ce32..2eb17ec1a0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/CopyAnnotationsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/CopyAnnotationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotationTest.java index 18da71dbc7..6b8b1764e4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/Pdf3DAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationMakeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationMakeTest.java index 8a84457389..88346009a3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationMakeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfAnnotationMakeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotationTest.java index b4fb88492d..4681736aa4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfFreeTextAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotationTest.java index 5a28ce3ae0..6cced32482 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfLineAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotationTest.java index 7868654d80..5c264ec5eb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfMarkupAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotationTest.java index 353105a7e0..f56b648f00 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfPolyGeomAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotationTest.java index 4e28d02823..fb4d694fd9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/annot/PdfStampAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CanvasTagTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CanvasTagTest.java index 0591e2f469..c60fb9394a 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CanvasTagTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CanvasTagTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CharacterRenderInfoTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CharacterRenderInfoTest.java index 1af80881ee..993a0352a2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CharacterRenderInfoTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/CharacterRenderInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/ImageMasksTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/ImageMasksTest.java index 4c6ac7ddfb..29092d0cb8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/ImageMasksTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/ImageMasksTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasColorTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasColorTest.java index 11ad049cb1..1e3b0b6705 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasColorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasColorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest.java index 32a59153f2..38c1491395 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,29 +44,29 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfCanvasGlyphlineShowTextTest extends ExtendedITextTest { - public static final String destinationFolder = TestUtil.getOutputPath() + "/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest/"; - public static final String fontsFolder = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/canvas/PdfCanvasGlyphlineShowTextTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(destinationFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } @Test public void notoSerifWithInvalidXYPlacementAnchorDeltaTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "notoSerifWithInvalidXYPlacementAnchorDeltaTest.pdf"; - String cmpPdf = sourceFolder + "cmp_notoSerifWithInvalidXYPlacementAnchorDeltaTest.pdf"; + String outPdf = DESTINATION_FOLDER + "notoSerifWithInvalidXYPlacementAnchorDeltaTest.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp_notoSerifWithInvalidXYPlacementAnchorDeltaTest.pdf"; PdfDocument pdfDoc = new PdfDocument(CompareTool.createTestPdfWriter(outPdf)); PdfPage page = pdfDoc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "NotoSerif-Regular_v1.7.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSerif-Regular_v1.7.ttf", PdfEncodings.IDENTITY_H); // ゙B̸̭̼ͣ̎̇ List glyphs = Arrays.asList( @@ -94,7 +94,7 @@ public void notoSerifWithInvalidXYPlacementAnchorDeltaTest() throws IOException, pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER)); } private Glyph applyGlyphParameters(char glyphUni, int anchorDelta, int xPlacement, int yPlacement, PdfFont font) { diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasInlineImagesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasInlineImagesTest.java index eae4a7543c..420d45737a 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasInlineImagesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasInlineImagesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasTest.java index 667d4d25e8..b60de86308 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -93,7 +93,7 @@ public class PdfCanvasTest extends ExtendedITextTest { private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/canvas/PdfCanvasTest/"; private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/canvas/PdfCanvasTest/"; - private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; private static final String AUTHOR = "iText Software"; diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasUnitTest.java index eec41697e6..4b9ddf36e3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasXObjectTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasXObjectTest.java index 32479951e0..55408dd13c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasXObjectTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/PdfCanvasXObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/TextRenderInfoUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/TextRenderInfoUnitTest.java index 36ecb9c763..292e7a69c3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/TextRenderInfoUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/TextRenderInfoUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLineTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLineTest.java index ad015bf9de..63f186efcb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLineTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DashedLineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLineTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLineTest.java index 776517c80e..ce322e798a 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLineTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/DottedLineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLineTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLineTest.java index 429917a10c..ebcfcc168c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLineTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/draw/SolidLineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/BidiTextExtractionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/BidiTextExtractionTest.java index f3932fb7e7..a95be21199 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/BidiTextExtractionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/BidiTextExtractionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredEventListenerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredEventListenerTest.java index a38641e403..fadadd49a2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredEventListenerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredEventListenerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredTextEventListenerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredTextEventListenerTest.java index 09ecf9e00a..bcc738b789 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredTextEventListenerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/FilteredTextEventListenerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphBboxCalculationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphBboxCalculationTest.java index fa8f9b18ba..0aef50ffab 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphBboxCalculationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphBboxCalculationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphTextEventListenerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphTextEventListenerTest.java index d1cd1bc418..5ccc2ed0ae 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphTextEventListenerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/GlyphTextEventListenerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/HighlightItemsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/HighlightItemsTest.java index 00c61bf302..0f38ec129d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/HighlightItemsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/HighlightItemsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/IndicTextExtractionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/IndicTextExtractionTest.java index 1f42500f7a..baa9ba284a 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/IndicTextExtractionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/IndicTextExtractionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/InlineImageExtractionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/InlineImageExtractionTest.java index a13828e6ad..2c221fd698 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/InlineImageExtractionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/InlineImageExtractionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/LocationExtractTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/LocationExtractTest.java index ba82e7bd30..1d58449ff0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/LocationExtractTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/LocationExtractTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorIntegrationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorIntegrationTest.java index 753c81977c..4e18fe47d6 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorIntegrationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,9 +22,7 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.pdf.canvas.parser; -import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.io.source.ByteArrayOutputStream; -import com.itextpdf.kernel.colors.Color; import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.geom.Matrix; import com.itextpdf.kernel.logs.KernelLogMessageConstant; @@ -137,7 +135,7 @@ public void testClosingEmptyPath() throws IOException { } @Test - @LogMessages(messages = @LogMessage(messageTemplate = IoLogMessageConstant.FAILED_TO_PROCESS_A_TRANSFORMATION_MATRIX, count = 1)) + @LogMessages(messages = @LogMessage(messageTemplate = KernelLogMessageConstant.FAILED_TO_PROCESS_A_TRANSFORMATION_MATRIX, count = 1)) public void testNoninvertibleMatrix() throws IOException { String fileName = "noninvertibleMatrix.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfReader(SOURCE_FOLDER + fileName)); @@ -166,26 +164,6 @@ public void parseCircularReferencesInResourcesTest() throws IOException { } } - @Test - @LogMessages(messages = @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_COLOR_WITHIN_COLORSPACE)) - public void patternColorParsingNotValidPdfTest() throws IOException { - String inputFile = SOURCE_FOLDER + "patternColorParsingNotValidPdfTest.pdf"; - PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputFile)); - - for (int i = 1; i <= pdfDocument.getNumberOfPages(); ++i) { - PdfPage page = pdfDocument.getPage(i); - - ColorParsingEventListener colorParsingEventListener = new ColorParsingEventListener(); - - PdfCanvasProcessor processor = new PdfCanvasProcessor(colorParsingEventListener); - processor.processPageContent(page); - - Color renderInfo = colorParsingEventListener.getEncounteredPath().getFillColor(); - - Assertions.assertNull(renderInfo); - } - } - @Test public void patternColorParsingValidPdfTest() throws IOException { String inputFile = SOURCE_FOLDER + "patternColorParsingValidPdfTest.pdf"; @@ -256,6 +234,85 @@ public void withPageResourcesStreamTest() throws IOException { Assertions.assertEquals(listener.getResultantText(), "test 1\ntest 2"); } + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void smallerNumberOfOperandsTmTest() throws IOException { + SimpleTextExtractionStrategy listener = new SimpleTextExtractionStrategy(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File(SOURCE_FOLDER + "smallerNumberOfOperandsTm.pdf")))) { + parser.processPageContent(pdfDocument.getPage(1)); + } + Assertions.assertEquals("ABCD", listener.getResultantText()); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void biggerNumberOfOperandsTmTest() throws IOException { + SimpleTextExtractionStrategy listener = new SimpleTextExtractionStrategy(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File(SOURCE_FOLDER + "biggerNumberOfOperandsTm.pdf")))) { + parser.processPageContent(pdfDocument.getPage(1)); + } + Assertions.assertEquals("ABCD", listener.getResultantText()); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void smallerNumberOfOperandsMTest() throws IOException { + LocationTextExtractionStrategy listener = new LocationTextExtractionStrategy(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File(SOURCE_FOLDER + "smallerNumberOfOperandsM.pdf")))) { + parser.processPageContent(pdfDocument.getPage(1)); + } + Assertions.assertEquals("ABCD", listener.getResultantText()); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void biggerNumberOfOperandsMTest() throws IOException { + LocationTextExtractionStrategy listener = new LocationTextExtractionStrategy(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File(SOURCE_FOLDER + "biggerNumberOfOperandsM.pdf")))) { + parser.processPageContent(pdfDocument.getPage(1)); + } + Assertions.assertEquals("ABCD", listener.getResultantText()); + } + + @Test + public void coloredPatternTest() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "coloredPatternParsingTest.pdf")); + ColorParsingEventListener listener = new ColorParsingEventListener(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + AssertUtil.doesNotThrow(()-> + parser.processPageContent(pdfDoc.getFirstPage())); + pdfDoc.close(); + PathRenderInfo renderInfo = listener.getEncounteredPath(); + PdfColorSpace colorSpace = renderInfo.getGraphicsState().getFillColor().getColorSpace(); + + Assertions.assertEquals("Pattern", colorSpace.getName().getValue()); + } + + @Test + public void unColoredPatternTest() throws IOException { + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + "unColoredPatternParsingTest.pdf")); + ColorParsingEventListener listener = new ColorParsingEventListener(); + PdfCanvasProcessor parser = new PdfCanvasProcessor(listener); + AssertUtil.doesNotThrow(()-> + parser.processPageContent(pdfDoc.getFirstPage())); + pdfDoc.close(); + PathRenderInfo renderInfo = listener.getEncounteredPath(); + PdfColorSpace colorSpace = renderInfo.getGraphicsState().getFillColor().getColorSpace(); + Assertions.assertEquals("UncoloredTilingPattern",colorSpace.getName().getValue() ); + } + private static class ColorParsingEventListener implements IEventListener { private List content = new ArrayList<>(); private static final String pathDataExpected = "Path data expected."; diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorUnitTest.java index 94971d3a61..ef0910a9cf 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfCanvasProcessorUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,16 +22,26 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.pdf.canvas.parser; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; import com.itextpdf.kernel.pdf.PdfDictionary; +import com.itextpdf.kernel.pdf.PdfLiteral; import com.itextpdf.kernel.pdf.PdfName; +import com.itextpdf.kernel.pdf.PdfNumber; import com.itextpdf.kernel.pdf.PdfObject; import com.itextpdf.kernel.pdf.canvas.parser.listener.FilteredEventListener; +import com.itextpdf.kernel.pdf.canvas.parser.listener.LocationTextExtractionStrategy; +import com.itextpdf.kernel.pdf.canvas.parser.listener.SimpleTextExtractionStrategy; +import com.itextpdf.test.AssertUtil; import com.itextpdf.test.ExtendedITextTest; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Tag; +import com.itextpdf.test.annotations.LogMessage; +import com.itextpdf.test.annotations.LogMessages; +import java.util.ArrayList; import java.util.Collections; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("UnitTest") public class PdfCanvasProcessorUnitTest extends ExtendedITextTest { @@ -48,4 +58,75 @@ protected void beginMarkedContent(PdfName tag, PdfDictionary dict) { processor.registerContentOperator("BMC", contentOperator); contentOperator.invoke(processor, null, Collections.singletonList((PdfObject) null)); } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void smallerNumberOfOperandsTmTest1() { + PdfCanvasProcessor processor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy()); + List operands = Collections.singletonList((PdfObject) new PdfLiteral("Tm")); + PdfLiteral operator = new PdfLiteral("Tm"); + AssertUtil.doesNotThrow(() -> processor.invokeOperator(operator, operands)); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void smallerNumberOfOperandsTmTest2() { + PdfCanvasProcessor processor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy()); + List operands = new ArrayList<>(); + operands.add((PdfObject) new PdfNumber(1)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(1)); + operands.add((PdfObject) new PdfLiteral("Tm")); + PdfLiteral operator = new PdfLiteral("Tm"); + AssertUtil.doesNotThrow(() -> processor.invokeOperator(operator, operands)); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void biggerNumberOfOperandsTmTest() { + PdfCanvasProcessor processor = new PdfCanvasProcessor(new SimpleTextExtractionStrategy()); + List operands = new ArrayList<>(); + operands.add((PdfObject) new PdfNumber(1)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(1)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(0)); + operands.add((PdfObject) new PdfNumber(10)); + operands.add((PdfObject) new PdfLiteral("Tm")); + PdfLiteral operator = new PdfLiteral("Tm"); + AssertUtil.doesNotThrow(() -> processor.invokeOperator(operator, operands)); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void smallerNumberOfOperandsMTest() { + PdfCanvasProcessor processor = new PdfCanvasProcessor(new LocationTextExtractionStrategy()); + List operands = Collections.singletonList((PdfObject) new PdfLiteral("M")); + PdfLiteral operator = new PdfLiteral("M"); + AssertUtil.doesNotThrow(() -> processor.invokeOperator(operator, operands)); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = KernelLogMessageConstant.UNABLE_TO_PARSE_OPERATOR_WRONG_NUMBER_OF_OPERANDS) + }) + public void biggerNumberOfOperandsMTest() { + PdfCanvasProcessor processor = new PdfCanvasProcessor(new LocationTextExtractionStrategy()); + List operands = new ArrayList<>(); + operands.add((PdfObject) new PdfNumber(10)); + operands.add((PdfObject) new PdfNumber(10)); + operands.add((PdfObject) new PdfLiteral("M")); + PdfLiteral operator = new PdfLiteral("M"); + AssertUtil.doesNotThrow(() -> processor.invokeOperator(operator, operands)); + } } diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfContentExtractionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfContentExtractionTest.java index 855967582f..aaef20a9c5 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfContentExtractionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfContentExtractionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorTest.java index 045ec9bda8..42c5dafbde 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,17 +22,17 @@ This file is part of the iText (R) project. */ package com.itextpdf.kernel.pdf.canvas.parser; -import com.itextpdf.io.logs.IoLogMessageConstant; +import com.itextpdf.kernel.logs.KernelLogMessageConstant; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.annotations.LogMessage; import com.itextpdf.test.annotations.LogMessages; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Tag; import java.io.IOException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("IntegrationTest") public class PdfTextExtractorTest extends ExtendedITextTest { @@ -40,7 +40,7 @@ public class PdfTextExtractorTest extends ExtendedITextTest { private static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/parser/PdfTextExtractorTest/"; @Test - @LogMessages(messages = @LogMessage(messageTemplate = IoLogMessageConstant.PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY)) + @LogMessages(messages = @LogMessage(messageTemplate = KernelLogMessageConstant.PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY)) public void noSpecifiedDictionaryInPropertiesTest() throws IOException { String inFile = sourceFolder + "noSpecifiedDictionaryInProperties.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFile))) { @@ -51,7 +51,7 @@ public void noSpecifiedDictionaryInPropertiesTest() throws IOException { } @Test - @LogMessages(messages = @LogMessage(messageTemplate = IoLogMessageConstant.PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY)) + @LogMessages(messages = @LogMessage(messageTemplate = KernelLogMessageConstant.PDF_REFERS_TO_NOT_EXISTING_PROPERTY_DICTIONARY)) public void noPropertiesInResourcesTest() throws IOException { String inFile = sourceFolder + "noPropertiesInResources.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfReader(inFile))) { diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorUnicodeIdentityTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorUnicodeIdentityTest.java index 2742018386..6d202f7eb0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorUnicodeIdentityTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/PdfTextExtractorUnicodeIdentityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/SimpleFontToUnicodeExtractionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/SimpleFontToUnicodeExtractionTest.java index 88ac157143..19a6a397ab 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/SimpleFontToUnicodeExtractionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/SimpleFontToUnicodeExtractionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextExtractIllegalDifferencesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextExtractIllegalDifferencesTest.java index 61141edcab..836e1d9d79 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextExtractIllegalDifferencesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextExtractIllegalDifferencesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextMarginFinderTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextMarginFinderTest.java index 02e06244d2..ac6764159f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextMarginFinderTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextMarginFinderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextRenderInfoTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextRenderInfoTest.java index 2c8dfde713..c7debf0f53 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextRenderInfoTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/TextRenderInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridgeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridgeTest.java index 92fcbf7f40..68979d7000 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridgeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/ClipperBridgeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/LongRectTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/LongRectTest.java index 7f88d36f65..932b827f57 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/LongRectTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/LongRectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PointTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PointTest.java index 0c44ffc6e4..ca7a762c1f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PointTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PointTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyNodeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyNodeTest.java index 6ef3663a93..bea6361f73 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyNodeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyNodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyTreeTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyTreeTest.java index fd8c14afda..5163d1b8ab 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyTreeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/clipper/PolyTreeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfoTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfoTest.java index 42ffc1d2fc..e4b92b206b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfoTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/data/ImageRenderInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategyTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategyTest.java index 19b7d4b6cb..d8f01e2a82 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategyTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/listener/RegexBasedLocationExtractionStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtilsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtilsTest.java index ae8487e794..ee90633f97 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtilsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/InlineImageParsingUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParserTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParserTest.java index dd55ee2e38..d71ecfa028 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParserTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/parser/util/PdfCanvasParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDoUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDoUnitTest.java index 68dcb9605c..51dde94ce9 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDoUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/canvas/wmf/MetaDoUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionFieldTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionFieldTest.java index cdbaf97488..5fca18f2ac 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionFieldTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItemTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItemTest.java index 7cdc304575..6eee7d8949 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchemaTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchemaTest.java index dc21ba2a5d..6a81883e3b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchemaTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSchemaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSortTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSortTest.java index 95e2364073..848539d527 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSortTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/collection/PdfCollectionSortTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/CreateShadingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/CreateShadingTest.java index 7782494319..485b2a5533 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/CreateShadingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/CreateShadingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCsUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCsUnitTest.java index eacf602164..a3c0289513 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCsUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfCieBasedCsUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingDocumentTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingDocumentTest.java index b60a377f21..2ca139a687 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingDocumentTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingDocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingParameterizedTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingParameterizedTest.java index 4a54ba1847..ca07e8c5cb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingParameterizedTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingParameterizedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingTest.java index 4fec27f445..5ea60e6f3d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/colorspace/PdfShadingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfAnnotationCopyingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfAnnotationCopyingTest.java index ae25d93d33..132c4264fb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfAnnotationCopyingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfAnnotationCopyingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfDestinationCopyingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfDestinationCopyingTest.java index 45182ccf17..02b0568e30 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfDestinationCopyingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/copy/PdfDestinationCopyingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/event/PdfDocumentEventHandlingTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/event/PdfDocumentEventHandlingTest.java index 76cd1f51d3..5438d1845d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/event/PdfDocumentEventHandlingTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/event/PdfDocumentEventHandlingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilterTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilterTest.java index ef71c13675..2cf9828446 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCII85DecodeFilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilterTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilterTest.java index 6db4e96e36..a42288f25f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/ASCIIHexDecodeFilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterIntegrationTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterIntegrationTest.java index 3a09a7ee69..ff630c96ed 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterIntegrationTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -96,4 +96,4 @@ public void decodeBrotliContentStreamWithWrongDecodeParamsTest() throws java.io. exception.getMessage()); } } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterTest.java index 70cb66ecd7..068bd72ccf 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/BrotliFilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -240,4 +240,4 @@ private static class NoOpPdfReader extends PdfReader { new ReaderProperties()); } } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilterTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilterTest.java index 32d3affc3d..af977d69dc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/filters/LZWDecodeFilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/AbstractPdfType0FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/AbstractPdfType0FunctionTest.java index 612aead9e3..9f181abb12 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/AbstractPdfType0FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/AbstractPdfType0FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertorsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertorsTest.java index 37408a587b..7d68a9d5e0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertorsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/BaseInputOutPutConvertorsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactoryTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactoryTest.java index c0504af816..a2de8d909c 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactoryTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionUtil.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionUtil.java index 05923bacc2..27c23b8075 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionUtil.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfFunctionUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0FunctionTest.java index 62cf3d9dd5..ed312c4fe7 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order1FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order1FunctionTest.java index 1b49eb3070..347ae2f048 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order1FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order1FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order3FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order3FunctionTest.java index c56ac58e21..a93e2335c2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order3FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType0Order3FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType2FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType2FunctionTest.java index a038b40aab..869d711c29 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType2FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType2FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType3FunctionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType3FunctionTest.java index 4fb76066e5..546d814fbc 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType3FunctionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/PdfType3FunctionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractorTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractorTest.java index 2353cb4943..97fa3f5cd0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/function/utils/SampleExtractorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest.java index 5ea8ba74f5..a36e3ba1f8 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,15 +23,19 @@ This file is part of the iText (R) project. package com.itextpdf.kernel.pdf.layer; import com.itextpdf.io.font.constants.StandardFonts; +import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfName; +import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.utils.CompareTool; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.TestUtil; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import org.junit.jupiter.api.AfterAll; @@ -43,17 +47,17 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfLayerMembershipTest extends ExtendedITextTest{ - public static final String sourceFolder = "./src/test/resources/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/kernel/pdf/layer/PdfLayerMembershipTest/"; + public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/layer/PdfLayerMembershipTest/"; + public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/kernel/pdf/layer/PdfLayerMembershipTest/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @AfterAll public static void afterClass() { - CompareTool.cleanup(destinationFolder); + CompareTool.cleanup(DESTINATION_FOLDER); } @Test @@ -62,8 +66,8 @@ public void enabledVisibilityPolicyAllOnTest() throws IOException, InterruptedEx String destPdf = "enabledVisibilityPolicyAllOnTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -79,8 +83,8 @@ public void enabledVisibilityPolicyAllOnTest() throws IOException, InterruptedEx pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @@ -90,8 +94,8 @@ public void disabledVisibilityPolicyAllOnTest() throws IOException, InterruptedE String destPdf = "disabledVisibilityPolicyAllOnTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -107,8 +111,8 @@ public void disabledVisibilityPolicyAllOnTest() throws IOException, InterruptedE pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -117,8 +121,8 @@ public void enabledVisibilityPolicyAllOffTest() throws IOException, InterruptedE String destPdf = "enabledVisibilityPolicyAllOffTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -133,8 +137,8 @@ public void enabledVisibilityPolicyAllOffTest() throws IOException, InterruptedE PdfLayerTestUtils.addTextInsideLayer(layerMembershipAllOff, canvas, "visibilityPolicyAllOffTest", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -143,8 +147,8 @@ public void disabledVisibilityPolicyAllOffTest() throws IOException, Interrupted String destPdf = "disabledVisibilityPolicyAllOffTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -159,8 +163,8 @@ public void disabledVisibilityPolicyAllOffTest() throws IOException, Interrupted PdfLayerTestUtils.addTextInsideLayer(layerMembershipAllOff, canvas, "visibilityPolicyAllOffTest", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -169,8 +173,8 @@ public void enabledVisibilityPolicyAnyOnTest() throws IOException, InterruptedEx String destPdf = "enabledVisibilityPolicyAnyOnTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -186,8 +190,8 @@ public void enabledVisibilityPolicyAnyOnTest() throws IOException, InterruptedEx pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @@ -197,8 +201,8 @@ public void disabledVisibilityPolicyAnyOnTest() throws IOException, InterruptedE String destPdf = "disabledVisibilityPolicyAnyOnTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -214,8 +218,8 @@ public void disabledVisibilityPolicyAnyOnTest() throws IOException, InterruptedE pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @@ -225,8 +229,8 @@ public void enabledVisibilityPolicyAnyOffTest() throws IOException, InterruptedE String destPdf = "enabledVisibilityPolicyAnyOffTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -241,8 +245,8 @@ public void enabledVisibilityPolicyAnyOffTest() throws IOException, InterruptedE PdfLayerTestUtils.addTextInsideLayer(layerMembershipAnyOn, canvas, "visibilityPolicyAnyOffTest", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -251,8 +255,8 @@ public void disabledVisibilityPolicyAnyOffTest() throws IOException, Interrupted String destPdf = "disabledVisibilityPolicyAnyOffTest.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -267,8 +271,8 @@ public void disabledVisibilityPolicyAnyOffTest() throws IOException, Interrupted PdfLayerTestUtils.addTextInsideLayer(layerMembershipAnyOn, canvas, "visibilityPolicyAnyOffTest", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -277,8 +281,8 @@ public void enabledVisualExpressionTest01() throws IOException, InterruptedExcep String destPdf = "enabledVisualExpressionTest01.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -306,8 +310,8 @@ public void enabledVisualExpressionTest01() throws IOException, InterruptedExcep PdfLayerTestUtils.addTextInsideLayer(layerMembershipAnyOn, canvas, "visualExpressionTest01", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); } @Test @@ -316,8 +320,8 @@ public void disabledVisualExpressionTest01() throws IOException, InterruptedExce String destPdf = "disabledVisualExpressionTest01.pdf"; String cmpPdf = "cmp_" + destPdf; - PdfDocument pdfDoc = new PdfDocument(new PdfReader(sourceFolder + srcPdf), - CompareTool.createTestPdfWriter(destinationFolder + destPdf)); + PdfDocument pdfDoc = new PdfDocument(new PdfReader(SOURCE_FOLDER + srcPdf), + CompareTool.createTestPdfWriter(DESTINATION_FOLDER + destPdf)); PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); canvas.setFontAndSize(PdfFontFactory.createFont(StandardFonts.HELVETICA), 18); @@ -345,8 +349,86 @@ public void disabledVisualExpressionTest01() throws IOException, InterruptedExce PdfLayerTestUtils.addTextInsideLayer(layerMembershipAnyOn, canvas, "visualExpressionTest01", 200, 500); pdfDoc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + destPdf, - sourceFolder + cmpPdf, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + destPdf, + SOURCE_FOLDER + cmpPdf, DESTINATION_FOLDER)); + } + + @Test + public void layerPropertiesPersistenceTest() throws IOException { + String filename = DESTINATION_FOLDER + "layerPropertiesPersistence.pdf"; + + // Create document with layers + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(filename)); + PdfPage page = pdfDocument.addNewPage(); + + // Create a layer that is ON + PdfLayer layerOn = new PdfLayer("LayerOn", pdfDocument); + layerOn.setOn(true); + layerOn.setOnPanel(true); + layerOn.setLocked(true); + + PdfLayer childLayer = new PdfLayer("ChildLayer", pdfDocument); + childLayer.setOn(false); + layerOn.addChild(childLayer); + + // Create a layer that is OFF + PdfLayer layerOff = new PdfLayer("LayerOff", pdfDocument); + layerOff.setOn(false); + layerOff.setOnPanel(false); + layerOff.setLocked(true); + + PdfCanvas canvas = new PdfCanvas(page); + + canvas.beginLayer(layerOn); + canvas.setFillColor(ColorConstants.RED); + canvas.rectangle(100, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + canvas.beginLayer(layerOff); + canvas.setFillColor(ColorConstants.BLUE); + canvas.rectangle(350, 100, 200, 200); + canvas.fill(); + canvas.endLayer(); + + pdfDocument.close(); + + // Reopen the document and verify layer states are persisted + PdfDocument reopenedDoc = new PdfDocument(new PdfReader(filename), new PdfWriter(new ByteArrayOutputStream())); + + Assertions.assertEquals(2, reopenedDoc.getPage(1).getPdfLayers().size()); + + PdfLayerMembership reopenedLayerMembership = new PdfLayerMembership(reopenedDoc); + for (PdfLayer layer : reopenedDoc.getCatalog().getOCProperties(false).getLayers()) { + reopenedLayerMembership.addLayer(layer); + } + + // Find the layers by name and verify their states + PdfLayer reopenedLayerOn = null; + PdfLayer reopenedLayerOff = null; + for (PdfLayer layer : reopenedLayerMembership.getLayers()) { + String layerName = layer.getPdfObject().getAsString(PdfName.Name).getValue(); + if ("LayerOn".equals(layerName)) { + reopenedLayerOn = layer; + } else if ("LayerOff".equals(layerName)) { + reopenedLayerOff = layer; + } + } + + Assertions.assertNotNull(reopenedLayerOn, "LayerOn should exist after reopening"); + Assertions.assertNotNull(reopenedLayerOff, "LayerOff should exist after reopening"); + + Assertions.assertTrue(reopenedLayerOn.isOn()); + Assertions.assertTrue(reopenedLayerOn.isOnPanel()); + Assertions.assertTrue(reopenedLayerOn.isLocked()); + Assertions.assertEquals(1, reopenedLayerOn.getChildren().size()); + Assertions.assertFalse(reopenedLayerOn.getChildren().get(0).isOn()); + + Assertions.assertFalse(reopenedLayerOff.isOn()); + Assertions.assertFalse(reopenedLayerOff.isOnPanel()); + Assertions.assertTrue(reopenedLayerOff.isLocked()); + + reopenedDoc.close(); } } diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTest.java index b44246ee29..160188d84e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTestUtils.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTestUtils.java index 9999807c6b..41a9dc793b 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTestUtils.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfLayerTestUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfOCPropertiesUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfOCPropertiesUnitTest.java index e6dd0cdd96..1411be3323 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfOCPropertiesUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfOCPropertiesUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpressionTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpressionTest.java index 01c1561f76..739fe3e67a 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpressionTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/layer/PdfVisibilityExpressionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsTest.java index 71e8616c23..f6bada061f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsUnitTest.java index 382553d075..28e164bbaf 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/NumberOfPagesStatisticsUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsTest.java index 3c15e30d1d..ba4ed88351 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsUnitTest.java index 2341ee040d..4029466f68 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/statistics/SizeOfPdfStatisticsUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandlerUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandlerUnitTest.java index 044d08ab82..3d89f54655 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandlerUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/ParentTreeHandlerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfObjRefUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfObjRefUnitTest.java index 19876ff168..e7538e16f7 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfObjRefUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfObjRefUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructElemUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructElemUnitTest.java index 6ac20f339a..661511d178 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructElemUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructElemUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributesTest.java index 628099db63..8f3430ad6d 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/PdfStructureAttributesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StandardNamespacesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StandardNamespacesTest.java index 05f13c1025..7dba4b1fa4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StandardNamespacesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StandardNamespacesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -40,4 +40,4 @@ public void testHn01() { public void testHn02() { assertFalse(StandardNamespaces.isHnRole("H1,2")); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopierUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopierUnitTest.java index 1a814047c6..13394a2b50 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopierUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagging/StructureTreeCopierUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesTest.java index f505308b52..7aa2ce7399 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/AccessibilityPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelationsTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelationsTest.java index a8ce4bfb50..4d67e71fc0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelationsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/PdfAllowedTagRelationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -62,4 +62,4 @@ public void normalizeRole() { Assertions.assertEquals(PdfAllowedTagRelations.NUMBERED_HEADER, pdfAllowedTagRelations.normalizeRole(StandardRoles.H2)); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContextUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContextUnitTest.java index 83fb50d7bf..b87795b1a3 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContextUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagStructureContextUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorTest.java index cd7b0a51e2..2c3fb17125 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreeIteratorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointerUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointerUnitTest.java index 9bb06867d8..b7e814f7cb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointerUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/tagutils/TagTreePointerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/CreateImageStreamTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/CreateImageStreamTest.java index f686a082c9..ffd70a8ef2 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/CreateImageStreamTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/CreateImageStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest.java index 19d539795f..582a9f1959 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -935,6 +935,11 @@ public void indexed8bitSMaskWithTransparencyTest() throws Exception { testFile("indexed8bitSMask.pdf", "Im0", "png", ".trans", properties); } + @Test + public void oneColorPalletIndexedTest() throws Exception { + testFile("oneColorPalette.pdf", "Im1", "png"); + } + @Test public void separation1bitDeviceCMYKTest() throws Exception { testFile("separation1bitDeviceCMYK.pdf", "Im0", "png"); diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImageFromLanguageStandardLibraryTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImageFromLanguageStandardLibraryTest.java index dcc49d7756..f952501ab4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImageFromLanguageStandardLibraryTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImageFromLanguageStandardLibraryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfoTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfoTest.java index bbb1375e3e..9797399d51 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfoTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/ImagePdfBytesInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObjectTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObjectTest.java index 06d01766eb..eeb8949727 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObjectTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfImageXObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfXObjectUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfXObjectUnitTest.java index a864046dfc..8cb8bf9271 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfXObjectUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/pdf/xobject/PdfXObjectUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/BitmapImagePixelsTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/BitmapImagePixelsTest.java index 63c18fc838..cb37285bde 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/BitmapImagePixelsTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/BitmapImagePixelsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolObjectPathTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolObjectPathTest.java index fd1d72a957..088632c132 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolObjectPathTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolObjectPathTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolTest.java index f7ddb4d54d..faf3c071cb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/CompareToolTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PageRangeTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PageRangeTest.java index b8d0696e84..14a9508c1f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PageRangeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PageRangeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfAnnotationFlattenerTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfAnnotationFlattenerTest.java index 7a6b0dd5a2..29fec19130 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfAnnotationFlattenerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfAnnotationFlattenerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfMergerTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfMergerTest.java index b6fd35a511..801c41bbe6 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfMergerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfMergerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterTest.java index fdbe5bf299..8535fb033f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterUnitTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterUnitTest.java index 8f42e28921..db6f54a753 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterUnitTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PdfSplitterUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/PemFileHelper.java b/kernel/src/test/java/com/itextpdf/kernel/utils/PemFileHelper.java index 0cd115abc1..7ca61a1847 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/PemFileHelper.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/PemFileHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainerTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainerTest.java index d0240ce19c..14e4718d57 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/RegisterDefaultDiContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -92,4 +92,4 @@ public ISimpleList createList(PdfDictionary pagesDictionary) { } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/SecurityTestXmlParserFactory.java b/kernel/src/test/java/com/itextpdf/kernel/utils/SecurityTestXmlParserFactory.java index 611db22879..84104cb4df 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/SecurityTestXmlParserFactory.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/SecurityTestXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/TaggedPdfReaderToolTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/TaggedPdfReaderToolTest.java index e0a7b06054..806da5fb9f 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/TaggedPdfReaderToolTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/TaggedPdfReaderToolTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/ValidationContainerTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/ValidationContainerTest.java index 68edeb7bc6..c48ec79ba1 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/ValidationContainerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/ValidationContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/XmlProcessorCreatorSecurityTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/XmlProcessorCreatorSecurityTest.java index eac5505db3..2b2e67a0b7 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/XmlProcessorCreatorSecurityTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/XmlProcessorCreatorSecurityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/XmlUtilsNormalizeTextNodesTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/XmlUtilsNormalizeTextNodesTest.java new file mode 100644 index 0000000000..cc60330063 --- /dev/null +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/XmlUtilsNormalizeTextNodesTest.java @@ -0,0 +1,91 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.kernel.utils; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import com.itextpdf.test.ExtendedITextTest; + +import java.nio.charset.StandardCharsets; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class XmlUtilsNormalizeTextNodesTest extends ExtendedITextTest { + + private static InputStream stream(String s) { + return new ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8)); + } + + @Test + public void compareXmlsSameStructureDifferentWhitespace() throws Exception { + String pretty = + "\n" + + " 1\n" + + " 2\n" + + ""; + + String compact = + "12"; + + Assertions.assertTrue(XmlUtils.compareXmls(stream(pretty), stream(compact))); + } + + @Test + public void compareXmlsMixedContentDifferentFormatting() throws Exception { + String xml1 = + "Text\n" + + " <Link>link</Link>\n" + + ""; + + String xml2 = + "Text<Link>link</Link>"; + + Assertions.assertFalse(XmlUtils.compareXmls(stream(xml1), stream(xml2))); + } + + @Test + public void compareXmlsDifferentTextContent() throws Exception { + Assertions.assertFalse(XmlUtils.compareXmls(stream("1"), stream("2"))); + } + + @Test + public void compareXmlsEmptyElementsWithAttributes() throws Exception { + String xml1 = ""; + String xml2 = "\n \n"; + + Assertions.assertTrue(XmlUtils.compareXmls(stream(xml1), stream(xml2))); + } + + @Test + public void emptyElementWithAttributesIsNotRemoved() throws Exception { + String xmlWithWhitespace = + "\n" + + " \n \n" + + ""; + + String xmlExpected = + ""; + + Assertions.assertTrue(XmlUtils.compareXmls(stream(xmlWithWhitespace), stream(xmlExpected))); + } +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/BCP47ValidatorTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/BCP47ValidatorTest.java index ff289731d6..bc745635fa 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/BCP47ValidatorTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/BCP47ValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/FontCheckUtilTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/FontCheckUtilTest.java index 44c6bceb63..39677d5efb 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/FontCheckUtilTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/checkers/FontCheckUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -39,7 +39,7 @@ This file is part of the iText (R) project. @Tag("UnitTest") public class FontCheckUtilTest extends ExtendedITextTest { - private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/pdf/fonts/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/kernel/fonts/"; @Test public void checkFontAvailable() throws IOException { @@ -99,4 +99,4 @@ public boolean check(int ch, PdfFont fontToCheck) { }); Assertions.assertEquals(-1, index); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItemTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItemTest.java index 69b8f029a6..511a32d3ae 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ArrayPathItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItemTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItemTest.java index 7e5bf148a6..406bff4ee4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/DictPathItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItemTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItemTest.java index 75fd3fef0c..d06bd7a9fd 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/IndirectPathItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPathTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPathTest.java index 4e4706ea22..c0f9807964 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPathTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/ObjectPathTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItemTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItemTest.java index e72c51ccae..195d1228d0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItemTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/OffsetPathItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPathTest.java b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPathTest.java index fb5472eef7..68531cd1f6 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPathTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/utils/objectpathitems/TrailerPathTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/validation/Pdf20CheckerTest.java b/kernel/src/test/java/com/itextpdf/kernel/validation/Pdf20CheckerTest.java index a62c7abb9d..fb512598f4 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/validation/Pdf20CheckerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/validation/Pdf20CheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -120,4 +120,4 @@ public void parentChildRelationshipInvalidChild() { }); } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/validation/PdfCheckerTest.java b/kernel/src/test/java/com/itextpdf/kernel/validation/PdfCheckerTest.java index 9d643ad116..0fe1adeb83 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/validation/PdfCheckerTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/validation/PdfCheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -305,4 +305,4 @@ public void roleWithNamespaceIsNotMappedToStandardNamespaceTest() { namespace.getNamespaceName()), e.getMessage()); } } -} \ No newline at end of file +} diff --git a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/SecurityTestXmlParserFactory.java b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/SecurityTestXmlParserFactory.java index 8d1343252b..131b30fe1e 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/SecurityTestXmlParserFactory.java +++ b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/SecurityTestXmlParserFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPMetaParserSecurityTest.java b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPMetaParserSecurityTest.java index ef133fd8fe..2f3ee5f9b0 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPMetaParserSecurityTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPMetaParserSecurityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPNodeTest.java b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPNodeTest.java index 3c624b9f57..80c98ac471 100644 --- a/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPNodeTest.java +++ b/kernel/src/test/java/com/itextpdf/kernel/xmp/impl/XMPNodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/LICENSE-OFL-1.1.txt b/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/LICENSE-OFL-1.1.txt deleted file mode 100644 index d35e6f9597..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/LICENSE-OFL-1.1.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2015-2021 Google LLC. All Rights Reserved. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -https://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/NOTICE.txt b/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/NOTICE.txt deleted file mode 100644 index a82d6822eb..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfTrueTypeFontTest/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSans-Regular.ttf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit a970ecbe0bf1e6ae5cb22d6abdea672448655f0c (03.03.2022) from "https://github.com/google/fonts" diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NOTICE.txt b/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NOTICE.txt deleted file mode 100644 index 1ea1c2103a..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NOTICE.txt +++ /dev/null @@ -1,3 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansOldItalic-Regular.ttf | OFL-1.1 | LICENSE-OFL.txt | Based on commit 20bc5918912503bc1537a407a694738c33c048aa (07.31.2020) from "https://github.com/googlefonts/noto-fonts" -| NotoSerif-Regular_v1.7.ttf | OFL-1.1 | LICENSE-OFL.txt | Based on commit 5a89b487c648c34c2b6d1b9ebb73bb3fab1df4b2 (20.09.2017) from "https://github.com/googlefonts/noto-fonts" diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/DejaVuSans.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/DejaVuSans.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/DejaVuSans.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/DejaVuSans.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/fonts/LICENSE_BITSTREAM.txt b/kernel/src/test/resources/com/itextpdf/kernel/fonts/LICENSE_BITSTREAM.txt new file mode 100644 index 0000000000..a1f86781dc --- /dev/null +++ b/kernel/src/test/resources/com/itextpdf/kernel/fonts/LICENSE_BITSTREAM.txt @@ -0,0 +1,187 @@ +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. +Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) + + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. + +Arev Fonts Copyright +------------------------------ + +Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and +associated documentation files (the "Font Software"), to reproduce +and distribute the modifications to the Bitstream Vera Font Software, +including without limitation the rights to use, copy, merge, publish, +distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to +the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Tavmjong Bah" or the word "Arev". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Tavmjong Bah Arev" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the name of Tavmjong Bah shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Font Software without prior written authorization +from Tavmjong Bah. For further information, contact: tavmjong @ free +. fr. + +TeX Gyre DJV Math +----------------- +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. + +Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski +(on behalf of TeX users groups) are in public domain. + +Letters imported from Euler Fraktur from AMSfonts are (c) American +Mathematical Society (see below). +Bitstream Vera Fonts Copyright +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera +is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license (“Fonts”) and associated +documentation +files (the “Font Software”), to reproduce and distribute the Font Software, +including without limitation the rights to use, copy, merge, publish, +distribute, +and/or sell copies of the Font Software, and to permit persons to whom +the Font Software is furnished to do so, subject to the following +conditions: + +The above copyright and trademark notices and this permission notice +shall be +included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional +glyphs or characters may be added to the Fonts, only if the fonts are +renamed +to names not containing either the words “Bitstream” or the word “Vera”. + +This License becomes null and void to the extent applicable to Fonts or +Font Software +that has been modified and is distributed under the “Bitstream Vera” +names. + +The Font Software may be sold as part of a larger software package but +no copy +of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, +SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN +ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR +INABILITY TO USE +THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. +Except as contained in this notice, the names of GNOME, the GNOME +Foundation, +and Bitstream Inc., shall not be used in advertising or otherwise to promote +the sale, use or other dealings in this Font Software without prior written +authorization from the GNOME Foundation or Bitstream Inc., respectively. +For further information, contact: fonts at gnome dot org. + +AMSFonts (v. 2.2) copyright + +The PostScript Type 1 implementation of the AMSFonts produced by and +previously distributed by Blue Sky Research and Y&Y, Inc. are now freely +available for general use. This has been accomplished through the +cooperation +of a consortium of scientific publishers with Blue Sky Research and Y&Y. +Members of this consortium include: + +Elsevier Science IBM Corporation Society for Industrial and Applied +Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS) + +In order to assure the authenticity of these fonts, copyright will be +held by +the American Mathematical Society. This is not meant to restrict in any way +the legitimate use of the fonts, such as (but not limited to) electronic +distribution of documents containing these fonts, inclusion of these fonts +into other public domain or commercial font collections or computer +applications, use of the outline data to create derivative fonts and/or +faces, etc. However, the AMS does require that the AMS copyright notice be +removed from any derivative versions of the fonts which have been altered in +any way. In addition, to ensure the fidelity of TeX documents using Computer +Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces, +has requested that any alterations which yield different font metrics be +given a different name. + +$Id$ \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/LICENSE_OFL.txt b/kernel/src/test/resources/com/itextpdf/kernel/fonts/LICENSE_OFL-1.1.txt similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType2Test/LICENSE_OFL.txt rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/LICENSE_OFL-1.1.txt diff --git a/kernel/src/test/resources/com/itextpdf/kernel/fonts/NOTICE.txt b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NOTICE.txt new file mode 100644 index 0000000000..8c7d660b74 --- /dev/null +++ b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NOTICE.txt @@ -0,0 +1,19 @@ +This software uses the following test resources under the following licenses: +cmr10.afm | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" +cmr10.pfb | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" +cmr10.pfm | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" +DejaVuSans.ttf | Bitstream | LICENSE_BITSTREAM.txt | Based on "https://github.com/dejavu-fonts/dejavu-fonts/releases/tag/version_2_35" +glyphs.ttf | MIT | Based on "https://github.com/RazrFalcon/ttf-parser/tree/337e7d1c08b06478a84c4345f4f289fc2cb9210c/tests/fonts-src" +glyphs-fmt-6.ttf | MIT | Based on "https://github.com/RazrFalcon/ttf-parser/tree/337e7d1c08b06478a84c4345f4f289fc2cb9210c/tests/fonts-src" +NotoSansCJKjp-Bold.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansJP-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansOldItalic-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit b203ed05864bf7a646eaba93c315c74363fd7b1e (02.11.2021) from "https://github.com/googlefonts/noto-fonts" +NotoSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit a970ecbe0bf1e6ae5cb22d6abdea672448655f0c (03.03.2022) from "https://github.com/google/fonts" +NotoSansSC-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSansTC-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" +NotoSerif-Regular_v1.7.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 5a89b487c648c34c2b6d1b9ebb73bb3fab1df4b2 (20.09.2017) from "https://github.com/googlefonts/noto-fonts" +PTSerif-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://github.com/google/fonts/blob/main/ofl/ptserif/PT_Serif-Web-Regular.ttf" +Puritan-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Puritan" (26.01.2026) +SourceHanSansHW-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://github.com/adobe-fonts/source-han-sans/releases/tag/2.004R" (File: Static Language Specific OTFs, path in zip folder:OTF/japanesHW) (07.09.2023) +SourceHanSerifKR-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 59e61fd2e39967b6d3b713cdb47612893ab989e1 (26.01.2022) from "https://github.com/adobe-fonts/source-han-serif" +SourceSerif4-Black.woff | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit a9eaef81588dddd479f2275d87b3707ed7ae2847 (26.01.2021) from "https://github.com/adobe-fonts/source-serif" \ No newline at end of file diff --git a/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSans-Regular.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSans-Regular.ttf new file mode 100644 index 0000000000..cab3e71466 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSans-Regular.ttf differ diff --git a/forms/src/test/resources/com/itextpdf/forms/PdfChoiceFieldTest/NotoSansCJKjp-Bold.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansCJKjp-Bold.otf similarity index 100% rename from forms/src/test/resources/com/itextpdf/forms/PdfChoiceFieldTest/NotoSansCJKjp-Bold.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansCJKjp-Bold.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansJP-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansJP-Regular.otf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansJP-Regular.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansJP-Regular.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NotoSansOldItalic-Regular.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansOldItalic-Regular.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NotoSansOldItalic-Regular.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansOldItalic-Regular.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansSC-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansSC-Regular.otf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansSC-Regular.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansSC-Regular.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansTC-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansTC-Regular.otf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansTC-Regular.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSansTC-Regular.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NotoSerif-Regular_v1.7.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSerif-Regular_v1.7.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/NotoSerif-Regular_v1.7.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/NotoSerif-Regular_v1.7.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/fonts/PTSerif-Regular.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/PTSerif-Regular.ttf new file mode 100644 index 0000000000..5310691a99 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/fonts/PTSerif-Regular.ttf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/fonts/Puritan-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/Puritan-Regular.otf new file mode 100644 index 0000000000..2d5428fda5 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/fonts/Puritan-Regular.otf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceHanSansHW-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceHanSansHW-Regular.otf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceHanSansHW-Regular.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceHanSansHW-Regular.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceHanSerifKR-Regular.otf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceHanSerifKR-Regular.otf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceHanSerifKR-Regular.otf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceHanSerifKR-Regular.otf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceSerif4-Black.woff b/kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceSerif4-Black.woff similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/SourceSerif4-Black.woff rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/SourceSerif4-Black.woff diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/Symbols1.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/Symbols1.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/Symbols1.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/Symbols1.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/abserif4_5.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/abserif4_5.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/abserif4_5.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/abserif4_5.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.afm b/kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.afm similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.afm rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.afm diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.pfb b/kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.pfb similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.pfb rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.pfb diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.pfm b/kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.pfm similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/cmr10.pfm rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/cmr10.pfm diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/glyphs-fmt-6.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/glyphs-fmt-6.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/glyphs-fmt-6.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/glyphs-fmt-6.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/glyphs.ttf b/kernel/src/test/resources/com/itextpdf/kernel/fonts/glyphs.ttf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/glyphs.ttf rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/glyphs.ttf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/uming.ttc b/kernel/src/test/resources/com/itextpdf/kernel/fonts/uming.ttc similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/uming.ttc rename to kernel/src/test/resources/com/itextpdf/kernel/fonts/uming.ttc diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsM.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsM.pdf new file mode 100644 index 0000000000..67dfa85261 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsM.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsTm.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsTm.pdf new file mode 100644 index 0000000000..b971d037cf Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/biggerNumberOfOperandsTm.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/patternColorParsingNotValidPdfTest.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/coloredPatternParsingTest.pdf similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/patternColorParsingNotValidPdfTest.pdf rename to kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/coloredPatternParsingTest.pdf diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/patternColorParsingValidPdfTest2.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/patternColorParsingValidPdfTest2.pdf new file mode 100644 index 0000000000..c6b7273e65 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/patternColorParsingValidPdfTest2.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsM.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsM.pdf new file mode 100644 index 0000000000..7003930f85 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsM.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsTm.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsTm.pdf new file mode 100644 index 0000000000..281302a418 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/smallerNumberOfOperandsTm.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/unColoredPatternParsingTest.pdf b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/unColoredPatternParsingTest.pdf new file mode 100644 index 0000000000..57e8447737 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/parser/PdfCanvasProcessorTest/unColoredPatternParsingTest.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCII85ContentStream.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCII85ContentStream.pdf new file mode 100644 index 0000000000..b115e93eb9 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCII85ContentStream.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCIIHexContentStream.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCIIHexContentStream.pdf new file mode 100644 index 0000000000..59fbe5f76e Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/ASCIIHexContentStream.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/RunLengthContentStream.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/RunLengthContentStream.pdf new file mode 100644 index 0000000000..ea4c570a16 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/CompressionStrategyTest/RunLengthContentStream.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/FreeSans.ttf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/FreeSans.ttf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/NOTICE.txt b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/NOTICE.txt deleted file mode 100644 index 063ef4f867..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/NOTICE.txt +++ /dev/null @@ -1,2 +0,0 @@ -This software uses the following test resources under the following licenses: -//TODO DEVSIX-6473 Replace fonts in kernel diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_customSimpleEncodingTimesRomanTest.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_customSimpleEncodingTimesRomanTest.pdf index 5852e9541b..74a4f0d4a2 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_customSimpleEncodingTimesRomanTest.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_customSimpleEncodingTimesRomanTest.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInTrueTypeFontTest.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInTrueTypeFontTest.pdf index d31d8a204e..9d594e2a86 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInTrueTypeFontTest.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInTrueTypeFontTest.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInType0Test.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInType0Test.pdf index 8f7cede8ff..e332af7dd6 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInType0Test.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/EncodingTest/cmp_notdefInType0Test.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithAbserifAndIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithAbserifAndIdentityHEncodings.pdf deleted file mode 100644 index 378a1399ec..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithAbserifAndIdentityHEncodings.pdf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf deleted file mode 100644 index aa529bdea5..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf deleted file mode 100644 index f1a222412f..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf new file mode 100644 index 0000000000..f9f10ea248 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf new file mode 100644 index 0000000000..3bf4abed6f Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf deleted file mode 100644 index db2c455e8c..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstIdentityHThenWinAnsiEncodings.pdf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf deleted file mode 100644 index 9553ff9644..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedAbserifFirstWinAnsiThenIdentityHEncodings.pdf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf new file mode 100644 index 0000000000..676c7f2c68 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstIdentityHThenWinAnsiEncodings.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf new file mode 100644 index 0000000000..c8ea47826a Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithNotEmbeddedPTserifFirstWinAnsiThenIdentityHEncodings.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithPTserifAndIdentityHEncodings.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithPTserifAndIdentityHEncodings.pdf new file mode 100644 index 0000000000..69ddc14e30 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithPTserifAndIdentityHEncodings.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueType.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueType.pdf index d724d8ad9b..d1a8ada0db 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueType.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueType.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0.pdf index 979b1a7915..586a6e34ad 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0DefaultEncoding.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0DefaultEncoding.pdf index 94ff1d6250..1eccb91bfa 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0DefaultEncoding.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0DefaultEncoding.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0Flushed.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0Flushed.pdf index d4be93fce3..2537010a3e 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0Flushed.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeAsType0Flushed.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeFlushed.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeFlushed.pdf index f426c49b31..40213eecb2 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeFlushed.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontCacheTest/cmp_DocumentWithTrueTypeFlushed.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeAsType0.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeAsType0.pdf index 10b399ec16..da548f6799 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeAsType0.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeAsType0.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeFont1.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeFont1.pdf index 373ef25a8f..ca00bc313b 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeFont1.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeFont1.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFont.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFont.pdf index a98a895efb..9e81125303 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFont.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFont.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFontPdf20.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFontPdf20.pdf index 03dc981691..3c11dff3fb 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFontPdf20.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithTrueTypeOtfFontPdf20.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithType0OtfFont.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithType0OtfFont.pdf index 2b686a55af..935421cbb2 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithType0OtfFont.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_DocumentWithType0OtfFont.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf index df718930ae..1b18716f2a 100644 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/PdfFontTest/cmp_createDocumentWithTrueTypeFont1NotEmbedded.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENCE-SIL-1.1.txt b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENCE-SIL-1.1.txt deleted file mode 100644 index ddf7b7e91a..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENCE-SIL-1.1.txt +++ /dev/null @@ -1,96 +0,0 @@ -Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font -Name 'Source'. Source is a trademark of Adobe in the United States -and/or other countries. - -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-LPPL-1.3c.txt b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-LPPL-1.3c.txt deleted file mode 100644 index a73507d8ad..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-LPPL-1.3c.txt +++ /dev/null @@ -1,365 +0,0 @@ -README for amsfonts 3.04 [2013/01/14] - -Copyright 2001, 2009, 2013 American Mathematical Society. - -This work may be distributed and/or modified under the -conditions of the LaTeX Project Public License, either version 1.3c -of this license or (at your option) any later version. -The latest version of this license is in - http://www.latex-project.org/lppl.txt -and version 1.3c or later is part of all distributions of LaTeX -version 2005/12/01 or later. - -This work has the LPPL maintenance status `maintained'. - -The Current Maintainer of this work is the American Mathematical -Society. - -American Mathematical Society -Technical Support -Publications Technical Group -201 Charles Street -Providence, RI 02904 -USA -tel: (401) 455-4080 - (800) 321-4267 (USA and Canada only) -fax: (401) 331-3842 -email: tech-support@ams.org - -======================================================================== - -If you have obtained a bundled AMSFonts collection (amsfonts.zip), this -will unpack into the standard TeX Directory Structure (TDS) tree. -First, determine the local TEXMF directory for your system, which we -will call texmf-local in this 00README file; this directory should be -identified in the documentation for the TeX distribution you're using. -Place the zip file into a convenient directory and unpack it using -the texmf-local directory as the "Extract to" target. Some examples: - - WinZIP: Click on "Extract" and then in the "Extract to" box, enter - \sw\texmf-local (or whatever the local branch of TEXMF is - on your system) - unzip: unzip amsfonts.zip -d texmf-local - -See the web page - http://tug.org/fonts/fontinstall.html -for some general information on identifying your local TEXMF tree and -installing fonts on various platforms. (This includes specific details -for MikTeX, MacTeX, and other systems based on TeX Live.) - -If your installation is not arranged in a TDS tree, see also the section -below, "Installing AMSFonts 3.0 on your system", as well as the user -documentation for your TeX distribution. - ------------------------------------------------------------------------- - -What changes were made between AMSFonts 3.03 and AMSFonts 3.04? - -Version 3.04 is a minor update to provide more fluid interoperability -with stix.sty. It should be fully compatible with version 3.03. - ------------------------------------------------------------------------- - -What changes were made between AMSFonts 3.02 and AMSFonts 3.03? - -The Type 1 Euler fonts have been upgraded from version 003.002 to -003.003 with the following changes: - -1) Some inconsistencies with the character widths in the corresponding - TFM files have been fixed. - -2) Minor optimizations were carried out on some of the character - outlines. - -The changes affect only the PFB, AFM, and PFM files. Thanks to Taco -Hoekwater and Stephen Moye. - -What changes were made between AMSFonts 3.01 and AMSFonts 3.02? - -The internal Unicode-compliant glyph names used for version 3.00 of -the Type 1 fonts resulted in a major incompatibility in reusing PDF -documents that had the previous version of the fonts embedded. All -glyph names have now been reverted to their previous values and some -minor inconsistencies in the encoding vectors have been fixed. This -affects all PFB and AFM files. - -What changes were made between AMSFonts 3.00 and AMSFonts 3.01? - -The encoding vectors of several of the Type 1 fonts were augmented -with some some duplicate entries in the high-bit range (128--255) for -compatibility with earlier releases of the fonts and with some older -PDF software that had trouble rendering characters with low character -codes (0-31). Also, a couple of typos in the latxfont.map file were -fixed. - -What changes were made between AMSFonts 2.2d and AMSFonts 3.0? - -The licenses were restated to clarify the copying and redistribution -conditions to make them more compatible with third-party collections -such as TeX Live. In particular, all Type 1 fonts and those .mf files -originally created at AMS are now released under the SIL Open Font -License (OFL), a copy of which is included with this distribution. - -.pk files are no longer distributed or supported by the AMS. Where -Type 1 fonts are available, modern TeX distributions do not require -PK fonts. When PK fonts are required for some specialized purpose, -they can easily be generated on the fly. - -In the Computer Modern fonts, some shape changes made by Donald Knuth -in 1992 were not included in the Type 1 fonts distributed in version 2.2 -of the AMSFonts collection. These shape changes have now been made, -and all CM glyph shapes should now be identical between Knuth's Metafont -sources and the Type 1 fonts. Since Knuth's original changes did not -affect the metrics, no metrics were affected by this upgrade, and no -changes to the .tfm files were needed. However, owing to the system -under which the reference copies of the .tfm files are archived, the -original file dates have been lost; recent file dates do not imply -any content changes. - -The Euler fonts, designed by Hermann Zapf, were originally released in -the 1990s. Zapf reshaped many of the glyphs, with implementation and -assistance from Hans Hagen, Taco Hoekwater, and Volker RW Schaa. The -updated version 3.0 was presented to Donald Knuth on his birthday, -January 10, 2008. These updates were carefully designed to work with -the metrics for version 2.2, so no changes to the .tfm files were -needed. Since the updates were made directly to the Type 1 files, -the (incompatible) .mf files have been removed from the distribution. - -There have been no shape changes to the "extra symbols" or cyrillic. - -Where possible, all glyphs have been given Unicode-compliant names -to make them work better with Unicode-aware viewers (e.g., -cut-and-paste of Cyrillic characters should work better). - -Some modifications were made in the LaTeX support files to adapt to -the new set of (fully scalable) font sizes. Now that Type 1 fonts -are available for all defined sizes, the "psamsfonts" option is no -longer needed. This has been implemented in such a way as to ensure -that existing LaTeX input calling for this option will still compile. -In particular, any support files containing "57" in the file name -have been either eliminated or converted to no-ops. - -The location of some files has changed, so if you are installing the -new distribution on top of an existing one, be sure to delete the -old copies from the previous locations. Remove these directories -that are no longer used: - - doc/ams/amsfonts [replaced by doc/fonts/amsfonts] - fonts/source/ams [replaced by fonts/source/public/amsfonts] - fonts/tfm/ams [replaced by fonts/tfm/public/amsfonts] - tex/latex/amsfonts/obsolete [obsolete; not superseded] - -Also remove these files from the indicated areas: - - fonts/source/public/misc/dummy* - [replaced by fonts/source/public/amsfonts/dummy] - fonts/tfm/public/misc/dummy* - [replaced by fonts/tfm/public/amsfonts/dummy] - -The manual (amsfndoc) will be updated later this year. Some of the -information it contains is incomplete or obsolete. In particular, -Appendix A, Installation Procedures, should be ignored completely; -see below for installation procedures if your system is not based on -a TDS structure. - ------------------------------------------------------------------------- - -What changes were made between AMSFonts 2.2 and AMSFonts 2.2d? - -No changes were made to the fonts themselves, either to the Metafont -sources, the .tfm or .pk files. - -The primary purpose of this upgrade was to fix bugs in the LaTeX -support files and to update the User's Guide. - ------------------------------------------------------------------------- - -What changes were made between AMSFonts 2.1 and AMSFonts 2.2? - -The primary change was the inclusion of LaTeX support macro files as -part of the AMSFonts distribution. The files in the "latex" -subdirectory are compatible with LaTeX2e, the LaTeX standard since -1995. Users of LaTeX 2.09 are strongly encouraged to upgrade to -LaTeX2e, as AMS no longer supports the use of AMSFonts with LaTeX 2.09. - -The only significant change to the characters in the fonts was a bug -fix which corrected an anomaly in the Blackboard Bold N character from -the MSBM fonts. That character printed incorrectly at a few resolutions -(including 600dpi); it now prints correctly at all resolutions. The -metrics for AMSFonts 2.2 were unchanged from those for AMSFonts 2.1. - -There was also a slight change to the file amssym.tex, and very -significant changes to the User's Guide. - ------------------------------------------------------------------------- - -INSTALLING AMSFonts 3.0 ON YOUR SYSTEM - -These instructions assume that you were unable to unzip the bundle -directly into a TEXMF TDS tree. - -1. Installing the fonts: - -Unzip the bundle into a work area. This will produce a tree with the -following structure: - - source - source/latex - source/latex/amsfonts - tex - tex/latex - tex/latex/amsfonts - tex/plain - tex/plain/amsfonts - fonts - fonts/source - fonts/source/public - fonts/source/public/amsfonts - fonts/source/public/amsfonts/cmextra - fonts/source/public/amsfonts/cyrillic - fonts/source/public/amsfonts/dummy - fonts/source/public/amsfonts/symbols - fonts/tfm - fonts/tfm/public - fonts/tfm/public/amsfonts - fonts/tfm/public/amsfonts/cmextra - fonts/tfm/public/amsfonts/cyrillic - fonts/tfm/public/amsfonts/dummy - fonts/tfm/public/amsfonts/euler - fonts/tfm/public/amsfonts/symbols - fonts/type1 - fonts/type1/public - fonts/type1/public/amsfonts - fonts/type1/public/amsfonts/cm - fonts/type1/public/amsfonts/cmextra - fonts/type1/public/amsfonts/cyrillic - fonts/type1/public/amsfonts/euler - fonts/type1/public/amsfonts/latxfont - fonts/type1/public/amsfonts/symbols - fonts/afm - fonts/afm/public - fonts/afm/public/amsfonts - fonts/afm/public/amsfonts/cm - fonts/afm/public/amsfonts/cmextra - fonts/afm/public/amsfonts/cyrillic - fonts/afm/public/amsfonts/euler - fonts/afm/public/amsfonts/latxfont - fonts/afm/public/amsfonts/symbols - fonts/map - fonts/map/dvips - fonts/map/dvips/amsfonts - doc - doc/fonts - doc/fonts/amsfonts - -Move the files in the branch fonts/type1/public/amsfonts/ to the -directory where your system expects to find .pfb (Type 1) files. - -Move the files in the branch fonts/tfm/public/amsfonts/ to the -directory where your system expects to find .tfm files. - -Update the map files for your device drivers using the .map files in -fonts/map/dvips/amsfonts/ ; consult the documentation for your TeX -distribution for advice. - -Depending on what TeX system you use, it may also be necessary to update -a filename database; see the documentation for your TeX distribution. - -2. Installing the (La)TeX support files: - -There are two sets of files which provide macros necessary for using -AMSFonts 3.0 in TeX. One set is for Plain TeX or AMS-TeX, and one set -is for LaTeX. If you use Plain TeX or AMS-TeX, then the files in -tex/plain/amsfonts/ should be placed in the directory (or a directory -in the path) which your implementation of TeX searches for input files. -If you use LaTeX, then the files in tex/latex/amsfonts/ should be -placed in that directory. (If you use LaTeX 2.09, then we strongly -encourage you to upgrade to LaTeX2e; AMS does not provide support for -use of AMSFonts in LaTeX 2.09.) If you are likely to use both LaTeX -and Plain TeX or AMS-TeX, then install the files from both directories -where your TeX will find them for input. - -Depending on what TeX system you use, it may also be necessary to update -a filename database; see the documentation for your TeX distribution. - -3. The User's Guide and other documentation: - -You can get a copy of the User's Guide via a link on the web page - - http://www.ams.org/tex/amsfonts.html - -The User's Guide still describes AMSFonts 2.2d; however, processing and -printing it from the files in this distribution is a good test of your -AMSFonts installation. - -In order to TeX and print the User's Guide, you must first install the -fonts. The "source" subdirectory (source/latex/amsfonts/) contains -five input files with names beginning with "amsfndoc". When your font -installation is complete, process the file "amsfndoc.tex" with Plain -TeX (not AMS-TeX or LaTeX). It will input four other "amsfndoc" files: -.def, .cyr, .ins and .fnt. The output will be a complete guide to the -use of AMSFonts 2.2d. Instructions for the use of the fonts themselves -are still valid, though somewhat incomplete; however, the installation -instructions in Appendix A are obsolete and should be ignored. The -User's Guide is scheduled to be updated later this year. - -The directory source/latex/amsfonts/ contains a file named -"amsfonts.faq" in which we will place frequently asked questions about -AMSFonts. - -This directory also contains LaTeX .dtx files containing technical -commentary on the source code for the LaTeX support files in the -AMSFonts distribution. Although these .dtx files are included for -reference, most users can ignore them. - ------------------------------------------------------------------------- - -USE OF THE LATEX "amsfonts" PACKAGE - -Version 3.0 of the LaTeX package amsfonts.sty is carefully constructed -to allow it to be used for processing pre-existing documents. This -means that documents that load amsfonts.sty through statements such -as the following should continue to work without change. - -1. \documentclass{amsart} - -2. \documentclass{article} - \usepackage{amsfonts} - -3. \documentclass{article} - \usepackage{amsmath,amsthm} - -4. \documentclass{article} - \usepackage{amssymb} - -There is an exception, however, for the variants 2 and 3: If your -document was written a very long time ago AND if it uses any of the -symbols - - \square \Box - \lozenge \Diamond - \vartriangleright \rhd - \vartriangleleft \lhd - \trianglerighteq \unrhd - \trianglelefteq \unlhd - \rightsquigarrow \leadsto - \Join - -then you may find that those symbol commands now produce "Undefined -control sequence" errors. For the symbols in the first column, the -easiest way to fix this is to load the amssymb package, i.e. change -variants 2 and 3 to - -2a. \documentclass{article} - \usepackage{amssymb} - -3a. \documentclass{article} - \usepackage{amssymb,amsmath,amsthm} - -For symbols in the second column (\Box, etc.), you have a choice of -either adding the latexsym package or defining them in terms of -equivalent symbols from the amssymb package. - -If you are using an AMS document class (amsart, amsbook, amsproc), the -amsfonts are automatically included; however, you must load the amssymb -package to have access to the specific symbol names. \ No newline at end of file diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-OFL-1.1.txt b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-OFL-1.1.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/LICENSE-OFL-1.1.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NOTICE.txt b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NOTICE.txt deleted file mode 100644 index adbfd10344..0000000000 --- a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NOTICE.txt +++ /dev/null @@ -1,13 +0,0 @@ -This software uses the following test resources under the following licenses: -| NotoSansJP-Regular.otf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSansTC-Regular.otf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSansSC-Regular.otf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.03.2021) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSansCJKjp-Bold.otf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "https://github.com/googlefonts/noto-cjk" -| NotoSerif-Regular_v1.7.ttf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit 5a89b487c648c34c2b6d1b9ebb73bb3fab1df4b2 (20.09.2017) from "https://github.com/googlefonts/noto-fonts" -| SourceSerif4-Black.woff | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit a9eaef81588dddd479f2275d87b3707ed7ae2847 (26.01.2021) from "https://github.com/adobe-fonts/source-serif" -| SourceHanSerifKR-Regular.otf | OFL-1.1 | LICENSE-OFL-1.1.txt | Based on commit 59e61fd2e39967b6d3b713cdb47612893ab989e1 (26.01.2022) from "https://github.com/adobe-fonts/source-han-serif" -| cmr10.afm | SIL OFL-1.1 | LICENSE-SIL-1.1.txt | https://www.ams.org/arc/resources/amsfonts-about.html (13.09.2023) -| cmr10.pfb | SIL OFL-1.1 | LICENSE-SIL-1.1.txt | https://www.ams.org/arc/resources/amsfonts-about.html (13.09.2023) -| cmr10.pfm | SIL OFL-1.1 | LICENSE-SIL-1.1.txt | https://www.ams.org/arc/resources/amsfonts-about.html (13.09.2023) -| SourceHanSansHW-Regular.otf | LICENCE-SIL-1.1.txt | https://github.com/adobe-fonts/source-han-sans/releases/tag/2.004R (File: Static Language Specific OTFs, path in zip folder:OTF/japanesHW) (07.09.2023) -| glyphs.ttf, glyphs-fmt-6.ttf | MIT | Derived from https://github.com/RazrFalcon/ttf-parser/tree/337e7d1c08b06478a84c4345f4f289fc2cb9210c/tests/fonts-src diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansCJKjp-Bold.otf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansCJKjp-Bold.otf deleted file mode 100644 index 76c4827a05..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSansCJKjp-Bold.otf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSerif-Regular_v1.7.ttf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSerif-Regular_v1.7.ttf deleted file mode 100644 index d91ff3a370..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/NotoSerif-Regular_v1.7.ttf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/Puritan2.otf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/Puritan2.otf deleted file mode 100644 index e4c7eb15df..0000000000 Binary files a/kernel/src/test/resources/com/itextpdf/kernel/pdf/fonts/Puritan2.otf and /dev/null differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.pdf b/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.pdf new file mode 100644 index 0000000000..0953a4ff16 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.pdf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.png b/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.png new file mode 100644 index 0000000000..ef8a5638f5 Binary files /dev/null and b/kernel/src/test/resources/com/itextpdf/kernel/pdf/xobject/GetImageBytesTest/oneColorPalette.png differ diff --git a/layout/pom.xml b/layout/pom.xml index 8edeec57a9..f026ec46b9 100644 --- a/layout/pom.xml +++ b/layout/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT layout diff --git a/layout/src/main/java/com/itextpdf/layout/Canvas.java b/layout/src/main/java/com/itextpdf/layout/Canvas.java index e9926a42b7..557b6f8127 100644 --- a/layout/src/main/java/com/itextpdf/layout/Canvas.java +++ b/layout/src/main/java/com/itextpdf/layout/Canvas.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/ColumnDocumentRenderer.java b/layout/src/main/java/com/itextpdf/layout/ColumnDocumentRenderer.java index 7492bb6593..e623167b2c 100644 --- a/layout/src/main/java/com/itextpdf/layout/ColumnDocumentRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/ColumnDocumentRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/Document.java b/layout/src/main/java/com/itextpdf/layout/Document.java index d4f2497550..6849764937 100644 --- a/layout/src/main/java/com/itextpdf/layout/Document.java +++ b/layout/src/main/java/com/itextpdf/layout/Document.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/ElementPropertyContainer.java b/layout/src/main/java/com/itextpdf/layout/ElementPropertyContainer.java index bcd9450e3b..0e283afc13 100644 --- a/layout/src/main/java/com/itextpdf/layout/ElementPropertyContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/ElementPropertyContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/IPropertyContainer.java b/layout/src/main/java/com/itextpdf/layout/IPropertyContainer.java index 1e6397df8b..c8622b541f 100644 --- a/layout/src/main/java/com/itextpdf/layout/IPropertyContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/IPropertyContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/RootElement.java b/layout/src/main/java/com/itextpdf/layout/RootElement.java index af548e0416..e2103e2f44 100644 --- a/layout/src/main/java/com/itextpdf/layout/RootElement.java +++ b/layout/src/main/java/com/itextpdf/layout/RootElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/Style.java b/layout/src/main/java/com/itextpdf/layout/Style.java index 39ddb87506..bba735b486 100644 --- a/layout/src/main/java/com/itextpdf/layout/Style.java +++ b/layout/src/main/java/com/itextpdf/layout/Style.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/Border.java b/layout/src/main/java/com/itextpdf/layout/borders/Border.java index 664d97bec9..f5f5119a0a 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/Border.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/Border.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/Border3D.java b/layout/src/main/java/com/itextpdf/layout/borders/Border3D.java index de6e0f2bfc..95518bae36 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/Border3D.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/Border3D.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/DashedBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/DashedBorder.java index b21a6a6c60..1a7e3dca40 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/DashedBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/DashedBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/DottedBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/DottedBorder.java index 3e69fb590f..41d7e64940 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/DottedBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/DottedBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/DoubleBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/DoubleBorder.java index 87aee79de5..8a1371c675 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/DoubleBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/DoubleBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/FixedDashedBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/FixedDashedBorder.java index 6bb0b596be..c3ffa714c8 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/FixedDashedBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/FixedDashedBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/GrooveBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/GrooveBorder.java index 0bd06fe59f..dbdd20c848 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/GrooveBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/GrooveBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/InsetBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/InsetBorder.java index 3fe9fe2a47..2733b4870b 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/InsetBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/InsetBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/OutsetBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/OutsetBorder.java index a8c7f3a526..be268e79ea 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/OutsetBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/OutsetBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/RidgeBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/RidgeBorder.java index f2920aa528..916300680c 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/RidgeBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/RidgeBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/RoundDotsBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/RoundDotsBorder.java index 3df23dd4bb..5ec7662c9b 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/RoundDotsBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/RoundDotsBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/borders/SolidBorder.java b/layout/src/main/java/com/itextpdf/layout/borders/SolidBorder.java index ed9a89fad8..923705ab94 100644 --- a/layout/src/main/java/com/itextpdf/layout/borders/SolidBorder.java +++ b/layout/src/main/java/com/itextpdf/layout/borders/SolidBorder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/AbstractElement.java b/layout/src/main/java/com/itextpdf/layout/element/AbstractElement.java index 4b8dcd4164..83be9cac5f 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/AbstractElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/AbstractElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/AnonymousInlineBox.java b/layout/src/main/java/com/itextpdf/layout/element/AnonymousInlineBox.java index 090ba21cf9..ca76f2a071 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/AnonymousInlineBox.java +++ b/layout/src/main/java/com/itextpdf/layout/element/AnonymousInlineBox.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/AreaBreak.java b/layout/src/main/java/com/itextpdf/layout/element/AreaBreak.java index 4a0781b591..e4bcf81ee8 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/AreaBreak.java +++ b/layout/src/main/java/com/itextpdf/layout/element/AreaBreak.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/BlockElement.java b/layout/src/main/java/com/itextpdf/layout/element/BlockElement.java index c3b2d68822..ca73901243 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/BlockElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/BlockElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Cell.java b/layout/src/main/java/com/itextpdf/layout/element/Cell.java index 6545f0e5fc..1b9b2f46ad 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Cell.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Cell.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Div.java b/layout/src/main/java/com/itextpdf/layout/element/Div.java index 9f83d539e0..014522cc99 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Div.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Div.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/FlexContainer.java b/layout/src/main/java/com/itextpdf/layout/element/FlexContainer.java index 4c0c4dba7b..6a4f13bcee 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/FlexContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/element/FlexContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/GridContainer.java b/layout/src/main/java/com/itextpdf/layout/element/GridContainer.java index 215fa3555f..1d9b279866 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/GridContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/element/GridContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/IAbstractElement.java b/layout/src/main/java/com/itextpdf/layout/element/IAbstractElement.java index 23a027df49..1c394e27b5 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/IAbstractElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/IAbstractElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/IBlockElement.java b/layout/src/main/java/com/itextpdf/layout/element/IBlockElement.java index f66e5afaf9..d1942a3b79 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/IBlockElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/IBlockElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/IElement.java b/layout/src/main/java/com/itextpdf/layout/element/IElement.java index 500da78b41..bce6fb515d 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/IElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/IElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/ILargeElement.java b/layout/src/main/java/com/itextpdf/layout/element/ILargeElement.java index 83e173b46a..e0e4cc36ad 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/ILargeElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/ILargeElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/ILeafElement.java b/layout/src/main/java/com/itextpdf/layout/element/ILeafElement.java index b69f5bab63..e1b7dd1256 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/ILeafElement.java +++ b/layout/src/main/java/com/itextpdf/layout/element/ILeafElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Image.java b/layout/src/main/java/com/itextpdf/layout/element/Image.java index 9a7855fb51..4a72e70681 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Image.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Image.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/LineSeparator.java b/layout/src/main/java/com/itextpdf/layout/element/LineSeparator.java index fcbed18fc7..d3ea63f29e 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/LineSeparator.java +++ b/layout/src/main/java/com/itextpdf/layout/element/LineSeparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Link.java b/layout/src/main/java/com/itextpdf/layout/element/Link.java index 1235f46ccd..0ec0ffda76 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Link.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Link.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/List.java b/layout/src/main/java/com/itextpdf/layout/element/List.java index 739ad39e02..37fc263e68 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/List.java +++ b/layout/src/main/java/com/itextpdf/layout/element/List.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/ListItem.java b/layout/src/main/java/com/itextpdf/layout/element/ListItem.java index ec0306f103..8cab2876cc 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/ListItem.java +++ b/layout/src/main/java/com/itextpdf/layout/element/ListItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/MulticolContainer.java b/layout/src/main/java/com/itextpdf/layout/element/MulticolContainer.java index c4c5e06a73..49458ecd2d 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/MulticolContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/element/MulticolContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Paragraph.java b/layout/src/main/java/com/itextpdf/layout/element/Paragraph.java index c1cace6612..19e8f01ba5 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Paragraph.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Paragraph.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Tab.java b/layout/src/main/java/com/itextpdf/layout/element/Tab.java index a9fd8131cb..85c7f56ba7 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Tab.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Tab.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/TabStop.java b/layout/src/main/java/com/itextpdf/layout/element/TabStop.java index 09447be5ef..fcc158ee9f 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/TabStop.java +++ b/layout/src/main/java/com/itextpdf/layout/element/TabStop.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Table.java b/layout/src/main/java/com/itextpdf/layout/element/Table.java index 6a045d4814..f8da411869 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Table.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Table.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/element/Text.java b/layout/src/main/java/com/itextpdf/layout/element/Text.java index a1afaebc0e..13174da976 100644 --- a/layout/src/main/java/com/itextpdf/layout/element/Text.java +++ b/layout/src/main/java/com/itextpdf/layout/element/Text.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/exceptions/LayoutExceptionMessageConstant.java b/layout/src/main/java/com/itextpdf/layout/exceptions/LayoutExceptionMessageConstant.java index eb344a52af..b9de87cea1 100644 --- a/layout/src/main/java/com/itextpdf/layout/exceptions/LayoutExceptionMessageConstant.java +++ b/layout/src/main/java/com/itextpdf/layout/exceptions/LayoutExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristics.java b/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristics.java index 0733793b18..6468adee24 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristics.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristics.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristicsUtils.java b/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristicsUtils.java index f70ebd000f..aab03c13e4 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristicsUtils.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontCharacteristicsUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontInfo.java b/layout/src/main/java/com/itextpdf/layout/font/FontInfo.java index 2b30616f1b..3278e67537 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontInfo.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontProvider.java b/layout/src/main/java/com/itextpdf/layout/font/FontProvider.java index 403154cfbf..3b9c53ea57 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontProvider.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontSelector.java b/layout/src/main/java/com/itextpdf/layout/font/FontSelector.java index 8e0490c81b..8bdef9e66a 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontSelector.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontSelectorCache.java b/layout/src/main/java/com/itextpdf/layout/font/FontSelectorCache.java index 235a4a983c..5f9f39a109 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontSelectorCache.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontSelectorCache.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontSelectorKey.java b/layout/src/main/java/com/itextpdf/layout/font/FontSelectorKey.java index 0dcb727666..621f15d148 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontSelectorKey.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontSelectorKey.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontSet.java b/layout/src/main/java/com/itextpdf/layout/font/FontSet.java index c4e4563d7d..952f2a0a7b 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontSet.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontSet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/FontSetCollection.java b/layout/src/main/java/com/itextpdf/layout/font/FontSetCollection.java index 4fab88ca90..6a3c7ec3e4 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/FontSetCollection.java +++ b/layout/src/main/java/com/itextpdf/layout/font/FontSetCollection.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/Range.java b/layout/src/main/java/com/itextpdf/layout/font/Range.java index 5cdd2f48a6..ff853da319 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/Range.java +++ b/layout/src/main/java/com/itextpdf/layout/font/Range.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/RangeBuilder.java b/layout/src/main/java/com/itextpdf/layout/font/RangeBuilder.java index f4c9012e49..7207d93c99 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/RangeBuilder.java +++ b/layout/src/main/java/com/itextpdf/layout/font/RangeBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/AbstractFontSelectorStrategy.java b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/AbstractFontSelectorStrategy.java index ca2e5da639..2d28084c26 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/AbstractFontSelectorStrategy.java +++ b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/AbstractFontSelectorStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategy.java b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategy.java index 08688b390c..bd7cee5975 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategy.java +++ b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategy.java b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategy.java index 7a7c33a817..112599de00 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategy.java +++ b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategy.java b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategy.java index 0b75cf3b25..0a7dc3e265 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategy.java +++ b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategyFactory.java b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategyFactory.java index 0324fe991c..2153fbf490 100644 --- a/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategyFactory.java +++ b/layout/src/main/java/com/itextpdf/layout/font/selectorstrategy/IFontSelectorStrategyFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConfig.java b/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConfig.java index aaa473e3b4..1489b2ab3a 100644 --- a/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConfig.java +++ b/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConfig.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConstants.java b/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConstants.java index f43bb2c9d2..3800da0c9b 100644 --- a/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConstants.java +++ b/layout/src/main/java/com/itextpdf/layout/hyphenation/HyphenationConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/hyphenation/TernaryTreeIterator.java b/layout/src/main/java/com/itextpdf/layout/hyphenation/TernaryTreeIterator.java index eea431c4bc..a980de393f 100644 --- a/layout/src/main/java/com/itextpdf/layout/hyphenation/TernaryTreeIterator.java +++ b/layout/src/main/java/com/itextpdf/layout/hyphenation/TernaryTreeIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LayoutArea.java b/layout/src/main/java/com/itextpdf/layout/layout/LayoutArea.java index f04d42e68c..5e848e001d 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LayoutArea.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LayoutArea.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LayoutContext.java b/layout/src/main/java/com/itextpdf/layout/layout/LayoutContext.java index a60a1ad1e3..e4f58cba65 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LayoutContext.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LayoutContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LayoutPosition.java b/layout/src/main/java/com/itextpdf/layout/layout/LayoutPosition.java index d170011c81..e0ac654c5f 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LayoutPosition.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LayoutPosition.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LayoutResult.java b/layout/src/main/java/com/itextpdf/layout/layout/LayoutResult.java index dfab55fb5d..7e9a38fc24 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LayoutResult.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LayoutResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutContext.java b/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutContext.java index 246745e5b2..e3bf67acc4 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutContext.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutResult.java b/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutResult.java index dea9cde6fb..550ddb4d98 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutResult.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/LineLayoutResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/MinMaxWidthLayoutResult.java b/layout/src/main/java/com/itextpdf/layout/layout/MinMaxWidthLayoutResult.java index fec779cb50..d8f0ccda0a 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/MinMaxWidthLayoutResult.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/MinMaxWidthLayoutResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/PositionedLayoutContext.java b/layout/src/main/java/com/itextpdf/layout/layout/PositionedLayoutContext.java index 8c91cad39c..b19f053793 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/PositionedLayoutContext.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/PositionedLayoutContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/RootLayoutArea.java b/layout/src/main/java/com/itextpdf/layout/layout/RootLayoutArea.java index 12c3978b6a..5b105e31b4 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/RootLayoutArea.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/RootLayoutArea.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/layout/TextLayoutResult.java b/layout/src/main/java/com/itextpdf/layout/layout/TextLayoutResult.java index 3c930dd501..217a1e60e4 100644 --- a/layout/src/main/java/com/itextpdf/layout/layout/TextLayoutResult.java +++ b/layout/src/main/java/com/itextpdf/layout/layout/TextLayoutResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/logs/LayoutLogMessageConstant.java b/layout/src/main/java/com/itextpdf/layout/logs/LayoutLogMessageConstant.java index 7727b7ce84..74c9266cc3 100644 --- a/layout/src/main/java/com/itextpdf/layout/logs/LayoutLogMessageConstant.java +++ b/layout/src/main/java/com/itextpdf/layout/logs/LayoutLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapse.java b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapse.java index 834292076a..fd8d66b498 100644 --- a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapse.java +++ b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapse.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandler.java b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandler.java index 9a0f0f380f..11dd2552fd 100644 --- a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseInfo.java b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseInfo.java index 19e171524d..8ad2deb772 100644 --- a/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseInfo.java +++ b/layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidth.java b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidth.java index df70c8ee77..877f5217c8 100644 --- a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidth.java +++ b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidth.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidthUtils.java b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidthUtils.java index f82f5e7d1c..131c38a01d 100644 --- a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidthUtils.java +++ b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/MinMaxWidthUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/RotationMinMaxWidth.java b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/RotationMinMaxWidth.java index 09e884db28..9ef03ea04c 100644 --- a/layout/src/main/java/com/itextpdf/layout/minmaxwidth/RotationMinMaxWidth.java +++ b/layout/src/main/java/com/itextpdf/layout/minmaxwidth/RotationMinMaxWidth.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/AlignContentPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/AlignContentPropertyValue.java index 6986c45474..7d96816470 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/AlignContentPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/AlignContentPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/AlignmentPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/AlignmentPropertyValue.java index a5c8382cef..5353afddb5 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/AlignmentPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/AlignmentPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/AreaBreakType.java b/layout/src/main/java/com/itextpdf/layout/properties/AreaBreakType.java index f230605887..159fbfd807 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/AreaBreakType.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/AreaBreakType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/Background.java b/layout/src/main/java/com/itextpdf/layout/properties/Background.java index 818885ab01..0b4999c96d 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/Background.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/Background.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundBox.java b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundBox.java index c938df74d5..e4f8070bd4 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundBox.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundBox.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundImage.java b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundImage.java index 8d132c4467..1d3ccf7849 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundImage.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundImage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundPosition.java b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundPosition.java index 9f09da0b9f..c0b6ba3051 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundPosition.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundPosition.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundRepeat.java b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundRepeat.java index 0e1d918deb..0e2fff4ab9 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundRepeat.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundRepeat.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundSize.java b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundSize.java index 791a902c71..69ef80ee5a 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BackgroundSize.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BackgroundSize.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BaseDirection.java b/layout/src/main/java/com/itextpdf/layout/properties/BaseDirection.java index 520bdbf084..e118af7820 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BaseDirection.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BaseDirection.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BlendMode.java b/layout/src/main/java/com/itextpdf/layout/properties/BlendMode.java index 4a1304d7df..4b4a35de1f 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BlendMode.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BlendMode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BorderCollapsePropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/BorderCollapsePropertyValue.java index 4833669e68..4a9f0c740b 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BorderCollapsePropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BorderCollapsePropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BorderRadius.java b/layout/src/main/java/com/itextpdf/layout/properties/BorderRadius.java index 3de044dbc7..7ddb2b8d43 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BorderRadius.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BorderRadius.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/BoxSizingPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/BoxSizingPropertyValue.java index 109f961360..3166dec18a 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/BoxSizingPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/BoxSizingPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/CaptionSide.java b/layout/src/main/java/com/itextpdf/layout/properties/CaptionSide.java index 983526379e..90622a48a9 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/CaptionSide.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/CaptionSide.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ClearPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/ClearPropertyValue.java index fdadf27773..aee4991287 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ClearPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ClearPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ContinuousContainer.java b/layout/src/main/java/com/itextpdf/layout/properties/ContinuousContainer.java index fa65e02be1..6d3ad38e00 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ContinuousContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ContinuousContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/FlexDirectionPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/FlexDirectionPropertyValue.java index 3e72dd1681..0620f0098f 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/FlexDirectionPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/FlexDirectionPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/FlexWrapPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/FlexWrapPropertyValue.java index 821b0fe4ac..c0abf1061e 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/FlexWrapPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/FlexWrapPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/FloatPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/FloatPropertyValue.java index ed9c32956c..cf94cfba11 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/FloatPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/FloatPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/FontKerning.java b/layout/src/main/java/com/itextpdf/layout/properties/FontKerning.java index 05eaf16c67..459da01aa6 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/FontKerning.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/FontKerning.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/HorizontalAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/HorizontalAlignment.java index 4ba9049834..661bda17f9 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/HorizontalAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/HorizontalAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/IBeforeTextRestoreExecutor.java b/layout/src/main/java/com/itextpdf/layout/properties/IBeforeTextRestoreExecutor.java index 5db698b392..c516baadbd 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/IBeforeTextRestoreExecutor.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/IBeforeTextRestoreExecutor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/IListSymbolFactory.java b/layout/src/main/java/com/itextpdf/layout/properties/IListSymbolFactory.java index 3ecdeab8f3..eae83e6c28 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/IListSymbolFactory.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/IListSymbolFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignment.java index 3333030817..738bde722c 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignmentType.java b/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignmentType.java index d9cedf36b1..437b6d508f 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignmentType.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/InlineVerticalAlignmentType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/JustifyContent.java b/layout/src/main/java/com/itextpdf/layout/properties/JustifyContent.java index cd3988f5c6..5628bbc5ab 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/JustifyContent.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/JustifyContent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/Leading.java b/layout/src/main/java/com/itextpdf/layout/properties/Leading.java index e17903190b..fe1849fb23 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/Leading.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/Leading.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/LineHeight.java b/layout/src/main/java/com/itextpdf/layout/properties/LineHeight.java index c6e4f13909..53a61e79cb 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/LineHeight.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/LineHeight.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ListNumberingType.java b/layout/src/main/java/com/itextpdf/layout/properties/ListNumberingType.java index 60a5214ae2..5c3684453c 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ListNumberingType.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ListNumberingType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolAlignment.java index f51799c787..1634be33db 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolPosition.java b/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolPosition.java index 438b77a5da..2d64a8c588 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolPosition.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ListSymbolPosition.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ObjectFit.java b/layout/src/main/java/com/itextpdf/layout/properties/ObjectFit.java index fb611afacd..7407324895 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ObjectFit.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ObjectFit.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/OverflowPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/OverflowPropertyValue.java index 322c488cb8..832a12dc59 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/OverflowPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/OverflowPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/OverflowWrapPropertyValue.java b/layout/src/main/java/com/itextpdf/layout/properties/OverflowWrapPropertyValue.java index 34409b4576..49d13fa6fb 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/OverflowWrapPropertyValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/OverflowWrapPropertyValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ParagraphOrphansControl.java b/layout/src/main/java/com/itextpdf/layout/properties/ParagraphOrphansControl.java index 91126e2e96..0129d092ef 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ParagraphOrphansControl.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ParagraphOrphansControl.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/ParagraphWidowsControl.java b/layout/src/main/java/com/itextpdf/layout/properties/ParagraphWidowsControl.java index a73b52a114..5d2ffc4e17 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/ParagraphWidowsControl.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/ParagraphWidowsControl.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/Property.java b/layout/src/main/java/com/itextpdf/layout/properties/Property.java index 3fce3f5154..b32ffcd59a 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/Property.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/Property.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/RenderingMode.java b/layout/src/main/java/com/itextpdf/layout/properties/RenderingMode.java index 3e3e6ae2be..4e69a87c68 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/RenderingMode.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/RenderingMode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/TabAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/TabAlignment.java index 7aa3729561..b3a406f79a 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/TabAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/TabAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/TextAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/TextAlignment.java index 2a7d1741e2..07e2af156e 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/TextAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/TextAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/TextAnchor.java b/layout/src/main/java/com/itextpdf/layout/properties/TextAnchor.java index 345dc48aa4..ecb83ebbe0 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/TextAnchor.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/TextAnchor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/Transform.java b/layout/src/main/java/com/itextpdf/layout/properties/Transform.java index 84532b1b73..b92bf36b78 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/Transform.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/Transform.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/TransparentColor.java b/layout/src/main/java/com/itextpdf/layout/properties/TransparentColor.java index 38d8794a04..3a793a7900 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/TransparentColor.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/TransparentColor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/Underline.java b/layout/src/main/java/com/itextpdf/layout/properties/Underline.java index a9db20937d..c7f4be7df1 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/Underline.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/Underline.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/UnitValue.java b/layout/src/main/java/com/itextpdf/layout/properties/UnitValue.java index f41a9cd473..1ed7d94678 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/UnitValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/UnitValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/VerticalAlignment.java b/layout/src/main/java/com/itextpdf/layout/properties/VerticalAlignment.java index 02bf3eadde..3716aa36b2 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/VerticalAlignment.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/VerticalAlignment.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoRepeatValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoRepeatValue.java index c2032dbbc1..806226c662 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoRepeatValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoRepeatValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoValue.java index 31ee6e3091..021906775b 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/AutoValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/BreadthValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/BreadthValue.java index da7c3bb83e..4303b90b88 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/BreadthValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/BreadthValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/FitContentValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/FitContentValue.java index 120db5f218..3e8708f800 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/FitContentValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/FitContentValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/FixedRepeatValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/FixedRepeatValue.java index fa5c33d669..bb878e30e8 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/FixedRepeatValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/FixedRepeatValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/FlexValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/FlexValue.java index eabb25bdf7..ccd7fb75b4 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/FlexValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/FlexValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/FunctionValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/FunctionValue.java index 166e8e65f4..d66402524e 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/FunctionValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/FunctionValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/GridFlow.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/GridFlow.java index 13fcb06f7f..f75fd6684a 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/GridFlow.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/GridFlow.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/GridValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/GridValue.java index 639ef22cf1..cf90776014 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/GridValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/GridValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/LengthValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/LengthValue.java index 9fd0a7ac37..2f0f42e6da 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/LengthValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/LengthValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/MaxContentValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/MaxContentValue.java index 45953a58db..3fe1e66039 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/MaxContentValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/MaxContentValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/MinContentValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/MinContentValue.java index 1a360510c9..661c31cb5e 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/MinContentValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/MinContentValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/MinMaxValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/MinMaxValue.java index eb4e0814bd..06eb636139 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/MinMaxValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/MinMaxValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/PercentValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/PercentValue.java index fc44d12941..f0412e3ce5 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/PercentValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/PercentValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/PointValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/PointValue.java index 1f3dd640c8..3eff9d2a97 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/PointValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/PointValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/properties/grid/TemplateValue.java b/layout/src/main/java/com/itextpdf/layout/properties/grid/TemplateValue.java index 029735afb5..5b986bdb92 100644 --- a/layout/src/main/java/com/itextpdf/layout/properties/grid/TemplateValue.java +++ b/layout/src/main/java/com/itextpdf/layout/properties/grid/TemplateValue.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AbstractRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/AbstractRenderer.java index a383819b14..9c4230f9eb 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AbstractRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AbstractRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AbstractWidthHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/AbstractWidthHandler.java index 3eb1b83a75..9190d46ec3 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AbstractWidthHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AbstractWidthHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleAttributesApplier.java b/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleAttributesApplier.java index 7533de31a5..0ac1579c75 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleAttributesApplier.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleAttributesApplier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleTypes.java b/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleTypes.java index a6c0375d9f..1bb37a4b0d 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleTypes.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AccessibleTypes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AnonymousInlineBoxRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/AnonymousInlineBoxRenderer.java index d408b5c479..d426bfde3f 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AnonymousInlineBoxRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AnonymousInlineBoxRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/AreaBreakRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/AreaBreakRenderer.java index b0d046e65e..77cca48f4a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/AreaBreakRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/AreaBreakRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/BlockFormattingContextUtil.java b/layout/src/main/java/com/itextpdf/layout/renderer/BlockFormattingContextUtil.java index c940b4e2da..f3269e6c4d 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/BlockFormattingContextUtil.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/BlockFormattingContextUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/BlockRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/BlockRenderer.java index 9f162f3d01..1a82f142c9 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/BlockRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/BlockRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -70,6 +70,10 @@ This file is part of the iText (R) project. */ public abstract class BlockRenderer extends AbstractRenderer { + // Use that value so that layout is independent of whether we are in the bottom of the page or in the + // top of the page + private static final float POSITIONED_CHILDREN_LAYOUT_MIN_HEIGHT = 1000F; + /** * Creates a BlockRenderer from its corresponding layout object. * @@ -421,23 +425,7 @@ public LayoutResult layout(LayoutContext layoutContext) { updateHeightsOnSplit(usedHeight, wasHeightClipped, splitRenderer, overflowRenderer, includeFloatsInOccupiedArea); } - if (!positionedRenderers.isEmpty()) { - for (IRenderer childPositionedRenderer : positionedRenderers) { - Rectangle fullBbox = occupiedArea.getBBox().clone(); - - // Use that value so that layout is independent of whether we are in the bottom of the page or in the - // top of the page - float layoutMinHeight = 1000; - fullBbox.moveDown(layoutMinHeight).setHeight(layoutMinHeight + fullBbox.getHeight()); - LayoutArea parentArea = new LayoutArea(occupiedArea.getPageNumber(), occupiedArea.getBBox().clone()); - applyPaddings(parentArea.getBBox(), paddings, true); - - preparePositionedRendererAndAreaForLayout(childPositionedRenderer, fullBbox, parentArea.getBBox()); - childPositionedRenderer.layout( - new PositionedLayoutContext(new LayoutArea(occupiedArea.getPageNumber(), fullBbox), - parentArea)); - } - } + layoutPositionedChildrenIfAny(this, paddings); if (isPositioned) { correctFixedLayout(); @@ -674,6 +662,18 @@ AbstractRenderer[] createSplitAndOverflowRenderers(int childPos, int layoutStatu } overflowRenderer.childRenderers.addAll(childRenderers.subList(childPos + 1, childRenderers.size())); + // Keep absolutely positioned descendants anchored to the FIRST fragment. + // If the first fragment is actually NOTHING, then the overflow is the first placed fragment. + if (!this.positionedRenderers.isEmpty()) { + AbstractRenderer positionedRenderersNewParent = layoutStatus == LayoutResult.NOTHING + ? overflowRenderer + : splitRenderer; + positionedRenderersNewParent.positionedRenderers = new ArrayList<>(this.positionedRenderers); + for (IRenderer positionedChild : positionedRenderersNewParent.positionedRenderers) { + positionedChild.setParent(positionedRenderersNewParent); + } + } + if (layoutStatus != LayoutResult.NOTHING) { ContinuousContainer.clearPropertiesFromOverFlowRenderer(overflowRenderer); } @@ -910,6 +910,9 @@ LayoutResult processNotFullChildResult(LayoutContext layoutContext, correctFixedLayout(); + // Ensure positioned children are laid out for the split part before returning early. + layoutPositionedChildrenIfAny(splitRenderer, paddings); + LayoutArea editedArea = FloatingHelper.adjustResultOccupiedAreaForFloatAndClear(this, layoutContext.getFloatRendererAreas(), layoutContext.getArea().getBBox(), clearHeightCorrection, marginsCollapsingEnabled); if (wasHeightClipped) { return new LayoutResult(LayoutResult.FULL, editedArea, splitRenderer, null); @@ -931,10 +934,6 @@ LayoutResult processNotFullChildResult(LayoutContext layoutContext, AbstractRenderer splitRenderer = splitAndOverflowRenderers[0]; AbstractRenderer overflowRenderer = splitAndOverflowRenderers[1]; - if (isRelativePosition() && !positionedRenderers.isEmpty()) { - overflowRenderer.positionedRenderers = new ArrayList<>(positionedRenderers); - } - updateHeightsOnSplit(wasHeightClipped, splitRenderer, overflowRenderer); if (keepTogether) { @@ -951,6 +950,9 @@ LayoutResult processNotFullChildResult(LayoutContext layoutContext, applyAbsolutePositionIfNeeded(layoutContext); + // Ensure positioned children are laid out (if any exists) for the split part before returning early. + layoutPositionedChildrenIfAny(splitRenderer, paddings); + if (Boolean.TRUE.equals(getPropertyAsBoolean(Property.FORCED_PLACEMENT)) || wasHeightClipped) { LayoutArea editedArea = FloatingHelper.adjustResultOccupiedAreaForFloatAndClear(this, layoutContext.getFloatRendererAreas(), layoutContext.getArea().getBBox(), clearHeightCorrection, marginsCollapsingEnabled); return new LayoutResult(LayoutResult.FULL, editedArea, splitRenderer, null, null); @@ -1182,4 +1184,35 @@ private void addMarkedContent(DrawContext drawContext, boolean isBegin) { } } } + + /** + * Layout positioned children for the specified renderer instance. + * This is needed because some split/overflow code steps return early from layout(), + * skipping the normal positioned-children layout step at the end of layout(). + * + * @param parent renderer which positioned children to layout + * @param paddings current renderer paddings to apply + */ + private static void layoutPositionedChildrenIfAny(AbstractRenderer parent, UnitValue[] paddings) { + if (parent == null || parent.positionedRenderers == null || parent.positionedRenderers.isEmpty() + || parent.occupiedArea == null) { + return; + } + + for (IRenderer childPositionedRenderer : parent.positionedRenderers) { + Rectangle fullBbox = parent.occupiedArea.getBBox().clone(); + + fullBbox.moveDown(POSITIONED_CHILDREN_LAYOUT_MIN_HEIGHT) + .setHeight(POSITIONED_CHILDREN_LAYOUT_MIN_HEIGHT + fullBbox.getHeight()); + + LayoutArea parentArea = new LayoutArea(parent.occupiedArea.getPageNumber(), + parent.occupiedArea.getBBox().clone()); + parent.applyPaddings(parentArea.getBBox(), paddings, true); + + parent.preparePositionedRendererAndAreaForLayout(childPositionedRenderer, fullBbox, parentArea.getBBox()); + childPositionedRenderer.layout( + new PositionedLayoutContext(new LayoutArea(parent.occupiedArea.getPageNumber(), fullBbox), + parentArea)); + } + } } diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/BottomToTopFlexItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/BottomToTopFlexItemMainDirector.java index c3c170cc09..f8363fde64 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/BottomToTopFlexItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/BottomToTopFlexItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/CanvasRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/CanvasRenderer.java index 46c3651c75..7e3a89e6b5 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/CanvasRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/CanvasRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/CellRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/CellRenderer.java index 70eccc0672..b77dc043f4 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/CellRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/CellRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/CollapsedTableBorders.java b/layout/src/main/java/com/itextpdf/layout/renderer/CollapsedTableBorders.java index 54290e4261..cf110df38a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/CollapsedTableBorders.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/CollapsedTableBorders.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/DivRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/DivRenderer.java index 6ed4711389..b0d11eff4e 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/DivRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/DivRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/DocumentRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/DocumentRenderer.java index 54ef1900a1..705653c4c4 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/DocumentRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/DocumentRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/DrawContext.java b/layout/src/main/java/com/itextpdf/layout/renderer/DrawContext.java index 08e808f4e0..18b4ec2069 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/DrawContext.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/DrawContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/FlexColumnItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/FlexColumnItemMainDirector.java index 75da57f4d9..7ffc122595 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/FlexColumnItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/FlexColumnItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/FlexContainerRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/FlexContainerRenderer.java index cb72021b62..120d6a4858 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/FlexContainerRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/FlexContainerRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/FlexItemInfo.java b/layout/src/main/java/com/itextpdf/layout/renderer/FlexItemInfo.java index 78ae6edb8d..e2d7440a41 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/FlexItemInfo.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/FlexItemInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/FlexUtil.java b/layout/src/main/java/com/itextpdf/layout/renderer/FlexUtil.java index c7a11dde26..b71db833a0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/FlexUtil.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/FlexUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/FloatingHelper.java b/layout/src/main/java/com/itextpdf/layout/renderer/FloatingHelper.java index 19349231d9..e42b46ce95 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/FloatingHelper.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/FloatingHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/Grid.java b/layout/src/main/java/com/itextpdf/layout/renderer/Grid.java index 69d6446c45..9178a76895 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/Grid.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/Grid.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -620,4 +620,4 @@ void fit(GridCell cell) { } } } -} \ No newline at end of file +} diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridCell.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridCell.java index 464290924c..b2a3bf0f85 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridCell.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridCell.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -126,4 +126,4 @@ float[] getRowSizes() { void setRowSizes(float[] rowSizes) { this.rowSizes = rowSizes; } -} \ No newline at end of file +} diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridContainerRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridContainerRenderer.java index 260ddc7c1c..7a8040bd53 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridContainerRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridContainerRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridItemRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridItemRenderer.java index 41b8490192..5017b7c6d8 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridItemRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridItemRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridMulticolUtil.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridMulticolUtil.java index c6a9b3d8b6..9b538a13e1 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridMulticolUtil.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridMulticolUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridSizer.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridSizer.java index d632e8449b..efeb784e2f 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridSizer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridSizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridTemplateResolver.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridTemplateResolver.java index 696d035d36..30e3f89318 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridTemplateResolver.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridTemplateResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/GridView.java b/layout/src/main/java/com/itextpdf/layout/renderer/GridView.java index 5228932759..021cebb892 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/GridView.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/GridView.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -287,4 +287,4 @@ public void reset() { this.y = 0; } } -} \ No newline at end of file +} diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/IFlexItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/IFlexItemMainDirector.java index f4c2f74427..48565bdd3f 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/IFlexItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/IFlexItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/ILeafElementRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/ILeafElementRenderer.java index 6e529fb8a9..fcd7077a5a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/ILeafElementRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/ILeafElementRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/IRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/IRenderer.java index 1efa068cb0..dac23bf103 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/IRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/IRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/ImageRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/ImageRenderer.java index 747f593118..a43066c933 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/ImageRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/ImageRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/InlineVerticalAlignmentHelper.java b/layout/src/main/java/com/itextpdf/layout/renderer/InlineVerticalAlignmentHelper.java index dc2958b335..af403500c0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/InlineVerticalAlignmentHelper.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/InlineVerticalAlignmentHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/LineHeightHelper.java b/layout/src/main/java/com/itextpdf/layout/renderer/LineHeightHelper.java index 7622b1e17b..f098a4d1eb 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/LineHeightHelper.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/LineHeightHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/LineRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/LineRenderer.java index a8d4a45207..0904fe9e4a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/LineRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/LineRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/LineSeparatorRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/LineSeparatorRenderer.java index 7c0bac1866..d849162b7a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/LineSeparatorRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/LineSeparatorRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/LinkRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/LinkRenderer.java index e1fe30cd40..1ec9a689b0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/LinkRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/LinkRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/ListItemRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/ListItemRenderer.java index 0a88b7f0b8..3f3c59153a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/ListItemRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/ListItemRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/ListRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/ListRenderer.java index eb895f1f8f..5ade911f5d 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/ListRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/ListRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/LtrFlexItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/LtrFlexItemMainDirector.java index 6fbe288fe3..5046abaa82 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/LtrFlexItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/LtrFlexItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/MaxMaxWidthHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/MaxMaxWidthHandler.java index c7497c1438..d04cc104c0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/MaxMaxWidthHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/MaxMaxWidthHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/MaxSumWidthHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/MaxSumWidthHandler.java index 3b9e0d5fb0..cb16b1bc11 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/MaxSumWidthHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/MaxSumWidthHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/MetaInfoContainer.java b/layout/src/main/java/com/itextpdf/layout/renderer/MetaInfoContainer.java index 5f8bd53efe..8bec4ff369 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/MetaInfoContainer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/MetaInfoContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/MulticolRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/MulticolRenderer.java index 4ce6a86edc..0d5f778937 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/MulticolRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/MulticolRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/OrphansWidowsLayoutHelper.java b/layout/src/main/java/com/itextpdf/layout/renderer/OrphansWidowsLayoutHelper.java index ddedb78ba5..079b193b4a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/OrphansWidowsLayoutHelper.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/OrphansWidowsLayoutHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/ParagraphRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/ParagraphRenderer.java index 52d5646fb7..a3576016a7 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/ParagraphRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/ParagraphRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/RootRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/RootRenderer.java index cb70e6c58f..084ee70ce6 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/RootRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/RootRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/RootRendererAreaStateHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/RootRendererAreaStateHandler.java index 9eb8fc60a5..bd66e881aa 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/RootRendererAreaStateHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/RootRendererAreaStateHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/RotationUtils.java b/layout/src/main/java/com/itextpdf/layout/renderer/RotationUtils.java index 5317c809f1..3a41ac20d3 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/RotationUtils.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/RotationUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/RtlFlexItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/RtlFlexItemMainDirector.java index a9da76c3f7..bced60cec0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/RtlFlexItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/RtlFlexItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/SeparatedTableBorders.java b/layout/src/main/java/com/itextpdf/layout/renderer/SeparatedTableBorders.java index 4816b87ef4..3d4cbc7945 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/SeparatedTableBorders.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/SeparatedTableBorders.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/SumSumWidthHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/SumSumWidthHandler.java index bd8005ab0d..c772616f14 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/SumSumWidthHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/SumSumWidthHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TabRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/TabRenderer.java index 83f3257746..618c43f983 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TabRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TabRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderDescriptor.java b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderDescriptor.java index 69443c87ff..7cd438df69 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderDescriptor.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderDescriptor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderUtil.java b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderUtil.java index 966e4bfceb..c629878a10 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderUtil.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorderUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorders.java b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorders.java index 874f097423..c7a3c0b036 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TableBorders.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TableBorders.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TableRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/TableRenderer.java index 7573140b65..144fc8f754 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TableRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TableRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,8 +44,6 @@ This file is part of the iText (R) project. import com.itextpdf.layout.properties.UnitValue; import com.itextpdf.layout.properties.VerticalAlignment; import com.itextpdf.layout.tagging.LayoutTaggingHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.ArrayDeque; import java.util.ArrayList; @@ -54,6 +52,8 @@ This file is part of the iText (R) project. import java.util.HashMap; import java.util.List; import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * This class represents the {@link IRenderer renderer} object for a {@link Table} @@ -1969,38 +1969,46 @@ private void enlargeCellWithBigRowspan(CellRenderer[] currentRow, OverflowRowsWr // the number of cells behind is less than minRowspan-1 // so we should process the last cell in the column as in the case 1 == minRowspan if (i != row + minRowspan - 1 && null != rows.get(i)[col]) { - CellRenderer overflowCell = (CellRenderer) ((Cell) rows.get(i)[col].getModelElement()).getRenderer().setParent(this); + CellRenderer originalCell = rows.get(i)[col]; + CellRenderer overflowCell = (CellRenderer) originalCell.createOverflowRenderer(-1); + overflowRows.setCell(i - row, col, null); overflowRows.setCell(targetOverflowRowIndex[col] - row, col, overflowCell); - CellRenderer originalCell = rows.get(i)[col]; rows.get(i)[col] = null; rows.get(targetOverflowRowIndex[col])[col] = originalCell; originalCell.isLastRendererForModelElement = false; - overflowCell.setProperty(Property.TAGGING_HINT_KEY, originalCell.getProperty(Property.TAGGING_HINT_KEY)); } } - private void enlargeCell(int col, int row, int minRowspan, CellRenderer[] currentRow, OverflowRowsWrapper overflowRows, - int[] targetOverflowRowIndex, TableRenderer[] splitResult) { + private void enlargeCell(int col, int row, int minRowspan, CellRenderer[] currentRow, + OverflowRowsWrapper overflowRows, int[] targetOverflowRowIndex, TableRenderer[] splitResult) { + LayoutArea cellOccupiedArea = currentRow[col].getOccupiedArea(); if (1 == minRowspan) { - // Here we use the same cell, but create a new renderer which doesn't have any children, // therefore it won't have any content. // we will change properties - CellRenderer overflowCell = (CellRenderer) ((Cell) currentRow[col].getModelElement()).clone(true).getRenderer(); + + Cell cellClone = ((Cell) currentRow[col].getModelElement()).clone(true); + CellRenderer overflowCell = (CellRenderer) cellClone.getRenderer(); overflowCell.setParent(this); + // Remove properties from model element + overflowCell.deleteProperty(Property.HEIGHT); + overflowCell.deleteProperty(Property.MIN_HEIGHT); + overflowCell.deleteProperty(Property.MAX_HEIGHT); + CellRenderer originalCell = currentRow[col]; + overflowCell.addAllProperties(originalCell.getOwnProperties()); + // Remove properties from renderer after copying overflowCell.deleteProperty(Property.HEIGHT); overflowCell.deleteProperty(Property.MIN_HEIGHT); overflowCell.deleteProperty(Property.MAX_HEIGHT); + overflowRows.setCell(0, col, null); overflowRows.setCell(targetOverflowRowIndex[col] - row, col, overflowCell); childRenderers.add(currentRow[col]); - CellRenderer originalCell = currentRow[col]; currentRow[col] = null; rows.get(targetOverflowRowIndex[col])[col] = originalCell; originalCell.isLastRendererForModelElement = false; - overflowCell.setProperty(Property.TAGGING_HINT_KEY, originalCell.getProperty(Property.TAGGING_HINT_KEY)); } else { enlargeCellWithBigRowspan(currentRow, overflowRows, row, col, minRowspan, splitResult, targetOverflowRowIndex); } diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TableWidths.java b/layout/src/main/java/com/itextpdf/layout/renderer/TableWidths.java index 0ee12f06d6..41c787b010 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TableWidths.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TableWidths.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TargetCounterHandler.java b/layout/src/main/java/com/itextpdf/layout/renderer/TargetCounterHandler.java index b5a7d00c17..953308a0a1 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TargetCounterHandler.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TargetCounterHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TextPreprocessingUtil.java b/layout/src/main/java/com/itextpdf/layout/renderer/TextPreprocessingUtil.java index f0bf3f3ae5..dbbbb29875 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TextPreprocessingUtil.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TextPreprocessingUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TextRenderer.java b/layout/src/main/java/com/itextpdf/layout/renderer/TextRenderer.java index 2a93f845cb..34cfcdfcb5 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TextRenderer.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TextRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TextSequenceWordWrapping.java b/layout/src/main/java/com/itextpdf/layout/renderer/TextSequenceWordWrapping.java index 965fb0dbf5..a2b9f210a9 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TextSequenceWordWrapping.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TextSequenceWordWrapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TopToBottomFlexItemMainDirector.java b/layout/src/main/java/com/itextpdf/layout/renderer/TopToBottomFlexItemMainDirector.java index 5d80855115..efe424e5c5 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TopToBottomFlexItemMainDirector.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TopToBottomFlexItemMainDirector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/TypographyUtils.java b/layout/src/main/java/com/itextpdf/layout/renderer/TypographyUtils.java index 5e4d3dfcca..9eccc35b06 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/TypographyUtils.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/TypographyUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResult.java b/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResult.java index 844e9fb76d..62e1389bd0 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResult.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculator.java b/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculator.java index 9e72e03f17..bf7965bb8c 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculator.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/typography/AbstractTypographyApplier.java b/layout/src/main/java/com/itextpdf/layout/renderer/typography/AbstractTypographyApplier.java index 49775f7f9c..d61b11e27c 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/typography/AbstractTypographyApplier.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/typography/AbstractTypographyApplier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/renderer/typography/DefaultTypographyApplier.java b/layout/src/main/java/com/itextpdf/layout/renderer/typography/DefaultTypographyApplier.java index cdef37d0d0..721921947a 100644 --- a/layout/src/main/java/com/itextpdf/layout/renderer/typography/DefaultTypographyApplier.java +++ b/layout/src/main/java/com/itextpdf/layout/renderer/typography/DefaultTypographyApplier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/splitting/BreakAllSplitCharacters.java b/layout/src/main/java/com/itextpdf/layout/splitting/BreakAllSplitCharacters.java index 797e4f7d52..c9e5a27675 100644 --- a/layout/src/main/java/com/itextpdf/layout/splitting/BreakAllSplitCharacters.java +++ b/layout/src/main/java/com/itextpdf/layout/splitting/BreakAllSplitCharacters.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/splitting/DefaultSplitCharacters.java b/layout/src/main/java/com/itextpdf/layout/splitting/DefaultSplitCharacters.java index f07ef8268f..cfddeac30b 100644 --- a/layout/src/main/java/com/itextpdf/layout/splitting/DefaultSplitCharacters.java +++ b/layout/src/main/java/com/itextpdf/layout/splitting/DefaultSplitCharacters.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/splitting/ISplitCharacters.java b/layout/src/main/java/com/itextpdf/layout/splitting/ISplitCharacters.java index 7c630cdb78..faff2c485e 100644 --- a/layout/src/main/java/com/itextpdf/layout/splitting/ISplitCharacters.java +++ b/layout/src/main/java/com/itextpdf/layout/splitting/ISplitCharacters.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/splitting/KeepAllSplitCharacters.java b/layout/src/main/java/com/itextpdf/layout/splitting/KeepAllSplitCharacters.java index b21bf78619..a57277f434 100644 --- a/layout/src/main/java/com/itextpdf/layout/splitting/KeepAllSplitCharacters.java +++ b/layout/src/main/java/com/itextpdf/layout/splitting/KeepAllSplitCharacters.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/IAccessibleElement.java b/layout/src/main/java/com/itextpdf/layout/tagging/IAccessibleElement.java index 7e3b568831..33db7d0277 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/IAccessibleElement.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/IAccessibleElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/ITaggingRule.java b/layout/src/main/java/com/itextpdf/layout/tagging/ITaggingRule.java index 4eff2285a4..ca0650b9e6 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/ITaggingRule.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/ITaggingRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/LayoutTaggingHelper.java b/layout/src/main/java/com/itextpdf/layout/tagging/LayoutTaggingHelper.java index ca597cff31..5188dc7a0b 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/LayoutTaggingHelper.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/LayoutTaggingHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -832,4 +832,4 @@ private static class ScanContext { TagTreePointer parentPointer; TagTreePointer nextSiblingPointer; } -} \ No newline at end of file +} diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolver.java b/layout/src/main/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolver.java index 3ef85e0bbf..bab7c7c7a3 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolver.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/THTaggingRule.java b/layout/src/main/java/com/itextpdf/layout/tagging/THTaggingRule.java index 977195d545..8f7e11a8b6 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/THTaggingRule.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/THTaggingRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingPriorToOneFiveVersionRule.java b/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingPriorToOneFiveVersionRule.java index cb142547fc..83f17b63c0 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingPriorToOneFiveVersionRule.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingPriorToOneFiveVersionRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingRule.java b/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingRule.java index e984353e2a..8a1a704038 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingRule.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/TableTaggingRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/TaggingDummyElement.java b/layout/src/main/java/com/itextpdf/layout/tagging/TaggingDummyElement.java index fc1e97a54e..4f2712b8da 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/TaggingDummyElement.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/TaggingDummyElement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/tagging/TaggingHintKey.java b/layout/src/main/java/com/itextpdf/layout/tagging/TaggingHintKey.java index 766d8e197e..1d36e16fa2 100644 --- a/layout/src/main/java/com/itextpdf/layout/tagging/TaggingHintKey.java +++ b/layout/src/main/java/com/itextpdf/layout/tagging/TaggingHintKey.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/main/java/com/itextpdf/layout/validation/context/LayoutValidationContext.java b/layout/src/main/java/com/itextpdf/layout/validation/context/LayoutValidationContext.java index 62d42e6b69..7e8a82f7bc 100644 --- a/layout/src/main/java/com/itextpdf/layout/validation/context/LayoutValidationContext.java +++ b/layout/src/main/java/com/itextpdf/layout/validation/context/LayoutValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigCustomMembers.java b/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigCustomMembers.java index 07c8decb1e..3cee240aa1 100644 --- a/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigCustomMembers.java +++ b/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigCustomMembers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigMapping.java b/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigMapping.java index 9441e5f658..f17158e001 100644 --- a/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigMapping.java +++ b/layout/src/sharpenconfig/java/com/itextpdf/layout/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/AbstractTableTest.java b/layout/src/test/java/com/itextpdf/layout/AbstractTableTest.java index ee0a024cf8..cf098dd87b 100644 --- a/layout/src/test/java/com/itextpdf/layout/AbstractTableTest.java +++ b/layout/src/test/java/com/itextpdf/layout/AbstractTableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/AlignmentTest.java b/layout/src/test/java/com/itextpdf/layout/AlignmentTest.java index 313758d67a..83ec94f07f 100644 --- a/layout/src/test/java/com/itextpdf/layout/AlignmentTest.java +++ b/layout/src/test/java/com/itextpdf/layout/AlignmentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -664,7 +664,7 @@ public void middleAlignmentWithTtfOS2Version3Test() throws IOException, Interrup try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName))) { Document document = new Document(pdfDoc); - PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "Open_Sans/OpenSans-Bold.ttf"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "OpenSans-Bold.ttf"); document.setFont(font); Paragraph p = new Paragraph(); diff --git a/layout/src/test/java/com/itextpdf/layout/AnonymousInlineBoxTest.java b/layout/src/test/java/com/itextpdf/layout/AnonymousInlineBoxTest.java index 647ba1503b..f2fc0233fd 100644 --- a/layout/src/test/java/com/itextpdf/layout/AnonymousInlineBoxTest.java +++ b/layout/src/test/java/com/itextpdf/layout/AnonymousInlineBoxTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/AreaBreakTest.java b/layout/src/test/java/com/itextpdf/layout/AreaBreakTest.java index c6fe871f27..c2ce450b90 100644 --- a/layout/src/test/java/com/itextpdf/layout/AreaBreakTest.java +++ b/layout/src/test/java/com/itextpdf/layout/AreaBreakTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/BackgroundColorTest.java b/layout/src/test/java/com/itextpdf/layout/BackgroundColorTest.java index 3503bb8839..67fe919d44 100644 --- a/layout/src/test/java/com/itextpdf/layout/BackgroundColorTest.java +++ b/layout/src/test/java/com/itextpdf/layout/BackgroundColorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/BackgroundPositionUnitTest.java b/layout/src/test/java/com/itextpdf/layout/BackgroundPositionUnitTest.java index cf9d6ba8ad..c4f174d9c6 100644 --- a/layout/src/test/java/com/itextpdf/layout/BackgroundPositionUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/BackgroundPositionUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/BlockTest.java b/layout/src/test/java/com/itextpdf/layout/BlockTest.java index 63a52da80b..11e285acf8 100644 --- a/layout/src/test/java/com/itextpdf/layout/BlockTest.java +++ b/layout/src/test/java/com/itextpdf/layout/BlockTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/BorderTest.java b/layout/src/test/java/com/itextpdf/layout/BorderTest.java index 180e286c81..0f042d8769 100644 --- a/layout/src/test/java/com/itextpdf/layout/BorderTest.java +++ b/layout/src/test/java/com/itextpdf/layout/BorderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/CanvasTest.java b/layout/src/test/java/com/itextpdf/layout/CanvasTest.java index fbb22f3462..8c853e61c5 100644 --- a/layout/src/test/java/com/itextpdf/layout/CanvasTest.java +++ b/layout/src/test/java/com/itextpdf/layout/CanvasTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/CanvasUnitTest.java b/layout/src/test/java/com/itextpdf/layout/CanvasUnitTest.java index 5e5de3bacc..ef5ed258fb 100644 --- a/layout/src/test/java/com/itextpdf/layout/CanvasUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/CanvasUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/CollapsingMarginsTest.java b/layout/src/test/java/com/itextpdf/layout/CollapsingMarginsTest.java index 1d2fedad99..eae053cec2 100644 --- a/layout/src/test/java/com/itextpdf/layout/CollapsingMarginsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/CollapsingMarginsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ComplexTableGenerator.java b/layout/src/test/java/com/itextpdf/layout/ComplexTableGenerator.java index f732cde8b5..da0c0bed3d 100644 --- a/layout/src/test/java/com/itextpdf/layout/ComplexTableGenerator.java +++ b/layout/src/test/java/com/itextpdf/layout/ComplexTableGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/CustomCurrentAreaTest.java b/layout/src/test/java/com/itextpdf/layout/CustomCurrentAreaTest.java index aa67c3dd1e..8835ee3b4b 100644 --- a/layout/src/test/java/com/itextpdf/layout/CustomCurrentAreaTest.java +++ b/layout/src/test/java/com/itextpdf/layout/CustomCurrentAreaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/DefaultLayoutTest.java b/layout/src/test/java/com/itextpdf/layout/DefaultLayoutTest.java index f11a6438e0..ce5103ed56 100644 --- a/layout/src/test/java/com/itextpdf/layout/DefaultLayoutTest.java +++ b/layout/src/test/java/com/itextpdf/layout/DefaultLayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/DestinationTest.java b/layout/src/test/java/com/itextpdf/layout/DestinationTest.java index 22a2211b11..fb95393a3b 100644 --- a/layout/src/test/java/com/itextpdf/layout/DestinationTest.java +++ b/layout/src/test/java/com/itextpdf/layout/DestinationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/DocumentTest.java b/layout/src/test/java/com/itextpdf/layout/DocumentTest.java index 1084a656f9..2d6319d0d3 100644 --- a/layout/src/test/java/com/itextpdf/layout/DocumentTest.java +++ b/layout/src/test/java/com/itextpdf/layout/DocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FixedHeightTest.java b/layout/src/test/java/com/itextpdf/layout/FixedHeightTest.java index 331d760845..83b77e5951 100644 --- a/layout/src/test/java/com/itextpdf/layout/FixedHeightTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FixedHeightTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FloatAndAlignmentTest.java b/layout/src/test/java/com/itextpdf/layout/FloatAndAlignmentTest.java index c291d5fcfe..24ce2672c7 100644 --- a/layout/src/test/java/com/itextpdf/layout/FloatAndAlignmentTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FloatAndAlignmentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FloatBlockTest.java b/layout/src/test/java/com/itextpdf/layout/FloatBlockTest.java index f5a5cff741..6efa3eee95 100644 --- a/layout/src/test/java/com/itextpdf/layout/FloatBlockTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FloatBlockTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FloatImageTest.java b/layout/src/test/java/com/itextpdf/layout/FloatImageTest.java index f2b44f310f..4d6a4f5566 100644 --- a/layout/src/test/java/com/itextpdf/layout/FloatImageTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FloatImageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FloatTest.java b/layout/src/test/java/com/itextpdf/layout/FloatTest.java index 573e1bced4..9c47f26682 100644 --- a/layout/src/test/java/com/itextpdf/layout/FloatTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FloatTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/FontProviderTest.java b/layout/src/test/java/com/itextpdf/layout/FontProviderTest.java index 69fc2dc28f..45edbad50d 100644 --- a/layout/src/test/java/com/itextpdf/layout/FontProviderTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FontProviderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -122,7 +122,7 @@ public void standardAndType3Fonts() throws Exception { @Test public void customFontProvider() throws Exception { - String fileName = "customFontProvider.pdf"; + String fileName = "customFontProvider"; String outFileName = destinationFolder + fileName + ".pdf"; String cmpFileName = sourceFolder + "cmp_" + fileName + ".pdf"; @@ -148,7 +148,7 @@ public void customFontProvider() throws Exception { @Test public void customFontProvider2() throws Exception { - String fileName = "customFontProvider2.pdf"; + String fileName = "customFontProvider2"; String outFileName = destinationFolder + fileName + ".pdf"; String cmpFileName = sourceFolder + "cmp_" + fileName + ".pdf"; diff --git a/layout/src/test/java/com/itextpdf/layout/FontSelectorTest.java b/layout/src/test/java/com/itextpdf/layout/FontSelectorTest.java index 3116ae395b..8c614b2ea2 100644 --- a/layout/src/test/java/com/itextpdf/layout/FontSelectorTest.java +++ b/layout/src/test/java/com/itextpdf/layout/FontSelectorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -81,7 +81,7 @@ public void cyrillicAndLatinGroup() throws Exception { FontProvider sel = new FontProvider(); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "FreeSans.ttf")); - Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", PdfEncodings.IDENTITY_H, "Puritan42")); + Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", PdfEncodings.IDENTITY_H, "Puritan42")); String s = "Hello world! Здравствуй мир! Hello world! Здравствуй мир!"; @@ -105,7 +105,7 @@ public void cyrillicAndLatinGroup2() throws Exception { String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName + ".pdf"; FontProvider sel = new FontProvider(); - Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan2.otf")); + Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan-Regular.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "FreeSans.ttf")); @@ -134,7 +134,7 @@ public void cyrillicAndLatinGroup3() throws Exception { Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "FreeSans.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); - Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan2.otf")); + Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan-Regular.ttf")); String s = "Hello world! Здравствуй мир! Hello world! Здравствуй мир!"; @@ -161,7 +161,7 @@ public void cyrillicAndLatinGroupFontAsStringValue() throws Exception { Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "FreeSans.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); - Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan2.otf")); + Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan-Regular.ttf")); String s = "Hello world! Здравствуй мир! Hello world! Здравствуй мир!"; @@ -188,7 +188,7 @@ public void latinAndNotdefGroup() throws Exception { String cmpFileName = SOURCE_FOLDER + "cmp_" + fileName + ".pdf"; FontProvider sel = new FontProvider(); - Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan2.otf")); + Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "Puritan-Regular.ttf")); String s = "Hello мир!"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(FileUtil.getFileOutputStream(outFileName))); @@ -320,8 +320,8 @@ public void searchNames() { FontProvider sel = new FontProvider(); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); Assertions.assertTrue(sel.addFont(FONTS_FOLDER + "FreeSans.ttf")); - Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", PdfEncodings.IDENTITY_H, "Puritan42")); - Collection fonts = sel.getFontSet().get("puritan2"); + Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", PdfEncodings.IDENTITY_H, "Puritan42")); + Collection fonts = sel.getFontSet().get("Puritan-Regular"); Assertions.assertTrue(fonts.size() != 0, "Puritan not found!"); FontInfo puritan = getFirst(fonts); @@ -333,12 +333,12 @@ public void searchNames() { Assertions.assertTrue(sel.getFontSet().contains("Noto Sans"), "NotoSans not found!"); Assertions.assertTrue(sel.getFontSet().contains("FreeSans"), "FreeSans not found!"); Assertions.assertTrue(sel.getFontSet().contains("Free Sans"), "FreeSans not found!"); - Assertions.assertTrue(sel.getFontSet().contains("puritan 2.0 regular"), "Puritan 2.0 not found!"); - Assertions.assertTrue(sel.getFontSet().contains("puritan2"), "Puritan 2.0 not found!"); + Assertions.assertTrue(sel.getFontSet().contains("Puritan-Regular"), "Puritan-Regular not found!"); + Assertions.assertTrue(sel.getFontSet().contains("Puritan Regular"), "Puritan not found!"); Assertions.assertFalse(sel.getFontSet().contains("puritan42"), "Puritan42 found!"); - Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("puritan 2.0 regular")), "Puritan 2.0 not found!"); - Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("puritan2")), "Puritan 2.0 not found!"); + Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("Puritan-Regular")), "Puritan-Regular not found!"); + Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("Puritan-Regular")), "Puritan-regular not found!"); Assertions.assertTrue(getFirst(sel.getFontSet().get("puritan42")) == null, "Puritan42 found!"); } @@ -347,10 +347,10 @@ public void searchNames2() { FontProvider sel = new FontProvider(); Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "NotoSans-Regular.ttf")); Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "FreeSans.ttf")); - Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", PdfEncodings.IDENTITY_H, "Puritan42")); + Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", PdfEncodings.IDENTITY_H, "Puritan42")); - Collection fonts = sel.getFontSet().get("puritan2"); + Collection fonts = sel.getFontSet().get("Puritan-Regular"); Assertions.assertTrue(fonts.size() != 0, "Puritan not found!"); FontInfo puritan = getFirst(fonts); @@ -366,16 +366,16 @@ public void searchNames2() { Assertions.assertTrue(sel.getFontSet().contains("Noto Sans"), "NotoSans not found!"); Assertions.assertTrue(sel.getFontSet().contains("FreeSans"), "FreeSans not found!"); Assertions.assertTrue(sel.getFontSet().contains("Free Sans"), "FreeSans not found!"); - Assertions.assertTrue(sel.getFontSet().contains("puritan 2.0 regular"), "Puritan 2.0 not found!"); - Assertions.assertTrue(sel.getFontSet().contains("puritan2"), "Puritan 2.0 not found!"); + Assertions.assertTrue(sel.getFontSet().contains("Puritan-Regular"), "Puritan-Regular not found!"); + Assertions.assertTrue(sel.getFontSet().contains("Puritan Regular"), "Puritan Regular not found!"); Assertions.assertFalse(sel.getFontSet().contains("puritan42"), "Puritan42 found!"); Assertions.assertEquals(notoSans, getFirst(sel.getFontSet().get("NotoSans")), "NotoSans not found!"); Assertions.assertEquals(notoSans, getFirst(sel.getFontSet().get("Noto Sans")), "NotoSans not found!"); Assertions.assertEquals(freeSans, getFirst(sel.getFontSet().get("FreeSans")), "FreeSans not found!"); Assertions.assertEquals(freeSans, getFirst(sel.getFontSet().get("Free Sans")), "FreeSans not found!"); - Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("puritan 2.0 regular")), "Puritan 2.0 not found!"); - Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("puritan2")), "Puritan 2.0 not found!"); + Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("Puritan-Regular")), "Puritan-Regular not found!"); + Assertions.assertEquals(puritan, getFirst(sel.getFontSet().get("Puritan Regular")), "Puritan-regular not found!"); Assertions.assertTrue(getFirst(sel.getFontSet().get("puritan42")) == null, "Puritan42 found!"); } @@ -393,7 +393,7 @@ public void searchFontAliasWithUnicodeChars() { Map aliasToFontName = new LinkedHashMap<>(); aliasToFontName.put(cyrillicAlias, "NotoSans-Regular.ttf"); aliasToFontName.put(greekAlias, "FreeSans.ttf"); - aliasToFontName.put(japaneseAlias, "Puritan2.otf"); + aliasToFontName.put(japaneseAlias, "Puritan-Regular.ttf"); FontProvider provider = new FontProvider(); @@ -425,7 +425,7 @@ public void writeTextInFontWhichAliasWithUnicodeChars() throws IOException, Inte String japaneseAlias = "\u30D5\u30A9\u30F3\u30C83"; FontProvider provider = new FontProvider(); provider.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf"); - provider.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", PdfEncodings.IDENTITY_H, japaneseAlias); + provider.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", PdfEncodings.IDENTITY_H, japaneseAlias); provider.addFont(FONTS_FOLDER + "FreeSans.ttf"); String s = "Hello world!"; @@ -530,7 +530,7 @@ public void checkThreeFontsInOneLineWithUnicodeRange() throws Exception { // 'd', 'e' and 'f' are in that interval Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "FreeSans.ttf", null, "FontAlias", new RangeBuilder(100, 102).create())); // 'x', 'y' and 'z' are in that interval - Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", null, "FontAlias", new RangeBuilder(120, 122).create())); + Assertions.assertTrue(sel.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", null, "FontAlias", new RangeBuilder(120, 122).create())); PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1016,9 +1016,9 @@ public void openSansFontWeightBoldRenderingTest() throws Exception { Document doc = new Document(pdfDoc); FontProvider sel = new FontProvider(); - sel.getFontSet().addFont(FONTS_FOLDER + "Open_Sans/" + "OpenSans-Bold.ttf"); - sel.getFontSet().addFont(FONTS_FOLDER + "Open_Sans/" + "OpenSans-ExtraBold.ttf"); - sel.getFontSet().addFont(FONTS_FOLDER + "Open_Sans/" + "OpenSans-SemiBold.ttf"); + sel.getFontSet().addFont(FONTS_FOLDER + "OpenSans-Bold.ttf"); + sel.getFontSet().addFont(FONTS_FOLDER + "OpenSans-ExtraBold.ttf"); + sel.getFontSet().addFont(FONTS_FOLDER + "OpenSans-SemiBold.ttf"); doc.setFontProvider(sel); Div div = new Div().setFontFamily("OpenSans"); @@ -1052,8 +1052,8 @@ public void openSansFontWeightNotBoldRenderingTest() throws Exception { Document doc = new Document(pdfDoc); FontProvider sel = new FontProvider(); - sel.getFontSet().addFont(FONTS_FOLDER + "Open_Sans/" + "OpenSans-Regular.ttf"); - sel.getFontSet().addFont(FONTS_FOLDER + "Open_Sans/" + "OpenSans-Light.ttf"); + sel.getFontSet().addFont(FONTS_FOLDER + "OpenSans-Regular.ttf"); + sel.getFontSet().addFont(FONTS_FOLDER + "OpenSans-Light.ttf"); doc.setFontProvider(sel); Div div = new Div().setFontFamily("OpenSans"); @@ -1076,11 +1076,9 @@ public void openSansFontWeightNotBoldRenderingTest() throws Exception { @Test public void openSansOutOfBoldFontWeightTest() { - String openSansFolder = "Open_Sans/"; - FontSet set = new FontSet(); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Bold.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-ExtraBold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Bold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-ExtraBold.ttf"); List fontFamilies = new ArrayList<>(); fontFamilies.add("OpenSans"); @@ -1093,11 +1091,9 @@ public void openSansOutOfBoldFontWeightTest() { @Test public void openSansOutOfMixedFontWeightTest() { - String openSansFolder = "Open_Sans/"; - FontSet set = new FontSet(); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Light.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-SemiBold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Light.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-SemiBold.ttf"); List fontFamilies = new ArrayList<>(); fontFamilies.add("OpenSans"); @@ -1118,11 +1114,9 @@ public void openSansOutOfMixedFontWeightTest() { @Test // TODO: DEVSIX-2120 Currently light and regular fonts have the same score. When fixed update assertion to "OpenSans-Regular" public void openSansOutOfNotBoldFontWeightTest() { - String openSansFolder = "Open_Sans/"; - FontSet set = new FontSet(); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Light.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Regular.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Light.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Regular.ttf"); List fontFamilies = new ArrayList<>(); fontFamilies.add("OpenSans"); @@ -1155,10 +1149,10 @@ public void monospaceFontIsNotSelectedInPreferenceToTestFamilyTest() { @Test public void family2UsedToSortFontsTest() { FontSet set = new FontSet(); - set.addFont(FONTS_FOLDER + "Lato/Lato-Black.ttf"); - set.addFont(FONTS_FOLDER + "Lato/Lato-Regular.ttf"); - set.addFont(FONTS_FOLDER + "Lato/Lato-Italic.ttf"); - set.addFont(FONTS_FOLDER + "Lato/Lato-Hairline.ttf"); + set.addFont(FONTS_FOLDER + "Lato-Black.ttf"); + set.addFont(FONTS_FOLDER + "Lato-Regular.ttf"); + set.addFont(FONTS_FOLDER + "Lato-Italic.ttf"); + set.addFont(FONTS_FOLDER + "Lato-Hairline.ttf"); List fontFamilies = new ArrayList<>(); fontFamilies.add("Lato Hairline"); @@ -1304,16 +1298,16 @@ private static FontSet getStandardFontSet() { private static FontSet getOpenSansFontSet() { String openSansFolder = "Open_Sans/"; FontSet set = new FontSet(); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Bold.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-BoldItalic.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-ExtraBold.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-ExtraBoldItalic.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Light.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-LightItalic.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Regular.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-Italic.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-SemiBold.ttf"); - set.addFont(FONTS_FOLDER + openSansFolder + "OpenSans-SemiBoldItalic.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Bold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-BoldItalic.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-ExtraBold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-ExtraBoldItalic.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Light.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-LightItalic.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Regular.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-Italic.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-SemiBold.ttf"); + set.addFont(FONTS_FOLDER + "OpenSans-SemiBoldItalic.ttf"); return set; } diff --git a/layout/src/test/java/com/itextpdf/layout/HyphenateLayoutTest.java b/layout/src/test/java/com/itextpdf/layout/HyphenateLayoutTest.java index 2be542ab36..1c70c75a54 100644 --- a/layout/src/test/java/com/itextpdf/layout/HyphenateLayoutTest.java +++ b/layout/src/test/java/com/itextpdf/layout/HyphenateLayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -208,7 +208,7 @@ public void nonBreakingHyphenTest01() throws Exception { "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Tage-Kaiser.\n" + "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Days-Kaiser.\n" + "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Frage-Kaiser.\n"); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "FreeSans.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(fontsFolder + "Roboto-Regular.ttf", PdfEncodings.IDENTITY_H); text.setFont(font); text.setFontSize(10); Paragraph paragraph = new Paragraph(text); @@ -231,7 +231,7 @@ public void nonBreakingHyphenTest02() throws Exception { Div div = new Div(); div.setHyphenation(new HyphenationConfig("en", "EN", 2, 2)); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "FreeSans.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(fontsFolder + "Roboto-Regular.ttf", PdfEncodings.IDENTITY_H); div.setFont(font); div.setFontSize(12); @@ -256,7 +256,7 @@ public void hyphenSymbolTest01() throws Exception { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); - PdfFont font = PdfFontFactory.createFont(fontsFolder + "FreeSans.ttf", PdfEncodings.IDENTITY_H); + PdfFont font = PdfFontFactory.createFont(fontsFolder + "Roboto-Regular.ttf", PdfEncodings.IDENTITY_H); Style style = new Style(); style.setBorder(new SolidBorder(ColorConstants.BLACK, 1)); style.setHyphenation(new HyphenationConfig("en", "EN", 2, 2)); diff --git a/layout/src/test/java/com/itextpdf/layout/HyphenateResultTest.java b/layout/src/test/java/com/itextpdf/layout/HyphenateResultTest.java index 14448c677c..e9a55a366a 100644 --- a/layout/src/test/java/com/itextpdf/layout/HyphenateResultTest.java +++ b/layout/src/test/java/com/itextpdf/layout/HyphenateResultTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ImageColorProfileTest.java b/layout/src/test/java/com/itextpdf/layout/ImageColorProfileTest.java index 8b96bf0e13..30113064b5 100644 --- a/layout/src/test/java/com/itextpdf/layout/ImageColorProfileTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ImageColorProfileTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ImageTest.java b/layout/src/test/java/com/itextpdf/layout/ImageTest.java index f2e3d01c10..7adbadf00a 100644 --- a/layout/src/test/java/com/itextpdf/layout/ImageTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ImageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/InlineBlockTest.java b/layout/src/test/java/com/itextpdf/layout/InlineBlockTest.java index 788ffdda6b..371af1247c 100644 --- a/layout/src/test/java/com/itextpdf/layout/InlineBlockTest.java +++ b/layout/src/test/java/com/itextpdf/layout/InlineBlockTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/KeepTogetherDivAndTableTest.java b/layout/src/test/java/com/itextpdf/layout/KeepTogetherDivAndTableTest.java index ae369895a8..e3b4b40582 100644 --- a/layout/src/test/java/com/itextpdf/layout/KeepTogetherDivAndTableTest.java +++ b/layout/src/test/java/com/itextpdf/layout/KeepTogetherDivAndTableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/KeepTogetherTest.java b/layout/src/test/java/com/itextpdf/layout/KeepTogetherTest.java index cd064a6feb..8623100e33 100644 --- a/layout/src/test/java/com/itextpdf/layout/KeepTogetherTest.java +++ b/layout/src/test/java/com/itextpdf/layout/KeepTogetherTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/KeepWithNextTest.java b/layout/src/test/java/com/itextpdf/layout/KeepWithNextTest.java index 3541d89654..1dc0373515 100644 --- a/layout/src/test/java/com/itextpdf/layout/KeepWithNextTest.java +++ b/layout/src/test/java/com/itextpdf/layout/KeepWithNextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LargeElementTest.java b/layout/src/test/java/com/itextpdf/layout/LargeElementTest.java index ba72e4555f..5d196d1c67 100644 --- a/layout/src/test/java/com/itextpdf/layout/LargeElementTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LargeElementTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LayoutTaggingPdf2Test.java b/layout/src/test/java/com/itextpdf/layout/LayoutTaggingPdf2Test.java index f8fbfcc757..4539cc5ff1 100644 --- a/layout/src/test/java/com/itextpdf/layout/LayoutTaggingPdf2Test.java +++ b/layout/src/test/java/com/itextpdf/layout/LayoutTaggingPdf2Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LayoutTaggingTest.java b/layout/src/test/java/com/itextpdf/layout/LayoutTaggingTest.java index 98e977d33d..88e753b8a3 100644 --- a/layout/src/test/java/com/itextpdf/layout/LayoutTaggingTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LayoutTaggingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LeadingHeightTest.java b/layout/src/test/java/com/itextpdf/layout/LeadingHeightTest.java index ff259188f1..7307181f25 100644 --- a/layout/src/test/java/com/itextpdf/layout/LeadingHeightTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LeadingHeightTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LineSeparatorTest.java b/layout/src/test/java/com/itextpdf/layout/LineSeparatorTest.java index cd43107369..f2d36f1660 100644 --- a/layout/src/test/java/com/itextpdf/layout/LineSeparatorTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LineSeparatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LinkTest.java b/layout/src/test/java/com/itextpdf/layout/LinkTest.java index 010d886b32..ecdd017e19 100644 --- a/layout/src/test/java/com/itextpdf/layout/LinkTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LinkTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ListAlignmentDirectionTest.java b/layout/src/test/java/com/itextpdf/layout/ListAlignmentDirectionTest.java index 51dadde4a9..8711c6d408 100644 --- a/layout/src/test/java/com/itextpdf/layout/ListAlignmentDirectionTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ListAlignmentDirectionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ListItemPositionAlignmentTest.java b/layout/src/test/java/com/itextpdf/layout/ListItemPositionAlignmentTest.java index 75b67f6117..c34eb127f5 100644 --- a/layout/src/test/java/com/itextpdf/layout/ListItemPositionAlignmentTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ListItemPositionAlignmentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ListTest.java b/layout/src/test/java/com/itextpdf/layout/ListTest.java index d5fbd1446e..cfa7c2e5c1 100644 --- a/layout/src/test/java/com/itextpdf/layout/ListTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/LocationTextExtractionStrategyTest.java b/layout/src/test/java/com/itextpdf/layout/LocationTextExtractionStrategyTest.java index 3935420f25..2fd195a58d 100644 --- a/layout/src/test/java/com/itextpdf/layout/LocationTextExtractionStrategyTest.java +++ b/layout/src/test/java/com/itextpdf/layout/LocationTextExtractionStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/NewLineTest.java b/layout/src/test/java/com/itextpdf/layout/NewLineTest.java index e7ac769753..01ea74a183 100644 --- a/layout/src/test/java/com/itextpdf/layout/NewLineTest.java +++ b/layout/src/test/java/com/itextpdf/layout/NewLineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/NonBreakableSpaceTest.java b/layout/src/test/java/com/itextpdf/layout/NonBreakableSpaceTest.java index 4d6d1f3435..da6d1dbf8d 100644 --- a/layout/src/test/java/com/itextpdf/layout/NonBreakableSpaceTest.java +++ b/layout/src/test/java/com/itextpdf/layout/NonBreakableSpaceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ObjectFitTest.java b/layout/src/test/java/com/itextpdf/layout/ObjectFitTest.java index cd7d282dcc..c63f5146f0 100644 --- a/layout/src/test/java/com/itextpdf/layout/ObjectFitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ObjectFitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/OpacityTest.java b/layout/src/test/java/com/itextpdf/layout/OpacityTest.java index 1c31bf7ffb..a7d3ada80a 100644 --- a/layout/src/test/java/com/itextpdf/layout/OpacityTest.java +++ b/layout/src/test/java/com/itextpdf/layout/OpacityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/OrphansWidowsTest.java b/layout/src/test/java/com/itextpdf/layout/OrphansWidowsTest.java index 1c70f2120d..2f08f46a68 100644 --- a/layout/src/test/java/com/itextpdf/layout/OrphansWidowsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/OrphansWidowsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/OverflowTest.java b/layout/src/test/java/com/itextpdf/layout/OverflowTest.java index d42048a529..16fb56562f 100644 --- a/layout/src/test/java/com/itextpdf/layout/OverflowTest.java +++ b/layout/src/test/java/com/itextpdf/layout/OverflowTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/ParagraphTest.java b/layout/src/test/java/com/itextpdf/layout/ParagraphTest.java index b512994fc2..a0bf3741f6 100644 --- a/layout/src/test/java/com/itextpdf/layout/ParagraphTest.java +++ b/layout/src/test/java/com/itextpdf/layout/ParagraphTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/PdfTextExtractorEncodingsTest.java b/layout/src/test/java/com/itextpdf/layout/PdfTextExtractorEncodingsTest.java index e59bddee99..1e3439af9d 100644 --- a/layout/src/test/java/com/itextpdf/layout/PdfTextExtractorEncodingsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/PdfTextExtractorEncodingsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,7 +45,7 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfTextExtractorEncodingsTest extends ExtendedITextTest { - private static final String sourceFolder = "./src/test/resources/com/itextpdf/layout/PdfTextExtractorEncodingsTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/layout/fonts/"; /** * Basic Latin characters, with Unicode values less than 128 @@ -103,7 +103,7 @@ private void checkPdf(byte[] pdfBytes) throws Exception { } protected static PdfFont getTTFont(String encoding, EmbeddingStrategy embeddingStrategy) throws IOException { - return PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", encoding, embeddingStrategy); + return PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", encoding, embeddingStrategy); } private static byte[] createPdf(PdfFont font) { diff --git a/layout/src/test/java/com/itextpdf/layout/PdfUA2AnnotationsTest.java b/layout/src/test/java/com/itextpdf/layout/PdfUA2AnnotationsTest.java index 8ccf307a8f..40e57e1ff0 100644 --- a/layout/src/test/java/com/itextpdf/layout/PdfUA2AnnotationsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/PdfUA2AnnotationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -29,7 +29,6 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.font.PdfFontFactory.EmbeddingStrategy; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.geom.Rectangle; -import com.itextpdf.kernel.logs.KernelLogMessageConstant; import com.itextpdf.kernel.pdf.CompressionConstants; import com.itextpdf.kernel.pdf.PdfArray; import com.itextpdf.kernel.pdf.PdfDictionary; @@ -72,8 +71,6 @@ This file is part of the iText (R) project. import com.itextpdf.layout.element.Paragraph; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.TestUtil; -import com.itextpdf.test.annotations.LogMessage; -import com.itextpdf.test.annotations.LogMessages; import com.itextpdf.test.pdfa.VeraPdfValidator; // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf/ua validation on Android) import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -91,8 +88,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfUA2AnnotationsTest extends ExtendedITextTest { - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/"; - public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/layout/PdfUA2AnnotationsTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/layout/PdfUA2AnnotationsTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/layout/fonts/"; @BeforeAll public static void beforeClass() { @@ -107,7 +105,7 @@ public void pdfUA2LinkAnnotationsTest() throws IOException, XMPException, Interr try (PdfDocument pdfDocument = new PdfDocument( new PdfWriter(outFile, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)))) { createSimplePdfUA2Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); Link link = createLinkAnnotation(); Paragraph paragraph = new Paragraph(); @@ -127,7 +125,7 @@ public void pdfUA2LinkAnnotNoAltTest() throws IOException, XMPException, Interru try (PdfDocument pdfDocument = new PdfDocument( new PdfWriter(outFile, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)))) { createSimplePdfUA2Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); Link link = createLinkAnnotation(); link.getLinkAnnotation().getPdfObject().remove(PdfName.Contents); @@ -139,10 +137,6 @@ public void pdfUA2LinkAnnotNoAltTest() throws IOException, XMPException, Interru compareAndValidate(outFile, cmpFile); } - @LogMessages(messages = { - @LogMessage(messageTemplate = - KernelLogMessageConstant.DUPLICATE_STRUCT_PARENT_INDEX_IN_TAGGED_OBJECT_REFERENCES, count = 1) - }) @Test public void pdfUA2FileAttachmentAnnotTest() throws IOException, XMPException, InterruptedException { String outFile = DESTINATION_FOLDER + "pdfuaFileAttachmentAnnotTest.pdf"; @@ -158,11 +152,8 @@ public void pdfUA2FileAttachmentAnnotTest() throws IOException, XMPException, In PdfFileAttachmentAnnotation annot = new PdfFileAttachmentAnnotation(rect, fs); annot.setContents("Hello world"); annot.getPdfObject().put(PdfName.Type, PdfName.Annot); - pdfPage.addAnnotation(annot); - PdfFormXObject xObject = new PdfFormXObject(rect); annot.setNormalAppearance(xObject.getPdfObject()); - pdfPage.addAnnotation(annot); } compareAndValidate(outFile, cmpFile); @@ -459,7 +450,7 @@ public void pdfUA2AltContentDiffAnnotationTest() try (PdfDocument pdfDocument = new PdfDocument( new PdfWriter(outFile, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)))) { createSimplePdfUA2Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); Link link = createLinkAnnotation(); link.getAccessibilityProperties().setAlternateDescription("some description"); diff --git a/layout/src/test/java/com/itextpdf/layout/PdfUA2FontTest.java b/layout/src/test/java/com/itextpdf/layout/PdfUA2FontTest.java index 6476d42942..5c258b241a 100644 --- a/layout/src/test/java/com/itextpdf/layout/PdfUA2FontTest.java +++ b/layout/src/test/java/com/itextpdf/layout/PdfUA2FontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -64,14 +64,14 @@ public static void beforeClass() { } @Test - public void checkPuritan2WithUTF8Test() throws IOException, XMPException, InterruptedException { - String outFile = DESTINATION_FOLDER + "puritan2WithUTF8Test.pdf"; - String cmpFile = SOURCE_FOLDER + "cmp_puritan2WithUTF8Test.pdf"; + public void checkPuritanWithUTF8Test() throws IOException, XMPException, InterruptedException { + String outFile = DESTINATION_FOLDER + "puritanWithUTF8Test.pdf"; + String cmpFile = SOURCE_FOLDER + "cmp_puritanWithUTF8Test.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "Puritan2.otf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "Puritan-Regular.otf", PdfEncodings.UTF8, EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); @@ -128,7 +128,7 @@ public void checkOpenSansRegularTest() throws IOException, XMPException, Interru try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion( PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); - PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "Open_Sans/OpenSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "OpenSans-Regular.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED); document.setFont(font); createSimplePdfUA2Document(pdfDocument); diff --git a/layout/src/test/java/com/itextpdf/layout/PdfUA2Test.java b/layout/src/test/java/com/itextpdf/layout/PdfUA2Test.java index 3c09f22274..f804b525b4 100644 --- a/layout/src/test/java/com/itextpdf/layout/PdfUA2Test.java +++ b/layout/src/test/java/com/itextpdf/layout/PdfUA2Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -281,7 +281,7 @@ public void checkSectionTest() throws IOException, XMPException, InterruptedExce @Test public void checkTableOfContentsTest() throws IOException, XMPException, InterruptedException { String outFile = DESTINATION_FOLDER + "tableOfContentsTest.pdf"; - String cmpFile = SOURCE_FOLDER + "cmp_tableOfContentsTestTest.pdf"; + String cmpFile = SOURCE_FOLDER + "cmp_tableOfContentsTest.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFile, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)))){ Document document = new Document(pdfDocument); diff --git a/layout/src/test/java/com/itextpdf/layout/PositioningTest.java b/layout/src/test/java/com/itextpdf/layout/PositioningTest.java index c0f5219508..63ed187b3d 100644 --- a/layout/src/test/java/com/itextpdf/layout/PositioningTest.java +++ b/layout/src/test/java/com/itextpdf/layout/PositioningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/PreLayoutTest.java b/layout/src/test/java/com/itextpdf/layout/PreLayoutTest.java index d0c5a69423..f427b96770 100644 --- a/layout/src/test/java/com/itextpdf/layout/PreLayoutTest.java +++ b/layout/src/test/java/com/itextpdf/layout/PreLayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/RotationTest.java b/layout/src/test/java/com/itextpdf/layout/RotationTest.java index 78f022d23d..4abc00f8f1 100644 --- a/layout/src/test/java/com/itextpdf/layout/RotationTest.java +++ b/layout/src/test/java/com/itextpdf/layout/RotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/SimpleTextExtractionStrategyTest.java b/layout/src/test/java/com/itextpdf/layout/SimpleTextExtractionStrategyTest.java index 30d3533b5b..425fe3450d 100644 --- a/layout/src/test/java/com/itextpdf/layout/SimpleTextExtractionStrategyTest.java +++ b/layout/src/test/java/com/itextpdf/layout/SimpleTextExtractionStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/StyleUnitTest.java b/layout/src/test/java/com/itextpdf/layout/StyleUnitTest.java index 82361026e5..3b4dcb76c5 100644 --- a/layout/src/test/java/com/itextpdf/layout/StyleUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/StyleUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/StylesTest.java b/layout/src/test/java/com/itextpdf/layout/StylesTest.java index b7a6c618df..c85bd8bf80 100644 --- a/layout/src/test/java/com/itextpdf/layout/StylesTest.java +++ b/layout/src/test/java/com/itextpdf/layout/StylesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/SurrPairTest.java b/layout/src/test/java/com/itextpdf/layout/SurrPairTest.java index cd6c426465..2cb27e6b5e 100644 --- a/layout/src/test/java/com/itextpdf/layout/SurrPairTest.java +++ b/layout/src/test/java/com/itextpdf/layout/SurrPairTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/TableBorderTest.java b/layout/src/test/java/com/itextpdf/layout/TableBorderTest.java index 4be90f9725..9d2b96d3ea 100644 --- a/layout/src/test/java/com/itextpdf/layout/TableBorderTest.java +++ b/layout/src/test/java/com/itextpdf/layout/TableBorderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/TableTest.java b/layout/src/test/java/com/itextpdf/layout/TableTest.java index 18e05a768b..d51da53e8e 100644 --- a/layout/src/test/java/com/itextpdf/layout/TableTest.java +++ b/layout/src/test/java/com/itextpdf/layout/TableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -73,8 +73,8 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class TableTest extends AbstractTableTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/layout/TableTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/layout/TableTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/layout/TableTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/layout/TableTest/"; private static final String TEXT_CONTENT = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.\n" + "Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.\n" + @@ -85,14 +85,14 @@ public class TableTest extends AbstractTableTest { @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @Test public void simpleTableTest01() throws IOException, InterruptedException { String testName = "tableTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -102,15 +102,16 @@ public void simpleTableTest01() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 1, 2"))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); Assertions.assertEquals("Cell[row=0, col=0, rowspan=1, colspan=1]", table.getCell(0, 0).toString()); } @Test public void simpleTableTest02() throws IOException, InterruptedException { String testName = "tableTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -124,14 +125,15 @@ public void simpleTableTest02() throws IOException, InterruptedException { .addCell(new Cell()); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest03() throws IOException, InterruptedException { String testName = "tableTest03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -150,14 +152,15 @@ public void simpleTableTest03() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 2, 2\n" + textContent2))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest04() throws IOException, InterruptedException { String testName = "tableTest04.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -169,14 +172,15 @@ public void simpleTableTest04() throws IOException, InterruptedException { table.addCell(new Cell().add(new Paragraph("cell 3, 1\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest05() throws IOException, InterruptedException { String testName = "tableTest05.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -188,14 +192,15 @@ public void simpleTableTest05() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 3, 2\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest06() throws IOException, InterruptedException { String testName = "tableTest06.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -207,14 +212,15 @@ public void simpleTableTest06() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 3, 1\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest07() throws IOException, InterruptedException { String testName = "tableTest07.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -226,14 +232,15 @@ public void simpleTableTest07() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 3, 2\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest08() throws IOException, InterruptedException { String testName = "tableTest08.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -252,14 +259,15 @@ public void simpleTableTest08() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 4, 3\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest09() throws IOException, InterruptedException { String testName = "tableTest09.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -281,14 +289,15 @@ public void simpleTableTest09() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 5, 3\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest10() throws IOException, InterruptedException { String testName = "tableTest10.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -312,7 +321,7 @@ public void simpleTableTest10() throws IOException, InterruptedException { doc.add(new Paragraph("Table 3")); - PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(sourceFolder + "itext.png"))); + PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(SOURCE_FOLDER + "itext.png"))); Image image = new Image(xObject, 50); Table table3 = new Table(new float[]{100, 100}) @@ -322,14 +331,15 @@ public void simpleTableTest10() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("2, 2"))); doc.add(table3); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest11() throws IOException, InterruptedException { String testName = "tableTest11.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -355,14 +365,15 @@ public void simpleTableTest11() throws IOException, InterruptedException { .addCell(new Cell().setKeepTogether(true).add(new Paragraph("cell 7, 2\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest12() throws IOException, InterruptedException { String testName = "tableTest12.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -396,14 +407,15 @@ public void simpleTableTest12() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 11, 2\n" + shortTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest13() throws IOException, InterruptedException { String testName = "tableTest13.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -427,14 +439,15 @@ public void simpleTableTest13() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 7, 2\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest14() throws IOException, InterruptedException { String testName = "tableTest14.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -459,14 +472,15 @@ public void simpleTableTest14() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 6, 3\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest15() throws IOException, InterruptedException { String testName = "tableTest15.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -494,14 +508,15 @@ public void simpleTableTest15() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 7, 3\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest16() throws IOException, InterruptedException { String testName = "tableTest16.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -519,14 +534,15 @@ public void simpleTableTest16() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 2, 2\n" + longTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void wideFirstCellBorderDoesntAffectSecondCellTest() throws IOException, InterruptedException { String testName = "wideFirstCellBorderDoesntAffectSecondCellTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -551,7 +567,7 @@ public void wideFirstCellBorderDoesntAffectSecondCellTest() throws IOException, doc.add(table); doc.close(); Assertions.assertNull( - new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -560,8 +576,8 @@ public void wideFirstCellBorderDoesntAffectSecondCellTest() throws IOException, }) public void simpleTableTest17() throws IOException, InterruptedException { String testName = "tableTest17.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -581,7 +597,8 @@ public void simpleTableTest17() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -590,8 +607,8 @@ public void simpleTableTest17() throws IOException, InterruptedException { }) public void simpleTableTest18() throws IOException, InterruptedException { String testName = "tableTest18.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -613,7 +630,8 @@ public void simpleTableTest18() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -622,8 +640,8 @@ public void simpleTableTest18() throws IOException, InterruptedException { }) public void simpleTableTest19() throws IOException, InterruptedException { String testName = "tableTest19.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -633,7 +651,7 @@ public void simpleTableTest19() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 1, 3\n" + TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 2, 3\n" + TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 3, 3\n" + TEXT_CONTENT))) - .addCell(new Cell().add(new Image(ImageDataFactory.create(sourceFolder + "red.png")))) + .addCell(new Cell().add(new Image(ImageDataFactory.create(SOURCE_FOLDER + "red.png")))) .addCell(new Cell().add(new Paragraph("cell 4, 2\n" + SHORT_TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 4, 3\n" + MIDDLE_TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + SHORT_TEXT_CONTENT))) @@ -644,7 +662,8 @@ public void simpleTableTest19() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 6, 3\n" + MIDDLE_TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -653,14 +672,14 @@ public void simpleTableTest19() throws IOException, InterruptedException { }) public void simpleTableTest20() throws IOException, InterruptedException { String testName = "tableTest20.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); Table table = new Table(new float[]{130, 130, 260}) - .addCell(new Cell().add(new Image(ImageDataFactory.create(sourceFolder + "red.png")))) + .addCell(new Cell().add(new Image(ImageDataFactory.create(SOURCE_FOLDER + "red.png")))) .addCell(new Cell().add(new Paragraph("cell 4, 2\n" + SHORT_TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 4, 3\n" + MIDDLE_TEXT_CONTENT))) .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + SHORT_TEXT_CONTENT))) @@ -671,7 +690,8 @@ public void simpleTableTest20() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 6, 3\n" + MIDDLE_TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -680,8 +700,8 @@ public void simpleTableTest20() throws IOException, InterruptedException { }) public void simpleTableTest21() throws IOException, InterruptedException { String testName = "tableTest21.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -693,7 +713,7 @@ public void simpleTableTest21() throws IOException, InterruptedException { doc.add(new Paragraph(TEXT_CONTENT)); Table table = new Table(new float[]{130, 130, 260}) - .addCell(new Cell().add(new Image(ImageDataFactory.create(sourceFolder + "red.png")))) + .addCell(new Cell().add(new Image(ImageDataFactory.create(SOURCE_FOLDER + "red.png")))) .addCell(new Cell().add(new Paragraph("cell 4, 2\n" + shortTextContent))) .addCell(new Cell().add(new Paragraph("cell 4, 3\n" + middleTextContent))) .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + shortTextContent))) @@ -704,14 +724,15 @@ public void simpleTableTest21() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 6, 3\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest22() throws IOException, InterruptedException { String testName = "tableTest22.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -723,14 +744,15 @@ public void simpleTableTest22() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 1, 4"))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void simpleTableTest23() throws IOException, InterruptedException { String testName = "tableTest23.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -770,14 +792,15 @@ public void simpleTableTest23() throws IOException, InterruptedException { table.complete(); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void widthInPercentShouldBeResetAfterOverflow() throws IOException, InterruptedException { String testName = "widthInPercentShouldBeResetAfterOverflow.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -792,14 +815,15 @@ public void widthInPercentShouldBeResetAfterOverflow() throws IOException, Inter // will be added on the second page doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest01() throws IOException, InterruptedException { String testName = "bigRowspanTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -819,14 +843,15 @@ public void bigRowspanTest01() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + middleTextContent))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest02() throws IOException, InterruptedException { String testName = "bigRowspanTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -846,14 +871,15 @@ public void bigRowspanTest02() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest03() throws IOException, InterruptedException { String testName = "bigRowspanTest03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -870,14 +896,15 @@ public void bigRowspanTest03() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest04() throws IOException, InterruptedException { String testName = "bigRowspanTest04.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -897,14 +924,15 @@ public void bigRowspanTest04() throws IOException, InterruptedException { .addCell(new Cell().add(new Paragraph("cell 5, 1\n" + TEXT_CONTENT))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest05() throws IOException, InterruptedException { String testName = "bigRowspanTest05.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -921,14 +949,15 @@ public void bigRowspanTest05() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest06() throws IOException, InterruptedException { String testName = "bigRowspanTest06.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -942,14 +971,15 @@ public void bigRowspanTest06() throws IOException, InterruptedException { table.setBorderTop(new SolidBorder(ColorConstants.GREEN, 50)).setBorderBottom(new SolidBorder(ColorConstants.ORANGE, 40)); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowspanTest07() throws IOException, InterruptedException { String testName = "bigRowspanTest07.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -973,14 +1003,15 @@ public void bigRowspanTest07() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void differentPageOrientationTest01() throws IOException, InterruptedException { String testName = "differentPageOrientationTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; final PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1006,18 +1037,19 @@ public void differentPageOrientationTest01() throws IOException, InterruptedExce doc.setRenderer(new RotatedDocumentRenderer(doc, pdfDoc)); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void extendLastRowTest01() throws IOException, InterruptedException { String testName = "extendLastRowTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); - PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(sourceFolder + "itext.png"))); + PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(SOURCE_FOLDER + "itext.png"))); Image image = new Image(xObject, 100); Table table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth(); @@ -1033,7 +1065,8 @@ public void extendLastRowTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @LogMessages(messages = { @@ -1042,8 +1075,8 @@ public void extendLastRowTest01() throws IOException, InterruptedException { @Test public void toLargeElementWithKeepTogetherPropertyInTableTest01() throws IOException, InterruptedException { String testName = "toLargeElementWithKeepTogetherPropertyInTableTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1063,7 +1096,8 @@ public void toLargeElementWithKeepTogetherPropertyInTableTest01() throws IOExcep doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @LogMessages(messages = { @@ -1073,9 +1107,9 @@ public void toLargeElementWithKeepTogetherPropertyInTableTest01() throws IOExcep @Test public void toLargeElementInTableTest01() throws IOException, InterruptedException { String testName = "toLargeElementInTableTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; - PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "toLargeElementInTableTest01.pdf")); + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; + PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + "toLargeElementInTableTest01.pdf")); Document doc = new Document(pdfDoc); Table table = new Table(new float[]{5}); @@ -1087,14 +1121,15 @@ public void toLargeElementInTableTest01() throws IOException, InterruptedExcepti doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void nestedTablesCollapseTest01() throws IOException, InterruptedException { String testName = "nestedTablesCollapseTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1139,14 +1174,15 @@ public void nestedTablesCollapseTest01() throws IOException, InterruptedExceptio doc.add(outertable); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void nestedTableSkipHeaderFooterTest() throws IOException, InterruptedException { String testName = "nestedTableSkipHeaderFooter.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4.rotate()); @@ -1171,14 +1207,15 @@ public void nestedTableSkipHeaderFooterTest() throws IOException, InterruptedExc doc.add(t); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void nestedTablesWithMarginsTest01() throws IOException, InterruptedException { String testName = "nestedTablesWithMarginsTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A8.rotate()); @@ -1193,7 +1230,8 @@ public void nestedTablesWithMarginsTest01() throws IOException, InterruptedExcep outerTable.setMarginTop(10); doc.add(outerTable); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @LogMessages(messages = { @@ -1202,8 +1240,8 @@ public void nestedTablesWithMarginsTest01() throws IOException, InterruptedExcep @Test public void splitTableOnShortPage() throws IOException, InterruptedException { String testName = "splitTableOnShortPage.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, new PageSize(300, 98)); @@ -1233,14 +1271,15 @@ public void splitTableOnShortPage() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void splitCellWithStyles() throws IOException, InterruptedException { String testName = "splitCellWithStyles.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; String text = "Make Gretzky Great Again"; @@ -1264,19 +1303,20 @@ public void splitCellWithStyles() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void imageInTableTest_HA() throws IOException, InterruptedException { String testName = "imageInTableTest_HA.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); - PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(sourceFolder + "itext.png"))); + PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(SOURCE_FOLDER + "itext.png"))); Image imageL = new Image(xObject); imageL.setHorizontalAlignment(HorizontalAlignment.LEFT); Image imageC = new Image(xObject); @@ -1292,14 +1332,15 @@ public void imageInTableTest_HA() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void cellAlignmentAndSplittingTest01() throws IOException, InterruptedException { String testName = "cellAlignmentAndSplittingTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1311,14 +1352,15 @@ public void cellAlignmentAndSplittingTest01() throws IOException, InterruptedExc doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void cellAlignmentAndKeepTogetherTest01() throws IOException, InterruptedException { String testName = "cellAlignmentAndKeepTogetherTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1330,7 +1372,8 @@ public void cellAlignmentAndKeepTogetherTest01() throws IOException, Interrupted doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @LogMessages(messages = { @@ -1339,8 +1382,8 @@ public void cellAlignmentAndKeepTogetherTest01() throws IOException, Interrupted @Test public void tableWithSetHeightProperties01() throws IOException, InterruptedException { String testName = "tableWithSetHeightProperties01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1406,7 +1449,8 @@ public void tableWithSetHeightProperties01() throws IOException, InterruptedExce doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @LogMessages(messages = { @@ -1415,8 +1459,8 @@ public void tableWithSetHeightProperties01() throws IOException, InterruptedExce @Test public void tableWithSetHeightProperties02() throws IOException, InterruptedException { String testName = "tableWithSetHeightProperties02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1509,14 +1553,15 @@ public void tableWithSetHeightProperties02() throws IOException, InterruptedExce doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithSetHeightProperties03() throws IOException, InterruptedException { String testName = "tableWithSetHeightProperties03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1594,14 +1639,15 @@ public void tableWithSetHeightProperties03() throws IOException, InterruptedExce doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithHeaderInTheBottomOfPageTest() throws IOException, InterruptedException { String testName = "tableWithHeaderInTheBottomOfPageTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1620,15 +1666,16 @@ public void tableWithHeaderInTheBottomOfPageTest() throws IOException, Interrupt doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)}) public void bigFooterTest01() throws IOException, InterruptedException { String testName = "bigFooterTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1640,15 +1687,16 @@ public void bigFooterTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @LogMessages(messages = {@LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA)}) public void bigFooterTest02() throws IOException, InterruptedException { String testName = "bigFooterTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1661,14 +1709,15 @@ public void bigFooterTest02() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithDocumentRelayoutTest() throws IOException, InterruptedException { String testName = "tableWithDocumentRelayoutTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4, false); @@ -1682,14 +1731,15 @@ public void tableWithDocumentRelayoutTest() throws IOException, InterruptedExcep doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithKeepTogetherOnCells() throws IOException, InterruptedException { String testName = "tableWithKeepTogetherOnCells.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; Document document = new Document(new PdfDocument(new PdfWriter(outFileName))); @@ -1702,14 +1752,15 @@ public void tableWithKeepTogetherOnCells() throws IOException, InterruptedExcept document.add(table); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void emptyTableTest01() throws IOException, InterruptedException { String testName = "emptyTableTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1736,14 +1787,15 @@ public void emptyTableTest01() throws IOException, InterruptedException { addTableBelowToCheckThatOccupiedAreaIsCorrect(doc); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void emptyTableTest02() throws IOException, InterruptedException { String testName = "emptyTableTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1757,7 +1809,8 @@ public void emptyTableTest02() throws IOException, InterruptedException { addTableBelowToCheckThatOccupiedAreaIsCorrect(doc); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @@ -1765,8 +1818,8 @@ public void emptyTableTest02() throws IOException, InterruptedException { @LogMessages(messages = {@LogMessage(messageTemplate = IoLogMessageConstant.LAST_ROW_IS_NOT_COMPLETE, count = 2)}) public void tableWithIncompleteFooter() throws IOException, InterruptedException { String testName = "tableWithIncompleteFooter.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1781,7 +1834,8 @@ public void tableWithIncompleteFooter() throws IOException, InterruptedException doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -1790,8 +1844,8 @@ public void tableWithIncompleteFooter() throws IOException, InterruptedException @LogMessage(messageTemplate = IoLogMessageConstant.GET_NEXT_RENDERER_SHOULD_BE_OVERRIDDEN)}) public void tableWithCustomRendererTest01() throws IOException, InterruptedException { String testName = "tableWithCustomRendererTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1807,7 +1861,8 @@ public void tableWithCustomRendererTest01() throws IOException, InterruptedExcep doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -1816,8 +1871,8 @@ public void tableWithCustomRendererTest01() throws IOException, InterruptedExcep // However, as setSkipLastFooter is true, we can lay out that row with data on the first page and avoid unnecessary footer placement. public void skipLastRowTest() throws IOException, InterruptedException { String testName = "skipLastRowTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1834,14 +1889,15 @@ public void skipLastRowTest() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void skipFooterTest01() throws IOException, InterruptedException { String testName = "skipFooterTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -1856,14 +1912,15 @@ public void skipFooterTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void skipHeaderTest01() throws IOException, InterruptedException { String testName = "skipHeaderTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdf); @@ -1885,14 +1942,15 @@ public void skipHeaderTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableSplitTest01() throws IOException, InterruptedException { String testName = "tableSplitTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; String gretzky = "Make Gretzky great again!"; @@ -1908,14 +1966,15 @@ public void tableSplitTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableSplitTest02() throws IOException, InterruptedException { String testName = "tableSplitTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; String gretzky = "Make Gretzky great again!"; @@ -1925,7 +1984,7 @@ public void tableSplitTest02() throws IOException, InterruptedException { Table table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth(); table.setBorder(new SolidBorder(ColorConstants.GREEN, 15)); - PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(sourceFolder + "itext.png"))); + PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(SOURCE_FOLDER + "itext.png"))); Image image = new Image(xObject, 50); @@ -1940,14 +1999,15 @@ public void tableSplitTest02() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableSplitTest03() throws IOException, InterruptedException { String testName = "tableSplitTest03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; String gretzky = "Make Gretzky great again!"; @@ -1966,14 +2026,15 @@ public void tableSplitTest03() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableSplitTest04() throws IOException, InterruptedException { String testName = "tableSplitTest04.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; String gretzky = "Make Gretzky great again!"; @@ -1983,7 +2044,7 @@ public void tableSplitTest04() throws IOException, InterruptedException { Table table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth(); table.setBorder(new SolidBorder(ColorConstants.GREEN, 15)); - PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(sourceFolder + "itext.png"))); + PdfImageXObject xObject = new PdfImageXObject(ImageDataFactory.createPng(UrlUtil.toURL(SOURCE_FOLDER + "itext.png"))); Image image = new Image(xObject, 50); @@ -1996,7 +2057,8 @@ public void tableSplitTest04() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2006,8 +2068,8 @@ public void tableSplitTest04() throws IOException, InterruptedException { }) public void tableNothingResultTest() throws IOException, InterruptedException { String testName = "tableNothingResultTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2023,7 +2085,8 @@ public void tableNothingResultTest() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2032,8 +2095,8 @@ public void tableNothingResultTest() throws IOException, InterruptedException { }) public void tableWithEmptyLastRowTest() throws IOException, InterruptedException { String testName = "tableWithEmptyLastRowTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2045,14 +2108,15 @@ public void tableWithEmptyLastRowTest() throws IOException, InterruptedException doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithEmptyRowsBetweenFullRowsTest() throws IOException, InterruptedException { String testName = "tableWithEmptyRowsBetweenFullRowsTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2066,7 +2130,8 @@ public void tableWithEmptyRowsBetweenFullRowsTest() throws IOException, Interrup doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2075,8 +2140,8 @@ public void tableWithEmptyRowsBetweenFullRowsTest() throws IOException, Interrup }) public void tableWithEmptyRowAfterJustOneCellTest() throws IOException, InterruptedException { String testName = "tableWithEmptyRowAfterJustOneCellTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2091,7 +2156,8 @@ public void tableWithEmptyRowAfterJustOneCellTest() throws IOException, Interrup doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2100,8 +2166,8 @@ public void tableWithEmptyRowAfterJustOneCellTest() throws IOException, Interrup }) public void tableWithAlternatingRowsTest() throws IOException, InterruptedException { String testName = "tableWithAlternatingRowsTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2115,14 +2181,15 @@ public void tableWithAlternatingRowsTest() throws IOException, InterruptedExcept doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void coloredTableWithColoredCellsTest() throws IOException, InterruptedException { String testName = "coloredTableWithColoredCellsTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2138,14 +2205,15 @@ public void coloredTableWithColoredCellsTest() throws IOException, InterruptedEx doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithEmptyRowsAndSpansTest() throws IOException, InterruptedException { String testName = "tableWithEmptyRowsAndSpansTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2162,14 +2230,15 @@ public void tableWithEmptyRowsAndSpansTest() throws IOException, InterruptedExce doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithEmptyRowsAndSeparatedBordersTest() throws IOException, InterruptedException { String testName = "tableWithEmptyRowsAndSeparatedBordersTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2184,14 +2253,15 @@ public void tableWithEmptyRowsAndSeparatedBordersTest() throws IOException, Inte doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithCollapsedBordersTest() throws IOException, InterruptedException { String testName = "tableWithCollapsedBordersTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2205,7 +2275,8 @@ public void tableWithCollapsedBordersTest() throws IOException, InterruptedExcep doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2214,8 +2285,8 @@ public void tableWithCollapsedBordersTest() throws IOException, InterruptedExcep }) public void tableWithCollapsedBordersAndFooterTest() throws IOException, InterruptedException { String testName = "tableWithCollapsedBordersAndFooterTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2229,14 +2300,15 @@ public void tableWithCollapsedBordersAndFooterTest() throws IOException, Interru doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void autoLayoutTest01() throws IOException, InterruptedException { String testName = "autoLayoutTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; //Initialize PDF document PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); @@ -2263,14 +2335,15 @@ public void autoLayoutTest01() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void autoLayoutTest02() throws IOException, InterruptedException { String testName = "autoLayoutTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdf); @@ -2283,14 +2356,15 @@ public void autoLayoutTest02() throws IOException, InterruptedException { .add(new Paragraph("Long long long Long long long Long long long Long long long text"))); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void autoLayoutTest03() throws IOException, InterruptedException { String testName = "autoLayoutTest03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdf); @@ -2303,14 +2377,15 @@ public void autoLayoutTest03() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void fixedLayoutTest01() throws IOException, InterruptedException { String testName = "fixedLayoutTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; //Initialize PDF document PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); @@ -2325,14 +2400,15 @@ public void fixedLayoutTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void fixedLayoutTest02() throws IOException, InterruptedException { String testName = "fixedLayoutTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; //Initialize PDF document PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); @@ -2347,7 +2423,8 @@ public void fixedLayoutTest02() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2356,8 +2433,8 @@ public void fixedLayoutTest02() throws IOException, InterruptedException { }) public void fixedPositionTest01() throws IOException, InterruptedException { String testName = "fixedPositionTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; //Initialize PDF document PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); @@ -2381,7 +2458,8 @@ public void fixedPositionTest01() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2389,8 +2467,8 @@ public void fixedPositionTest01() throws IOException, InterruptedException { // When the test was created, only first line of text was displayed on the first page public void nestedTableLostContent() throws IOException, InterruptedException { String testName = "nestedTableLostContent.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdf); @@ -2408,7 +2486,8 @@ public void nestedTableLostContent() throws IOException, InterruptedException { doc.add(outerTable); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2417,8 +2496,8 @@ public void nestedTableLostContent() throws IOException, InterruptedException { // At some point isOriginalNonSplitRenderer was true for a parent renderer but false for the inner table renderer public void nestedTableMinMaxWidthException() throws IOException, InterruptedException { String testName = "nestedTableMinMaxWidthException.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdf = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdf); @@ -2436,14 +2515,15 @@ public void nestedTableMinMaxWidthException() throws IOException, InterruptedExc doc.add(outerTable); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest01() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2454,14 +2534,15 @@ public void tableMinMaxWidthTest01() throws IOException, InterruptedException { table.addCell(cell); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest02() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2472,14 +2553,15 @@ public void tableMinMaxWidthTest02() throws IOException, InterruptedException { table.addCell(cell); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest03() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest03.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2490,14 +2572,15 @@ public void tableMinMaxWidthTest03() throws IOException, InterruptedException { table.addCell(cell); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest04() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest04.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2508,14 +2591,15 @@ public void tableMinMaxWidthTest04() throws IOException, InterruptedException { table.addCell(cell); doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest05() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest05.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2531,14 +2615,15 @@ public void tableMinMaxWidthTest05() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void cellsWithEdgeCaseLeadingTest01() throws IOException, InterruptedException { String testName = "cellsWithEdgeCaseLeadingTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfWriter writer = new PdfWriter(outFileName); PdfDocument pdf = new PdfDocument(writer); @@ -2603,14 +2688,15 @@ public void cellsWithEdgeCaseLeadingTest01() throws IOException, InterruptedExce document.add(table); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableMinMaxWidthTest06() throws IOException, InterruptedException { String testName = "tableMinMaxWidthTest06.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2626,7 +2712,8 @@ public void tableMinMaxWidthTest06() throws IOException, InterruptedException { doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -2685,8 +2772,8 @@ public void splitTableMinMaxWidthTest01() { @Test public void marginPaddingTest01() throws IOException, InterruptedException { String testName = "marginPaddingTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2711,14 +2798,15 @@ public void marginPaddingTest01() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void spacingTest01() throws IOException, InterruptedException { String testName = "spacingTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2745,14 +2833,15 @@ public void spacingTest01() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void taggedTableWithCaptionTest01() throws IOException, InterruptedException { String testName = "taggedTableWithCaptionTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); pdfDoc.setTagged(); @@ -2768,14 +2857,15 @@ public void taggedTableWithCaptionTest01() throws IOException, InterruptedExcept doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void wideCaptionTest01() throws IOException, InterruptedException { String testName = "wideCaptionTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2810,14 +2900,15 @@ public void wideCaptionTest01() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void splitTableWithCaptionTest01() throws IOException, InterruptedException { String testName = "splitTableWithCaptionTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2842,14 +2933,15 @@ public void splitTableWithCaptionTest01() throws IOException, InterruptedExcepti doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void captionedTableOfOnePageWithCollapsedBordersTest01() throws IOException, InterruptedException { String testName = "captionedTableOfOnePageWithCollapsedBordersTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2886,14 +2978,15 @@ public void captionedTableOfOnePageWithCollapsedBordersTest01() throws IOExcepti doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableWithDifferentStylesOfCollapsedBordersTest() throws IOException, InterruptedException { String testName = "tableWithDifferentStylesOfCollapsedBordersTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2908,15 +3001,16 @@ public void tableWithDifferentStylesOfCollapsedBordersTest() throws IOException, doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void captionedTableOfOnePageWithSeparatedBordersTest01() throws IOException, InterruptedException { String testName = "captionedTableOfOnePageWithSeparatedBordersTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -2951,7 +3045,8 @@ public void captionedTableOfOnePageWithSeparatedBordersTest01() throws IOExcepti doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } private void addTable(Table table, boolean addParagraphBefore, boolean addParagraphAfter, Document doc) { @@ -2998,8 +3093,8 @@ private Table createTestTable(int colNum, int bodyRowNum, int headerRowNum, int @Test public void skipLastFooterAndProcessBigRowspanTest01() throws IOException, InterruptedException { String testName = "skipLastFooterAndProcessBigRowspanTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, new PageSize(595, 140)); @@ -3016,14 +3111,15 @@ public void skipLastFooterAndProcessBigRowspanTest01() throws IOException, Inter doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void skipLastFooterAndProcessBigRowspanTest02() throws IOException, InterruptedException { String testName = "skipLastFooterAndProcessBigRowspanTest02.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; int numRows = 3; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); @@ -3046,14 +3142,15 @@ public void skipLastFooterAndProcessBigRowspanTest02() throws IOException, Inter } doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void skipLastFooterOnShortPageTest01() throws IOException, InterruptedException { String testName = "skipLastFooterOnShortPageTest01.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, new PageSize(595, 120)); @@ -3071,14 +3168,15 @@ public void skipLastFooterOnShortPageTest01() throws IOException, InterruptedExc doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void firstRowPartiallyFitWideBottomBorderTest() throws IOException, InterruptedException { String testName = "firstRowPartiallyFitWideBottomBorderTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4); @@ -3103,14 +3201,15 @@ public void firstRowPartiallyFitWideBottomBorderTest() throws IOException, Inter addTableBelowToCheckThatOccupiedAreaIsCorrect(doc); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void collapseWithNextRowWiderThanWithTableBorderTest() throws IOException, InterruptedException { String testName = "collapseWithNextRowWiderThanWithTableBorderTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4); @@ -3136,14 +3235,15 @@ public void collapseWithNextRowWiderThanWithTableBorderTest() throws IOException addTableBelowToCheckThatOccupiedAreaIsCorrect(doc); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void tableBottomBorderWideTest() throws IOException, InterruptedException { String testName = "tableBottomBorderWideTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -3160,14 +3260,15 @@ public void tableBottomBorderWideTest() throws IOException, InterruptedException addTableBelowToCheckThatOccupiedAreaIsCorrect(doc); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void cellWithBigRowspanCompletedRowTooTest() throws IOException, InterruptedException { String testName = "cellWithBigRowspanCompletedRowTooTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -3199,14 +3300,15 @@ public void cellWithBigRowspanCompletedRowTooTest() throws IOException, Interrup doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void cellWithBigRowspanCompletedRowNotTest() throws IOException, InterruptedException { String testName = "cellWithBigRowspanCompletedRowNotTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -3239,14 +3341,15 @@ public void cellWithBigRowspanCompletedRowNotTest() throws IOException, Interrup doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void inheritHeaderPropsWhileMinMaxWidthCalculationsTest() throws IOException, InterruptedException { String filename = "inheritHeaderPropsWhileMinMaxWidthCalculations.pdf"; - PdfDocument pdf = new PdfDocument(new PdfWriter(destinationFolder + filename)); + PdfDocument pdf = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + filename)); Document document = new Document(pdf); Paragraph p = new Paragraph("Some text is placed at the beginning" @@ -3267,8 +3370,8 @@ public void inheritHeaderPropsWhileMinMaxWidthCalculationsTest() throws IOExcept document.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + filename, - sourceFolder + "cmp_" + filename, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + filename, + SOURCE_FOLDER + "cmp_" + filename, DESTINATION_FOLDER, "diff")); } @Test @@ -3277,8 +3380,8 @@ public void inheritHeaderPropsWhileMinMaxWidthCalculationsTest() throws IOExcept }) public void infiniteLoopOnUnfitCellAndBigRowspanTest() throws IOException, InterruptedException { String testName = "infiniteLoopOnUnfitCellAndBigRowspanTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4.rotate()); @@ -3291,7 +3394,7 @@ public void infiniteLoopOnUnfitCellAndBigRowspanTest() throws IOException, Inter table.addCell(cellNum1); Cell cellNum2 = new Cell(2, 2); - Image img = new Image(ImageDataFactory.create(sourceFolder + "itext.png")); + Image img = new Image(ImageDataFactory.create(SOURCE_FOLDER + "itext.png")); cellNum2.add(img); table.addCell(cellNum2); @@ -3302,7 +3405,8 @@ public void infiniteLoopOnUnfitCellAndBigRowspanTest() throws IOException, Inter doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -3312,8 +3416,8 @@ public void infiniteLoopOnUnfitCellAndBigRowspanTest() throws IOException, Inter }) public void firstRowNotFitBigRowspanTest() throws IOException, InterruptedException { String testName = "firstRowNotFitBigRowspanTest.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, PageSize.A4); @@ -3336,76 +3440,23 @@ public void firstRowNotFitBigRowspanTest() throws IOException, InterruptedExcept doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test public void bigRowSpanTooFarFullTest() throws IOException, InterruptedException { - String filename = "bigRowSpanTooFarFullTest.pdf"; - - PdfDocument pdf = new PdfDocument(new PdfWriter(destinationFolder + filename)); - Document document = new Document(pdf); - - Table table = new Table(2); - - int bigRowSpan = 5; - table.addCell( - new Cell(bigRowSpan, 1) - .add(new Paragraph("row span " + bigRowSpan)) - .setBackgroundColor(ColorConstants.RED)); - for (int i = 0; i < bigRowSpan; i++) { - table.addCell( - new Cell() - .add(new Paragraph(Integer.toString(i))) - .setHeight(375) - .setBackgroundColor(ColorConstants.BLUE)); - } - - document.add(table); - document.add(new AreaBreak()); - - table.setBorderCollapse(BorderCollapsePropertyValue.SEPARATE); - document.add(table); - - document.close(); - - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + filename, - sourceFolder + "cmp_" + filename, destinationFolder)); + bigRowspanTooFar("bigRowSpanTooFarFullTest.pdf", false, false, false); } @Test public void bigRowSpanTooFarPartialTest() throws IOException, InterruptedException { - String filename = "bigRowSpanTooFarPartialTest.pdf"; - - PdfDocument pdf = new PdfDocument(new PdfWriter(destinationFolder + filename)); - Document document = new Document(pdf); - - Table table = new Table(2); - - int bigRowSpan = 5; - table.addCell( - new Cell(bigRowSpan, 1) - .add(new Paragraph("row span " + bigRowSpan)) - .setHeight(800) - .setBackgroundColor(ColorConstants.RED)); - for (int i = 0; i < bigRowSpan; i++) { - table.addCell( - new Cell() - .add(new Paragraph(Integer.toString(i))) - .setHeight(375) - .setBackgroundColor(ColorConstants.BLUE)); - } - - document.add(table); - document.add(new AreaBreak()); - - table.setBorderCollapse(BorderCollapsePropertyValue.SEPARATE); - document.add(table); - - document.close(); + bigRowspanTooFar("bigRowSpanTooFarPartialTest.pdf", false, false, true); + } - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + filename, - sourceFolder + "cmp_" + filename, destinationFolder)); + @Test + public void bigRowSpanTooFarPartialLongLastCellTest() throws IOException, InterruptedException { + bigRowspanTooFar("bigRowSpanTooFarPartialLongLastCell.pdf", false, true, true); } @Test @@ -3413,27 +3464,44 @@ public void bigRowSpanTooFarPartialTest() throws IOException, InterruptedExcepti @LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA, count = 2) }) public void bigRowSpanTooFarNothingTest() throws IOException, InterruptedException { - String filename = "bigRowSpanTooFarNothingTest.pdf"; + bigRowspanTooFar("bigRowSpanTooFarNothingTest.pdf", true, false, true); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = LayoutLogMessageConstant.ELEMENT_DOES_NOT_FIT_AREA, count = 2) + }) + public void bigRowSpanTooFarNothingLongLastCellTest() throws IOException, InterruptedException { + bigRowspanTooFar("bigRowSpanTooFarNothingLongLastCell.pdf", true, true, true); + } - PdfDocument pdf = new PdfDocument(new PdfWriter(destinationFolder + filename)); + private static void bigRowspanTooFar(String filename, boolean addKeepTogether, boolean longLastCell, boolean bigRowspanWithHeight) throws IOException, InterruptedException { + PdfDocument pdf = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + filename)); Document document = new Document(pdf); Table table = new Table(2); int bigRowSpan = 5; - table.addCell( - new Cell(bigRowSpan, 1) - .add(new Paragraph("row span " + bigRowSpan)) - .setHeight(800) - .setKeepTogether(true) - .setBackgroundColor(ColorConstants.RED)); - for (int i = 0; i < bigRowSpan; i++) { + final Cell bigRowspanCell = new Cell(bigRowSpan, 1) + .add(new Paragraph("row span " + bigRowSpan)) + .setBackgroundColor(ColorConstants.RED); + if (bigRowspanWithHeight) { + bigRowspanCell.setHeight(800); + } + if (addKeepTogether) { + bigRowspanCell.setKeepTogether(true); + } + table.addCell(bigRowspanCell); + for (int i = 0; i < bigRowSpan - 1; i++) { table.addCell( new Cell() .add(new Paragraph(Integer.toString(i))) - .setHeight(375) - .setBackgroundColor(ColorConstants.BLUE)); + .setHeight(375)); } + final Cell lastCell = new Cell() + .add(new Paragraph(Integer.toString(bigRowSpan - 1))) + .setHeight(longLastCell ? 1000 : 375); + table.addCell(lastCell); document.add(table); document.add(new AreaBreak()); @@ -3443,8 +3511,8 @@ public void bigRowSpanTooFarNothingTest() throws IOException, InterruptedExcepti document.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + filename, - sourceFolder + "cmp_" + filename, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + filename, + SOURCE_FOLDER + "cmp_" + filename, DESTINATION_FOLDER)); } @Test @@ -3452,7 +3520,7 @@ public void bigRowSpanTooFarNothingTest() throws IOException, InterruptedExcepti public void setWidthShouldBeRespectedTest() throws IOException, InterruptedException { String fileName = "setWidthShouldBeRespectedTest.pdf"; - PdfDocument pdfDocument = new PdfDocument(new PdfWriter(destinationFolder + fileName)); + PdfDocument pdfDocument = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + fileName)); Document doc = new Document(pdfDocument, new PageSize(842, 1400)); Table table = new Table(2); @@ -3472,8 +3540,8 @@ public void setWidthShouldBeRespectedTest() throws IOException, InterruptedExcep doc.add(table); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } //creates 2 empty lines, where 2 is random number @@ -3486,7 +3554,7 @@ private static void startSeveralEmptyRows(Table table) { public void preciseFittingItalicBoldSimulatedTextInCellsTest() throws IOException, InterruptedException { String fileName = "preciseFittingItalicBoldSimulatedTextInCells.pdf"; - try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(destinationFolder + fileName)); + try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + fileName)); Document doc = new Document(pdfDocument)) { int numberOfColumns = 9; @@ -3507,8 +3575,8 @@ public void preciseFittingItalicBoldSimulatedTextInCellsTest() throws IOExceptio doc.add(table); } - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } @Test @@ -3549,7 +3617,7 @@ public void infiniteLoopKeepTogetherTest() throws IOException, InterruptedExcept String fileName = "infiniteLoopKeepTogether.pdf"; float fontSize = 8; - try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + fileName)); + try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DESTINATION_FOLDER + fileName)); Document doc = new Document(pdfDoc)) { doc.setMargins(138, 20, 75, 20); @@ -3572,8 +3640,8 @@ public void infiniteLoopKeepTogetherTest() throws IOException, InterruptedExcept doc.add(table); } - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } @Test @@ -3583,15 +3651,16 @@ public void infiniteLoopKeepTogetherTest() throws IOException, InterruptedExcept }) public void negativeLayoutAreaTest() throws IOException, InterruptedException { String testName = "negativeLayoutAreaTable.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc, new PageSize(595.0f, 50.0f)); doc.add(new Table(new float[]{1, 1}).addCell(new Cell().setHeight(10.0f))); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, testName + "_diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, + DESTINATION_FOLDER, testName + "_diff")); } @Test @@ -3601,7 +3670,7 @@ public void negativeLayoutAreaTest() throws IOException, InterruptedException { public void keepTogetherCaptionAndHugeCellTest() throws IOException, InterruptedException { String fileName = "keepTogetherCaptionAndHugeCell.pdf"; - PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(destinationFolder + fileName)); + PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName)); Document document = new Document(pdfDocument, PageSize.A4); Table table = new Table(1) @@ -3617,8 +3686,8 @@ public void keepTogetherCaptionAndHugeCellTest() throws IOException, Interrupted document.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } @Test @@ -3628,7 +3697,7 @@ public void keepTogetherCaptionAndHugeCellTest() throws IOException, Interrupted public void keepTogetherCaptionDoesntFitPageTest() throws IOException, InterruptedException { String fileName = "keepTogetherCaptionDoesntFitPage.pdf"; - PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(destinationFolder + fileName)); + PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName)); Document document = new Document(pdfDocument, PageSize.A4); document.add(new Paragraph(PlaceHolderTextUtil @@ -3647,8 +3716,8 @@ public void keepTogetherCaptionDoesntFitPageTest() throws IOException, Interrupt document.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } @Test @@ -3657,7 +3726,7 @@ public void keepTogetherCaptionDoesntFitPageTest() throws IOException, Interrupt }) public void keepTogetherCaptionAndSplitCellTest() throws IOException, InterruptedException { String fileName = "keepTogetherCaptionAndSplitCell.pdf"; - PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(destinationFolder + fileName)); + PdfDocument pdfDocument = new PdfDocument(CompareTool.createTestPdfWriter(DESTINATION_FOLDER + fileName)); Document document = new Document(pdfDocument, PageSize.A4); Table table = new Table(1) @@ -3674,8 +3743,8 @@ public void keepTogetherCaptionAndSplitCellTest() throws IOException, Interrupte document.close(); - Assertions.assertNull(new CompareTool().compareByContent(destinationFolder + fileName, - sourceFolder + "cmp_" + fileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(DESTINATION_FOLDER + fileName, + SOURCE_FOLDER + "cmp_" + fileName, DESTINATION_FOLDER)); } @Test @@ -3688,8 +3757,8 @@ public void splitComplexTable() throws IOException, InterruptedException { // and then minimized String testName = "splitComplexTable.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; ComplexTableGenerator template = new ComplexTableGenerator(); ComplexTableGenerator.GenerationContext context = new ComplexTableGenerator.GenerationContext(); @@ -3701,7 +3770,7 @@ public void splitComplexTable() throws IOException, InterruptedException { template.generate(context); context.pdf.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, testName + "_diff")); } @@ -3711,8 +3780,8 @@ public void splitComplexTable() throws IOException, InterruptedException { @Test public void keepTogetherNestedTableDoesNotThrow() throws IOException, InterruptedException { String testName = "keepTogetherNestedTableDoesNotThrow.pdf"; - String outFileName = destinationFolder + testName; - String cmpFileName = sourceFolder + "cmp_" + testName; + String outFileName = DESTINATION_FOLDER + testName; + String cmpFileName = SOURCE_FOLDER + "cmp_" + testName; PdfWriter writer = new PdfWriter(outFileName); PdfDocument pdf = new PdfDocument(writer); @@ -3735,7 +3804,7 @@ public void keepTogetherNestedTableDoesNotThrow() throws IOException, Interrupte document.add(outerTable); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, testName + "_diff")); } diff --git a/layout/src/test/java/com/itextpdf/layout/TabsTest.java b/layout/src/test/java/com/itextpdf/layout/TabsTest.java index 718f85d26c..67736fadf0 100644 --- a/layout/src/test/java/com/itextpdf/layout/TabsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/TabsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/TextWritingTest.java b/layout/src/test/java/com/itextpdf/layout/TextWritingTest.java index 52774570da..3bddbe1c4d 100644 --- a/layout/src/test/java/com/itextpdf/layout/TextWritingTest.java +++ b/layout/src/test/java/com/itextpdf/layout/TextWritingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -54,20 +54,20 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class TextWritingTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/layout/TextWritingTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/layout/TextWritingTest/"; - public static final String fontsFolder = "./src/test/resources/com/itextpdf/layout/fonts/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/layout/TextWritingTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/layout/TextWritingTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/layout/fonts/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @Test public void textRiseTest01() throws IOException, InterruptedException { // CountryChunks example - String outFileName = destinationFolder + "textRiseTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_textRiseTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "textRiseTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_textRiseTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -87,13 +87,13 @@ public void textRiseTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void textRenderingModeTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "textRenderingModeTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_textRenderingModeTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "textRenderingModeTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_textRenderingModeTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -129,13 +129,13 @@ public void textRenderingModeTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void textStrokeTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "textStrokeTest.pdf"; - String cmpFileName = sourceFolder + "cmp_textStrokeTest.pdf"; + String outFileName = DESTINATION_FOLDER + "textStrokeTest.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_textStrokeTest.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument)) { Text text1 = new Text("Red stroke text via color setter") @@ -168,13 +168,13 @@ public void textStrokeTest() throws IOException, InterruptedException { text5.setProperty(Property.STROKE_COLOR, ColorConstants.RED); document.add(new Paragraph().add(text5)); } - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void textFillStrokeTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "textFillStrokeTest.pdf"; - String cmpFileName = sourceFolder + "cmp_textFillStrokeTest.pdf"; + String outFileName = DESTINATION_FOLDER + "textFillStrokeTest.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_textFillStrokeTest.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument)) { Text text1 = new Text("Pink text with null stroke color (so font color is used)") @@ -201,13 +201,13 @@ public void textFillStrokeTest() throws IOException, InterruptedException { .setFontSize(50); document.add(new Paragraph().add(text3)); } - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void leadingTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "leadingTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_leadingTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "leadingTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_leadingTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -227,13 +227,13 @@ public void leadingTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void leadingTest02() throws IOException, InterruptedException { - String outFileName = destinationFolder + "leadingTest02.pdf"; - String cmpFileName = sourceFolder + "cmp_leadingTest02.pdf"; + String outFileName = DESTINATION_FOLDER + "leadingTest02.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_leadingTest02.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -244,13 +244,13 @@ public void leadingTest02() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void firstLineIndentTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "firstLineIndentTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_firstLineIndentTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "firstLineIndentTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_firstLineIndentTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -290,13 +290,13 @@ public void firstLineIndentTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void charSpacingTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "charSpacingTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_charSpacingTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "charSpacingTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_charSpacingTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -313,13 +313,13 @@ public void charSpacingTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void wordSpacingTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "wordSpacingTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_wordSpacingTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "wordSpacingTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_wordSpacingTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -337,13 +337,13 @@ public void wordSpacingTest01() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void fontStyleSimulationTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "fontStyleSimulationTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_fontStyleSimulationTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "fontStyleSimulationTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_fontStyleSimulationTest01.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -358,14 +358,14 @@ public void fontStyleSimulationTest01() throws IOException, InterruptedException document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void bigWordTest01() throws IOException, InterruptedException { - String outFileName = destinationFolder + "bigWordTest01.pdf"; - String cmpFileName = sourceFolder + "cmp_bigWordTest01.pdf"; + String outFileName = DESTINATION_FOLDER + "bigWordTest01.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_bigWordTest01.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document doc = new Document(pdfDoc); @@ -401,13 +401,13 @@ public void bigWordTest01() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void underlineTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "underline.pdf"; - String cmpFileName = sourceFolder + "cmp_underline.pdf"; + String outFileName = DESTINATION_FOLDER + "underline.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_underline.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -421,13 +421,13 @@ public void underlineTest() throws IOException, InterruptedException { document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void strokedUnderlineTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "strokedUnderline.pdf"; - String cmpFileName = sourceFolder + "cmp_strokedUnderline.pdf"; + String outFileName = DESTINATION_FOLDER + "strokedUnderline.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_strokedUnderline.pdf"; try (PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument)) { @@ -464,14 +464,14 @@ public void strokedUnderlineTest() throws IOException, InterruptedException { document.add(p4); } - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff")); } @Test public void lineThroughTest() throws IOException, InterruptedException { //TODO: update after DEVSIX-2623 fix - String outFileName = destinationFolder + "lineThrough.pdf"; - String cmpFileName = sourceFolder + "cmp_lineThrough.pdf"; + String outFileName = DESTINATION_FOLDER + "lineThrough.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_lineThrough.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDocument); @@ -486,7 +486,7 @@ public void lineThroughTest() throws IOException, InterruptedException { document.add(n); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER, "diff_")); } @Test @@ -498,8 +498,8 @@ public void textInitializationWithNullValueThrowsException() { @Test // TODO: update cmp file after fixing DEVSIX-4604 public void leadingAndFloatInTextTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "leadingAndFloatInText.pdf"; - String cmpFileName = sourceFolder + "cmp_leadingAndFloatInText.pdf"; + String outFileName = DESTINATION_FOLDER + "leadingAndFloatInText.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_leadingAndFloatInText.pdf"; PdfDocument pdfDocument = new PdfDocument(new PdfWriter(outFileName)); @@ -516,13 +516,13 @@ public void leadingAndFloatInTextTest() throws IOException, InterruptedException document.add(p); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER)); } @Test public void textWrappingEpsilonTest() throws IOException, InterruptedException { - String outFileName = destinationFolder + "textWrappingEpsilon.pdf"; - String cmpFileName = sourceFolder + "cmp_textWrappingEpsilon.pdf"; + String outFileName = DESTINATION_FOLDER + "textWrappingEpsilon.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_textWrappingEpsilon.pdf"; PdfWriter writer = new PdfWriter(outFileName); PdfDocument pdfDoc = new PdfDocument(writer); @@ -532,7 +532,7 @@ public void textWrappingEpsilonTest() throws IOException, InterruptedException { document.setLeftMargin(250.0F); document.setRightMargin(238.727F); pdfDoc.setDefaultPageSize(PageSize.LETTER); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "../fonts/Open_Sans/OpenSans-Regular.ttf"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "OpenSans-Regular.ttf"); String text1 = "First line of some text "; String text2 = "Second line of some text"; @@ -553,6 +553,6 @@ public void textWrappingEpsilonTest() throws IOException, InterruptedException { document.close(); writer.close(); - Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, destinationFolder)); + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER)); } } diff --git a/layout/src/test/java/com/itextpdf/layout/XMPWriterTest.java b/layout/src/test/java/com/itextpdf/layout/XMPWriterTest.java index b29d5660f9..2a0485aea2 100644 --- a/layout/src/test/java/com/itextpdf/layout/XMPWriterTest.java +++ b/layout/src/test/java/com/itextpdf/layout/XMPWriterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerColumnTest.java b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerColumnTest.java index 3ec08a3ef1..73d3688967 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerColumnTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerColumnTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerSplitTest.java b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerSplitTest.java index 7a10e69d3d..ad719bd013 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerSplitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerSplitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerTest.java b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerTest.java index 530a15ffc5..4bcd5017b5 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/FlexContainerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/FlexContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/GridContainerTest.java b/layout/src/test/java/com/itextpdf/layout/element/GridContainerTest.java index e3254e5215..89ae3b4b5c 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/GridContainerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/GridContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/MulticolContainerTest.java b/layout/src/test/java/com/itextpdf/layout/element/MulticolContainerTest.java index ad52ef38e1..635f557411 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/MulticolContainerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/MulticolContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/WrongParentTreeDiv.java b/layout/src/test/java/com/itextpdf/layout/element/WrongParentTreeDiv.java index cff5f681f2..4c3f0296f8 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/WrongParentTreeDiv.java +++ b/layout/src/test/java/com/itextpdf/layout/element/WrongParentTreeDiv.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/element/gridcontainer/GridContainerLayoutTest.java b/layout/src/test/java/com/itextpdf/layout/element/gridcontainer/GridContainerLayoutTest.java index f622b027a8..078a821d75 100644 --- a/layout/src/test/java/com/itextpdf/layout/element/gridcontainer/GridContainerLayoutTest.java +++ b/layout/src/test/java/com/itextpdf/layout/element/gridcontainer/GridContainerLayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsTest.java b/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsTest.java index 57866a19ad..1ccd5030de 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsUtilsTest.java b/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsUtilsTest.java index 88c97f82cd..01cb76f169 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsUtilsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/FontCharacteristicsUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/FontSelectorLayoutTest.java b/layout/src/test/java/com/itextpdf/layout/font/FontSelectorLayoutTest.java index ee216c425e..000fd7d776 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/FontSelectorLayoutTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/FontSelectorLayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -64,7 +64,7 @@ public void nonBreakingHyphenDifferentFonts() throws IOException, InterruptedExc sel.setFontSelectorStrategyFactory(new BestMatchFontSelectorStrategyFactory()); sel.getFontSet().addFont(StandardFonts.TIMES_ROMAN); sel.getFontSet().addFont(StandardFonts.COURIER); - sel.getFontSet().addFont(fontsFolder + "Puritan2.otf", PdfEncodings.IDENTITY_H, "Puritan2"); + sel.getFontSet().addFont(fontsFolder + "Puritan-Regular.ttf", PdfEncodings.IDENTITY_H, "Puritan-Regular"); sel.getFontSet().addFont(fontsFolder + "NotoSans-Regular.ttf", PdfEncodings.IDENTITY_H, "NotoSans"); sel.getFontSet().addFont(fontsFolder + "FreeSans.ttf", PdfEncodings.IDENTITY_H, "FreeSans"); document.setFontProvider(sel); @@ -73,7 +73,7 @@ public void nonBreakingHyphenDifferentFonts() throws IOException, InterruptedExc document.add(createParagraph("For Standard font COURIER: ", StandardFonts.COURIER)); document.add(createParagraph("For FreeSans: ", ("FreeSans"))); document.add(createParagraph("For NotoSans: ", ("NotoSans"))); - document.add(createParagraph("For Puritan2: ", ("Puritan2"))); + document.add(createParagraph("For Puritan-Regular: ", ("Puritan-Regular"))); document.close(); diff --git a/layout/src/test/java/com/itextpdf/layout/font/FontSetTest.java b/layout/src/test/java/com/itextpdf/layout/font/FontSetTest.java index 479c3b5df2..7db9b46c79 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/FontSetTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/FontSetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/RangeTest.java b/layout/src/test/java/com/itextpdf/layout/font/RangeTest.java index 1091bb571f..748a63a0b0 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/RangeTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/RangeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategyTest.java b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategyTest.java index 65a98b46d8..5be572bb77 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategyTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/BestMatchFontSelectorStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategyTest.java b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategyTest.java index f0e96ccccf..5758ce4a1b 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategyTest.java +++ b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FirstMatchFontSelectorStrategyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FontSelectorTestsUtil.java b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FontSelectorTestsUtil.java index e545fac48f..375f5f5e86 100644 --- a/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FontSelectorTestsUtil.java +++ b/layout/src/test/java/com/itextpdf/layout/font/selectorstrategy/FontSelectorTestsUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -86,7 +86,7 @@ public static IFontSelectorStrategy createStrategyWithLimitedThreeFonts(IFontSel // 'd', 'e' and 'f' are in that interval fontProvider.getFontSet().addFont(FONTS_FOLDER + "FreeSans.ttf", null, "FontAlias", new RangeBuilder(100, 102).create()); // 'x', 'y' and 'z' are in that interval - fontProvider.getFontSet().addFont(FONTS_FOLDER + "Puritan2.otf", null, "FontAlias", new RangeBuilder(120, 122).create()); + fontProvider.getFontSet().addFont(FONTS_FOLDER + "Puritan-Regular.ttf", null, "FontAlias", new RangeBuilder(120, 122).create()); fontProvider.setFontSelectorStrategyFactory(factory); List fontFamilies = new ArrayList<>(); diff --git a/layout/src/test/java/com/itextpdf/layout/hyphenation/HyphenationTreeTest.java b/layout/src/test/java/com/itextpdf/layout/hyphenation/HyphenationTreeTest.java index 1e65107ff5..0dd8c1f56a 100644 --- a/layout/src/test/java/com/itextpdf/layout/hyphenation/HyphenationTreeTest.java +++ b/layout/src/test/java/com/itextpdf/layout/hyphenation/HyphenationTreeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/layout/LayoutAreaTest.java b/layout/src/test/java/com/itextpdf/layout/layout/LayoutAreaTest.java index 65302eda37..f4bd399e9c 100644 --- a/layout/src/test/java/com/itextpdf/layout/layout/LayoutAreaTest.java +++ b/layout/src/test/java/com/itextpdf/layout/layout/LayoutAreaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandlerTest.java b/layout/src/test/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandlerTest.java index 2a85f215f2..3f0321e62e 100644 --- a/layout/src/test/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandlerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundImageTest.java b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundImageTest.java index 072a94ec04..6791ea370a 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundImageTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundImageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundRepeatUnitTest.java b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundRepeatUnitTest.java index 168b3d4aed..4d3b6e5902 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundRepeatUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundRepeatUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundSizeTest.java b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundSizeTest.java index b1bfae47d0..cb35274e1d 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundSizeTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundSizeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundUnitTest.java b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundUnitTest.java index b9d3ed8197..806f117510 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/BackgroundUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/BackgroundUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/ContinuousContainerTest.java b/layout/src/test/java/com/itextpdf/layout/properties/ContinuousContainerTest.java index a08b382502..6fbb668b62 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/ContinuousContainerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/ContinuousContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/GridValueTest.java b/layout/src/test/java/com/itextpdf/layout/properties/GridValueTest.java index 73512b1ba3..210fa076fa 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/GridValueTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/GridValueTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/PropertyTest.java b/layout/src/test/java/com/itextpdf/layout/properties/PropertyTest.java index 4e1e9a43fa..94f87a71a2 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/PropertyTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/PropertyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/properties/TransformTest.java b/layout/src/test/java/com/itextpdf/layout/properties/TransformTest.java index 9e689fa7b2..514ca12007 100644 --- a/layout/src/test/java/com/itextpdf/layout/properties/TransformTest.java +++ b/layout/src/test/java/com/itextpdf/layout/properties/TransformTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/AbstractRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/AbstractRendererUnitTest.java index a32389c157..d75d848214 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/AbstractRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/AbstractRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/AreaBreakRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/AreaBreakRendererUnitTest.java index bc7b318baf..4e7f05f13a 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/AreaBreakRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/AreaBreakRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererTest.java index 14f3cf7c75..4e68607c78 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,6 +45,7 @@ This file is part of the iText (R) project. import com.itextpdf.layout.layout.LayoutResult; import com.itextpdf.layout.logs.LayoutLogMessageConstant; import com.itextpdf.layout.minmaxwidth.MinMaxWidth; +import com.itextpdf.layout.properties.FloatPropertyValue; import com.itextpdf.layout.properties.OverflowPropertyValue; import com.itextpdf.layout.properties.Property; import com.itextpdf.layout.properties.UnitValue; @@ -252,6 +253,46 @@ public void enableForcePlacementIfCauseOfNothingNotInOverflowTreeTest() throws I Assertions.assertNull(new CompareTool().compareByContent(outFile, cmpFileName, DESTINATION_FOLDER)); } + @Test + public void absolutePositionedChildIsNotDroppedWhenParentSplitsTest() throws Exception { + String cmpFileName = SOURCE_FOLDER + "cmp_absolutePositionedChildIsNotDroppedWhenParentSplits.pdf"; + String outFile = DESTINATION_FOLDER + "absolutePositionedChildIsNotDroppedWhenParentSplits.pdf"; + + try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFile)); + Document doc = new Document(pdfDoc)) { + Div tocEntry = new Div(); + tocEntry.setProperty(Property.POSITION, LayoutPosition.RELATIVE); + + Div counter = new Div().add(new Paragraph("1")); + counter.setProperty(Property.FLOAT, FloatPropertyValue.LEFT); + counter.setWidth(40); + + Div icons = new Div().add(new Paragraph("Page 27")); + icons.setProperty(Property.POSITION, LayoutPosition.ABSOLUTE); + icons.setProperty(Property.RIGHT, 6f); + icons.setProperty(Property.TOP, 6f); + + String strToFill = "Very long agenda item title intended to force a split across pages. "; + int iterations = 70; + StringBuilder longText = new StringBuilder(iterations * strToFill.length()); + for (int i = 0; i < iterations; ++i) { + longText.append(strToFill); + } + Paragraph title = new Paragraph(longText.toString()); + title.setMarginLeft(45); + + tocEntry.add(counter); + tocEntry.add(title); + tocEntry.add(icons); + + doc.add(tocEntry); + + // Add a control element after + doc.add(new Paragraph("Control")); + } + Assertions.assertNull(new CompareTool().compareByContent(outFile, cmpFileName, DESTINATION_FOLDER)); + } + public static class WrongParentTreeDivRenderer extends DivRenderer { public WrongParentTreeDivRenderer(Div modelElement) { super(modelElement); diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererUnitTest.java index a1c1bdee6a..40e2b83223 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/BlockRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/CellRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/CellRendererUnitTest.java index ca517630d7..ba841afa7a 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/CellRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/CellRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/DivRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/DivRendererUnitTest.java index 5cf6ead980..6c81bdda61 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/DivRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/DivRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/EmptyNestedTableTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/EmptyNestedTableTest.java index 46c0eda88a..e42ec602ef 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/EmptyNestedTableTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/EmptyNestedTableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/FlexContainerRendererTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/FlexContainerRendererTest.java index 5acef00da5..c6d2d44575 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/FlexContainerRendererTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/FlexContainerRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilJustifyContentTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilJustifyContentTest.java index 24acaf4d08..df0cb10af0 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilJustifyContentTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilJustifyContentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilTest.java index 0eb9f3d1d0..0fffd30fcc 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/FlexUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/FloatExampleTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/FloatExampleTest.java index 6e01347548..8175a23691 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/FloatExampleTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/FloatExampleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/GridUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/GridUnitTest.java index e00f000767..a96268fbe5 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/GridUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/GridUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/ImageWidthTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/ImageWidthTest.java index 7bfd7bda4e..6116f1f8d5 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/ImageWidthTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/ImageWidthTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperIntegrationTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperIntegrationTest.java index 71c74a1364..a1f1567ae4 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperIntegrationTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperUnitTest.java index 77e9f8fe41..3e7f9a28e7 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/LineHeightHelperUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,8 +44,7 @@ This file is part of the iText (R) project. public class LineHeightHelperUnitTest extends ExtendedITextTest { private static final double EPS = 1e-5; - private static final String FONTS = "./src/test/resources/com/itextpdf/layout/fonts/"; - private static final String OPEN_SANS_FONTS = FONTS + "Open_Sans/"; + private static final String FONT_FOLDER = "./src/test/resources/com/itextpdf/layout/fonts/"; @Test public void calculateFontAscenderDescenderFromFontMetricsCourierTest() throws IOException { @@ -154,7 +153,7 @@ public void calculateLineHeighttTextRendererPointTest() { @Test public void calculateLineHeightTextRendererNormalAscenderDescenderSumForNotoSansFontTest() throws IOException { Document document = new Document(new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))); - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoSans-Regular.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf"); TextRenderer textRenderer = new TextRenderer(new Text("Hello")); textRenderer.setProperty(Property.FONT, font); textRenderer.setProperty(Property.LINE_HEIGHT, LineHeight.createNormalValue()); @@ -175,7 +174,7 @@ public void getActualAscenderDescenderTextRenderer() { @Test public void calculateFontAscenderDescenderFromFontMetricsNotoEmojiFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoEmoji-Regular.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoEmoji-Regular.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(1068.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-292.0f, ascenderDescenderFromFontMetrics[1], EPS); @@ -183,7 +182,7 @@ public void calculateFontAscenderDescenderFromFontMetricsNotoEmojiFontTest() thr @Test public void calculateFontAscenderDescenderFromFontMetricsNotoSansFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoSans-Regular.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSans-Regular.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(1068.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-292.0f, ascenderDescenderFromFontMetrics[1], EPS); @@ -191,7 +190,7 @@ public void calculateFontAscenderDescenderFromFontMetricsNotoSansFontTest() thro @Test public void calculateFontAscenderDescenderFromFontMetricsNotoColorEmojiFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoColorEmoji.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoColorEmoji.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); System.out.println(ascenderDescenderFromFontMetrics[0]); System.out.println(ascenderDescenderFromFontMetrics[1]); @@ -199,15 +198,15 @@ public void calculateFontAscenderDescenderFromFontMetricsNotoColorEmojiFontTest( @Test public void calculateFontAscenderDescenderFromFontMetricsNotoSansCJKscRegularFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoSansCJKsc-Regular.otf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSansCJKsc-Regular.otf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(1160.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-320.0f, ascenderDescenderFromFontMetrics[1], EPS); } @Test - public void calculateFontAscenderDescenderFromFontMetricsPuritan2FontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "Puritan2.otf"); + public void calculateFontAscenderDescenderFromFontMetricsPuritanFontTest() throws IOException { + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "Puritan-Regular.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(860.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-232.0f, ascenderDescenderFromFontMetrics[1], EPS); @@ -215,7 +214,7 @@ public void calculateFontAscenderDescenderFromFontMetricsPuritan2FontTest() thro @Test public void calculateFontAscenderDescenderFromFontMetricsNotoSansCJKjpBoldFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "NotoSansCJKjp-Bold.otf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "NotoSansCJKjp-Bold.otf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(1160.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-320.0f, ascenderDescenderFromFontMetrics[1], EPS); @@ -223,15 +222,15 @@ public void calculateFontAscenderDescenderFromFontMetricsNotoSansCJKjpBoldFontTe @Test public void calculateFontAscenderDescenderFromFontMetricsFreeSansFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(FONTS + "FreeSans.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "FreeSans.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); - Assertions.assertEquals(800.0f, ascenderDescenderFromFontMetrics[0], EPS); - Assertions.assertEquals(-200.0f, ascenderDescenderFromFontMetrics[1], EPS); + Assertions.assertEquals(1141.0f, ascenderDescenderFromFontMetrics[0], EPS); + Assertions.assertEquals(-459.0f, ascenderDescenderFromFontMetrics[1], EPS); } @Test public void calculateFontAscenderDescenderFromFontMetricsOpenSansRegularFontTest() throws IOException { - PdfFont font = PdfFontFactory.createFont(OPEN_SANS_FONTS + "OpenSans-Regular.ttf"); + PdfFont font = PdfFontFactory.createFont(FONT_FOLDER + "OpenSans-Regular.ttf"); float[] ascenderDescenderFromFontMetrics = TextRenderer.calculateAscenderDescender(font, RenderingMode.HTML_MODE); Assertions.assertEquals(1068.0f, ascenderDescenderFromFontMetrics[0], EPS); Assertions.assertEquals(-292.0f, ascenderDescenderFromFontMetrics[1], EPS); diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/LineRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/LineRendererUnitTest.java index 29660fcb63..316f7da872 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/LineRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/LineRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/LinkRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/LinkRendererUnitTest.java index 8d809963b4..61b689e690 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/LinkRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/LinkRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/ListRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/ListRendererUnitTest.java index 3ead60bae9..506bfb90bc 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/ListRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/ListRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/MetaInfoContainerUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/MetaInfoContainerUnitTest.java index aec71f5ed6..140027ac4f 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/MetaInfoContainerUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/MetaInfoContainerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/MinWidthTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/MinWidthTest.java index 56dca6b0e2..8e682c07d7 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/MinWidthTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/MinWidthTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/MulticolRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/MulticolRendererUnitTest.java index c9768d752f..eeb02399fe 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/MulticolRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/MulticolRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/ParagraphRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/ParagraphRendererUnitTest.java index 6a030fabb4..a3d9b3abed 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/ParagraphRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/ParagraphRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/RendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/RendererUnitTest.java index f838940d7d..a04a56c775 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/RendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/RendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TabRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TabRendererUnitTest.java index c2332cc52d..de1a38ceec 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TabRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TabRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererTest.java index 9703fdcf6b..f46730d166 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,10 +33,12 @@ This file is part of the iText (R) project. import com.itextpdf.layout.Document; import com.itextpdf.layout.borders.SolidBorder; import com.itextpdf.layout.element.Cell; +import com.itextpdf.layout.element.Div; import com.itextpdf.layout.element.Image; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.minmaxwidth.MinMaxWidth; +import com.itextpdf.layout.properties.BorderCollapsePropertyValue; import com.itextpdf.layout.properties.Property; import com.itextpdf.layout.properties.UnitValue; import com.itextpdf.test.ExtendedITextTest; @@ -151,4 +153,39 @@ public void nestedTableWithSpecifiedWidthTest() throws IOException, InterruptedE Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER)); } + + @Test + public void collapsedBorderRowspanOnPageSplitTest() throws IOException, InterruptedException { + String outFileName = DESTINATION_FOLDER + "collapsedBorderRowspanOnPageSplit.pdf"; + String cmpFileName = SOURCE_FOLDER + "cmp_collapsedBorderRowspanOnPageSplit.pdf"; + + try (Document doc = new Document(new PdfDocument(new PdfWriter(outFileName)))) { + + Div dummyDiv = new Div(); + dummyDiv.setBorder(new SolidBorder(ColorConstants.BLACK, 1.5f)); + dummyDiv.setWidth(400); + dummyDiv.setHeight(720); + doc.add(dummyDiv); + + Table table = new Table(2); + table.setBorderCollapse(BorderCollapsePropertyValue.COLLAPSE); + table.setBorder(new SolidBorder(ColorConstants.BLACK, 1.5f)); + + Cell cell1 = new Cell(4, 1); + cell1.setBackgroundColor(ColorConstants.GRAY); + cell1.add(new Paragraph("Text 0")); + table.addCell(cell1); + + Cell cell2 = new Cell(4, 1); + cell2.add(new Paragraph("Text 1")); + cell2.add(new Paragraph("Text 2")); + cell2.add(new Paragraph("Text 3")); + cell2.add(new Paragraph("Text 4")); + table.addCell(cell2); + + doc.add(table); + } + + Assertions.assertNull(new CompareTool().compareByContent(outFileName, cmpFileName, DESTINATION_FOLDER)); + } } diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererUnitTest.java index fd156a031d..22a3dfdda7 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TableRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TableWidthsTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TableWidthsTest.java index 9498bd7af4..d876ee7f56 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TableWidthsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TableWidthsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerTest.java index 9c5f106ba1..0cc43e529e 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerUnitTest.java index 93ed88cdf0..c6265eff84 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TargetCounterHandlerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextFilteringReversedRangesTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextFilteringReversedRangesTest.java index 3207feb9c9..0900cba2e1 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextFilteringReversedRangesTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextFilteringReversedRangesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextPreprocessingUtilTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextPreprocessingUtilTest.java index 3caf6fffa3..8366897d45 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextPreprocessingUtilTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextPreprocessingUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererIntegrationTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererIntegrationTest.java index c8af0b7849..4be96d0642 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererIntegrationTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererPositioningTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererPositioningTest.java index f2d2ba64da..83039f263e 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererPositioningTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererPositioningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererTest.java index 79ab55b51f..23437a8312 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -226,7 +226,7 @@ public void resolveFirstPdfFontWithGlyphsAvailableOnlyInSecondaryFont() { text.setFontFamily(Arrays.asList("Puritan 2.0", "Noto Sans")); FontProvider fontProvider = new FontProvider(); - fontProvider.addFont(FONTS_FOLDER + "Puritan2.otf"); + fontProvider.addFont(FONTS_FOLDER + "Puritan-Regular.ttf"); fontProvider.addFont(FONTS_FOLDER + "NotoSans-Regular.ttf"); text.setProperty(Property.FONT_PROVIDER, fontProvider); diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererUnitTest.java index 63450c1cc8..f2f1b4cabe 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TextRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/TypographyUtilsTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/TypographyUtilsTest.java index bd720515e3..72f9d38a6b 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/TypographyUtilsTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/TypographyUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/WordWrapUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/WordWrapUnitTest.java index 6e5e4e792d..764fda064f 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/WordWrapUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/WordWrapUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResultUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResultUnitTest.java index 8db044ec4d..e2bd31e08d 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResultUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitApplyingResultUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculatorUnitTest.java b/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculatorUnitTest.java index 747785f682..fdc76696f9 100644 --- a/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculatorUnitTest.java +++ b/layout/src/test/java/com/itextpdf/layout/renderer/objectfit/ObjectFitCalculatorUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/splitting/BreakAllSplitCharactersTest.java b/layout/src/test/java/com/itextpdf/layout/splitting/BreakAllSplitCharactersTest.java index a870b327ab..169540a8f8 100644 --- a/layout/src/test/java/com/itextpdf/layout/splitting/BreakAllSplitCharactersTest.java +++ b/layout/src/test/java/com/itextpdf/layout/splitting/BreakAllSplitCharactersTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/splitting/DefaultSplitCharacterTest.java b/layout/src/test/java/com/itextpdf/layout/splitting/DefaultSplitCharacterTest.java index da221adff1..db9d3bc246 100644 --- a/layout/src/test/java/com/itextpdf/layout/splitting/DefaultSplitCharacterTest.java +++ b/layout/src/test/java/com/itextpdf/layout/splitting/DefaultSplitCharacterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/splitting/JapaneseLineBreakingRulesTest.java b/layout/src/test/java/com/itextpdf/layout/splitting/JapaneseLineBreakingRulesTest.java index 3375adcebd..8c67bc24bf 100644 --- a/layout/src/test/java/com/itextpdf/layout/splitting/JapaneseLineBreakingRulesTest.java +++ b/layout/src/test/java/com/itextpdf/layout/splitting/JapaneseLineBreakingRulesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/splitting/KeepAllSplitCharactersTest.java b/layout/src/test/java/com/itextpdf/layout/splitting/KeepAllSplitCharactersTest.java index 7fdee5e801..19cddd2bd1 100644 --- a/layout/src/test/java/com/itextpdf/layout/splitting/KeepAllSplitCharactersTest.java +++ b/layout/src/test/java/com/itextpdf/layout/splitting/KeepAllSplitCharactersTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolverTest.java b/layout/src/test/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolverTest.java index caef747f0f..ffe1b9e800 100644 --- a/layout/src/test/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolverTest.java +++ b/layout/src/test/java/com/itextpdf/layout/tagging/ProhibitedTagRelationsResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/testutil/OrphansWidowsTestUtil.java b/layout/src/test/java/com/itextpdf/layout/testutil/OrphansWidowsTestUtil.java index eab7ab0595..2473b34a15 100644 --- a/layout/src/test/java/com/itextpdf/layout/testutil/OrphansWidowsTestUtil.java +++ b/layout/src/test/java/com/itextpdf/layout/testutil/OrphansWidowsTestUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/testutil/TestConfigurationEvent.java b/layout/src/test/java/com/itextpdf/layout/testutil/TestConfigurationEvent.java index 9e989b5d58..ed87801e73 100644 --- a/layout/src/test/java/com/itextpdf/layout/testutil/TestConfigurationEvent.java +++ b/layout/src/test/java/com/itextpdf/layout/testutil/TestConfigurationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/java/com/itextpdf/layout/testutil/TestProductEvent.java b/layout/src/test/java/com/itextpdf/layout/testutil/TestProductEvent.java index f250c0df52..32deebae2c 100644 --- a/layout/src/test/java/com/itextpdf/layout/testutil/TestProductEvent.java +++ b/layout/src/test/java/com/itextpdf/layout/testutil/TestProductEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/layout/src/test/resources/com/itextpdf/layout/AlignmentTest/cmp_middleAlignmentWithTtfOS2Version1Test.pdf b/layout/src/test/resources/com/itextpdf/layout/AlignmentTest/cmp_middleAlignmentWithTtfOS2Version1Test.pdf index 6f7a377921..6353b8b2cf 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/AlignmentTest/cmp_middleAlignmentWithTtfOS2Version1Test.pdf and b/layout/src/test/resources/com/itextpdf/layout/AlignmentTest/cmp_middleAlignmentWithTtfOS2Version1Test.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/BlockRendererTest/cmp_absolutePositionedChildIsNotDroppedWhenParentSplits.pdf b/layout/src/test/resources/com/itextpdf/layout/BlockRendererTest/cmp_absolutePositionedChildIsNotDroppedWhenParentSplits.pdf new file mode 100644 index 0000000000..4a807eb6a1 Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/BlockRendererTest/cmp_absolutePositionedChildIsNotDroppedWhenParentSplits.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/DefaultLayoutTest/abserif4_5.ttf b/layout/src/test/resources/com/itextpdf/layout/DefaultLayoutTest/abserif4_5.ttf deleted file mode 100644 index b6544604b2..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/DefaultLayoutTest/abserif4_5.ttf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider.pdf.pdf b/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider.pdf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider.pdf.pdf rename to layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider.pdf diff --git a/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf b/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf new file mode 100644 index 0000000000..f955d36e4a Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf.pdf b/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf.pdf deleted file mode 100644 index 15e5a03d0a..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontProviderTest/cmp_customFontProvider2.pdf.pdf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_checkThreeFontsInOneLineWithUnicodeRange.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_checkThreeFontsInOneLineWithUnicodeRange.pdf index 20b676dde9..863f1e4448 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_checkThreeFontsInOneLineWithUnicodeRange.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_checkThreeFontsInOneLineWithUnicodeRange.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup.pdf index 370998b25f..38360dbe54 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup2.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup2.pdf index 9f3923a286..b44959797f 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup2.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup2.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup3.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup3.pdf index 39e2a0d1e4..441112e6c4 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup3.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinGroup3.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinWithUnicodeRange.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinWithUnicodeRange.pdf index dd3ffd8a76..6baaeebcca 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinWithUnicodeRange.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_cyrillicAndLatinWithUnicodeRange.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_latinAndNotdefGroup.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_latinAndNotdefGroup.pdf index 2a1a187f5d..3fc6f16db6 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_latinAndNotdefGroup.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_latinAndNotdefGroup.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_notSignificantCharacterOfTheFontWithUnicodeRange.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_notSignificantCharacterOfTheFontWithUnicodeRange.pdf index 6fee8e4f39..7511c22ac1 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_notSignificantCharacterOfTheFontWithUnicodeRange.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_notSignificantCharacterOfTheFontWithUnicodeRange.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_writeTextInFontWhichAliasWithUnicodeChars.pdf b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_writeTextInFontWhichAliasWithUnicodeChars.pdf index 590bed5f07..5a3a2aba0b 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_writeTextInFontWhichAliasWithUnicodeChars.pdf and b/layout/src/test/resources/com/itextpdf/layout/FontSelectorTest/cmp_writeTextInFontWhichAliasWithUnicodeChars.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_hyphenSymbolTest01.pdf b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_hyphenSymbolTest01.pdf index 0a43663af6..e3abbf8198 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_hyphenSymbolTest01.pdf and b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_hyphenSymbolTest01.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest01.pdf b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest01.pdf index fd79be2ee5..60252ab45d 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest01.pdf and b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest01.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest02.pdf b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest02.pdf index 36b2b5f407..b15466aaf8 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest02.pdf and b/layout/src/test/resources/com/itextpdf/layout/HyphenateLayoutTest/cmp_nonBreakingHyphenTest02.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/LineHeightHelperIntegrationTest/cmp_robotoFontTest.pdf b/layout/src/test/resources/com/itextpdf/layout/LineHeightHelperIntegrationTest/cmp_robotoFontTest.pdf index bfb5a2f4ad..66d11d2650 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/LineHeightHelperIntegrationTest/cmp_robotoFontTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/LineHeightHelperIntegrationTest/cmp_robotoFontTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/NonBreakingHyphenTest/cmp_nonBreakingHyphenDifferentFonts.pdf b/layout/src/test/resources/com/itextpdf/layout/NonBreakingHyphenTest/cmp_nonBreakingHyphenDifferentFonts.pdf index 6717ec5a24..1cbcb9a994 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/NonBreakingHyphenTest/cmp_nonBreakingHyphenDifferentFonts.pdf and b/layout/src/test/resources/com/itextpdf/layout/NonBreakingHyphenTest/cmp_nonBreakingHyphenDifferentFonts.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfTextExtractorEncodingsTest/FreeSans.ttf b/layout/src/test/resources/com/itextpdf/layout/PdfTextExtractorEncodingsTest/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfTextExtractorEncodingsTest/FreeSans.ttf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/FreeSans.ttf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/FreeSans.ttf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaFileAttachmentAnnotTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaFileAttachmentAnnotTest.pdf index 7d3c941ecd..a3a6097d49 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaFileAttachmentAnnotTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaFileAttachmentAnnotTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationNoAltTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationNoAltTest.pdf index 5398fd922b..628dc0cf32 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationNoAltTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationNoAltTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationTest.pdf index d0f1809206..7637d11843 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2AnnotationsTest/cmp_pdfuaLinkAnnotationTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_freeSansWithMacromanTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_freeSansWithMacromanTest.pdf index 413e1bd2f8..bd57780a76 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_freeSansWithMacromanTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_freeSansWithMacromanTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritan2WithUTF8Test.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritan2WithUTF8Test.pdf deleted file mode 100644 index 1331f60894..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritan2WithUTF8Test.pdf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritanWithUTF8Test.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritanWithUTF8Test.pdf new file mode 100644 index 0000000000..f4cbb67f39 Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_puritanWithUTF8Test.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_type0FontTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_type0FontTest.pdf index 68b9c99eef..bdbfedd5eb 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_type0FontTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2FontTest/cmp_type0FontTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_addNamespaceRoleMappingTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_addNamespaceRoleMappingTest.pdf index 041d6a2523..c8572608da 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_addNamespaceRoleMappingTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_addNamespaceRoleMappingTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_articleTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_articleTest.pdf index cb45afce24..a6de9efbd6 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_articleTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_articleTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_artifactTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_artifactTest.pdf index 35f1c3996f..cb03f30440 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_artifactTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_artifactTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_bibliographicEntryTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_bibliographicEntryTest.pdf index 113840dda5..66a35a005e 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_bibliographicEntryTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_bibliographicEntryTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_captionTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_captionTest.pdf index 3d3953ed18..0a79b979b7 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_captionTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_captionTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkCaptionPlacementInTreeStructure.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkCaptionPlacementInTreeStructure.pdf index 277d62451c..556244a837 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkCaptionPlacementInTreeStructure.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkCaptionPlacementInTreeStructure.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkOutlinesAsStructureDestinations.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkOutlinesAsStructureDestinations.pdf index 828d66a37f..67771e90ad 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkOutlinesAsStructureDestinations.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_checkOutlinesAsStructureDestinations.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_formulaTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_formulaTest.pdf index 65e1edc23f..664c629524 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_formulaTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_formulaTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_headingTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_headingTest.pdf index 70a3628c55..0ae146668e 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_headingTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_headingTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelInListTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelInListTest.pdf index e5e732d55a..90b1ed66e6 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelInListTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelInListTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelWithLinkContentTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelWithLinkContentTest.pdf index 97774f0ce5..5a00db0e5c 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelWithLinkContentTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_labelWithLinkContentTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_linkTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_linkTest.pdf index c0476d58b3..9a021d429a 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_linkTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_linkTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_listTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_listTest.pdf index 579d53b5cf..3fec115d2e 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_listTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_listTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_paragraphTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_paragraphTest.pdf index 484c1b45fc..6c95f38422 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_paragraphTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_paragraphTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaEmbeddedFileTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaEmbeddedFileTest.pdf index 2f091e7162..5533250905 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaEmbeddedFileTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaEmbeddedFileTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageLabelTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageLabelTest.pdf index f3d23ae53c..11f469b3ce 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageLabelTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageLabelTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageNumLabelTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageNumLabelTest.pdf index 4c1fa3f755..6e0353045d 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageNumLabelTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_pdfuaPageNumLabelTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_realContentTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_realContentTest.pdf index 357c17376d..9b1c400896 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_realContentTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_realContentTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_sectionTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_sectionTest.pdf index 2924c6bade..6a653cd9e2 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_sectionTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_sectionTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_structureDestination01Test.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_structureDestination01Test.pdf index a1af670f0b..f9ef253c2c 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_structureDestination01Test.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_structureDestination01Test.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTest.pdf new file mode 100644 index 0000000000..23fda97fbf Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTestTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTestTest.pdf deleted file mode 100644 index 5c20d4f4c1..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableOfContentsTestTest.pdf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableTest.pdf index 84620463d3..c239a66070 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_tableTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_validAsideTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_validAsideTest.pdf index 6b577967d5..a9ef7cc6b5 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_validAsideTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_validAsideTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_xmpMetadataTest.pdf b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_xmpMetadataTest.pdf index 8d68b2e9b2..d8ef2dea9c 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_xmpMetadataTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/PdfUA2Test/cmp_xmpMetadataTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableRendererTest/cmp_collapsedBorderRowspanOnPageSplit.pdf b/layout/src/test/resources/com/itextpdf/layout/TableRendererTest/cmp_collapsedBorderRowspanOnPageSplit.pdf new file mode 100644 index 0000000000..fb4cbe9bdd Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/TableRendererTest/cmp_collapsedBorderRowspanOnPageSplit.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarFullTest.pdf b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarFullTest.pdf index 7dd1ace592..5e8021afa4 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarFullTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarFullTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingLongLastCell.pdf b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingLongLastCell.pdf new file mode 100644 index 0000000000..75a7c3c256 Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingLongLastCell.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingTest.pdf b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingTest.pdf index d32c973e64..a55760f387 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarNothingTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialLongLastCell.pdf b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialLongLastCell.pdf new file mode 100644 index 0000000000..b1ce8a6fdd Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialLongLastCell.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialTest.pdf b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialTest.pdf index 414d77adaa..e39ca595ff 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialTest.pdf and b/layout/src/test/resources/com/itextpdf/layout/TableTest/cmp_bigRowSpanTooFarPartialTest.pdf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/LICENSE.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/ApacheLicenseV2.txt similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/LICENSE.txt rename to layout/src/test/resources/com/itextpdf/layout/fonts/ApacheLicenseV2.txt diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/FreeSans.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/FreeSans.ttf index 4b06bd7822..6de62ebf67 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/fonts/FreeSans.ttf and b/layout/src/test/resources/com/itextpdf/layout/fonts/FreeSans.ttf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/GNU General Public License.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/GNU General Public License.txt new file mode 100644 index 0000000000..3b6dc96b30 --- /dev/null +++ b/layout/src/test/resources/com/itextpdf/layout/fonts/GNU General Public License.txt @@ -0,0 +1,219 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds of works. + + The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + + Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and modification follow. + + TERMS AND CONDITIONS + 0. Definitions. + “This License” refers to version 3 of the GNU General Public License. + + “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + + “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + + To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + + A “covered work” means either the unmodified Program or a work based on the Program. + + To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + + To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + + A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + + The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + + The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + + The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + + When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + + A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + + “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + + If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + + The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + + However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + + Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + + An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + + 11. Patents. + A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + + A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + + In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + + If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + + A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + + Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + + You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + + The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/LICENSE_OFL.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/LICENSE_OFL-1.1.txt similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType4Test/LICENSE_OFL.txt rename to layout/src/test/resources/com/itextpdf/layout/fonts/LICENSE_OFL-1.1.txt diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/LICENSE_OFL.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/layout/src/test/resources/com/itextpdf/layout/fonts/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Black.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Black.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Black.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Black.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Hairline.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Hairline.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Hairline.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Hairline.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Italic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Italic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Italic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Italic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Regular.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Regular.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Lato/Lato-Regular.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/Lato-Regular.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/OFL.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/OFL.txt deleted file mode 100644 index 9f9a07e221..0000000000 --- a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright (c) 2011, TypeTogether (www.type-together.com), -with Reserved Font Names "Abril" and "Abril Fatface" -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/SIL.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/SIL.txt deleted file mode 100644 index 61ae043352..0000000000 --- a/layout/src/test/resources/com/itextpdf/layout/fonts/Lato/SIL.txt +++ /dev/null @@ -1,40 +0,0 @@ - -The Puritan font was downloaded from: -http://openfontlibrary.fontly.org/files/benweiner/3 - -This font is distrubuted under the SIL OPEN FONT LICENSE -http://scripts.sil.org/OFL - -PERMISSION & CONDITIONS - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. \ No newline at end of file diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/NOTICE.txt b/layout/src/test/resources/com/itextpdf/layout/fonts/NOTICE.txt index b27a7eb168..9521a61ba0 100644 --- a/layout/src/test/resources/com/itextpdf/layout/fonts/NOTICE.txt +++ b/layout/src/test/resources/com/itextpdf/layout/fonts/NOTICE.txt @@ -1,22 +1,34 @@ Please notice that the following fonts are used with the mentioned below licenses. -* FreeSans - GPL license you can find following the link: https://www.gnu.org/licenses -* NotoColorEmoji - SIL Open Font License v1.1 -* NotoEmoji-Regular - SIL Open Font License v1.1 -* NotoSansCJKjp-Bold - SIL Open Font License v1.1 -* NotoSansCJKsc-Regular - SIL Open Font License v1.1 -* NotoSansCJKtc-Regular - SIL Open Font License v1.1 -* NotoSansJP-Regular - SIL Open Font License v1.1 -* NotoSans-Regular - SIL Open Font License v1.1 -* NotoSansThai-Regular - SIL Open Font License v1.1 -* Puritan2 - SIL Open Font License v1.1 -* NotoSansOldItalic-Regular.ttf - SIL Open Font License v1.1. Based on commit 20bc5918912503bc1537a407a694738c33c048aa (07.31.2020) from "https://github.com/googlefonts/noto-fonts" -* NotoSansCJKjp-Regular.otf - SIL Open Font License v1.1 -* NotoSansCherokee-Regular.ttf - SIL Open Font License v1.1 -* NotoKufiArabic-Regular.ttf - SIL Open Font License v1.1 -* SpaceMono-Regular - SIL Open Font License v1.1 - OFL.txt (29.04.2024) -* Roboto-Regular - Apache License V 2.0 -* NotoSansAndSpaceMono - SIL Open Font License v1.1 - - -All the used bold Google Noto fonts have been taken from the https://github.com/googlefonts. \ No newline at end of file +FreeSans.ttf | GPL license | GNU General Public License.txt | Based on "https://savannah.gnu.org/projects/freefont" (28.01.2026) +NotoColorEmoji.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Color+Emoji" (27.01.2026) +NotoEmoji-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Emoji" (26.01.2026) +NotoSansCJKjp-Bold.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "Based on "https://github.com/googlefonts/noto-cjk" +NotoSansCJKjp-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 9b0f1436e455d902de067a2501422e5dc71ad16b (30.06.2024) from repository "Based on "https://github.com/notofonts/noto-cjk/tree" +NotoSansCJKsc-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit f36eda03dfa5582a6d49abbfb5c83d0209584158 (01.07.2015) from repository: "Based on "https://github.com/googlefonts/noto-cjk" +NotoSansJP-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+JP" (26.01.2026) +NotoSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "Based on "https://github.com/googlefonts/noto-fonts" +NotoSansThai-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+Thai (27.01.2026) +Puritan-regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Puritan" (26.01.2026) +Puritan-regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Puritan" (26.01.2026) +NotoSansOldItalic-Regular.ttf | SIL Open Font License v1.1. | LICENSE_OFL-1.1.txt | Based on commit 20bc5918912503bc1537a407a694738c33c048aa (07.31.2020) from "Based on "https://github.com/googlefonts/noto-fonts" +NotoSansCherokee-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+Cherokee" (27.01.2026) +NotoKufiArabic-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Kufi+Arabic" (27.01.2026) +NotoSansKhmer-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+Khmer" (27.01.2026) +SpaceMono-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Space+Mono" (29.04.2024) +Roboto-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Roboto" (27.01.2026) +NotoSansAndSpaceMono.ttc | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Space+Mono and Based on "https://fonts.google.com/noto/specimen/Noto+Sans (26.01.2026) +Lato-Black.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.latofonts.com/lato-free-fonts/" (28.01.2026) +Lato-Hairline.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.latofonts.com/lato-free-fonts/" (28.01.2026) +Lato-Italic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.latofonts.com/lato-free-fonts/" (28.01.2026) +Lato-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.latofonts.com/lato-free-fonts/" (28.01.2026) +OpenSans-Bold.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-BoldItalic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-ExtraBold.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-ExtraBoldItalic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-Italic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-Light.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-LightItalic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-SemiBold.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) +OpenSans-SemiBoldItalic.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "Based on "https://fonts.google.com/specimen/Open+Sans" (27.01.2026) \ No newline at end of file diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/NotoSansCJKtc-Regular.otf b/layout/src/test/resources/com/itextpdf/layout/fonts/NotoSansCJKtc-Regular.otf deleted file mode 100644 index 62ed47d673..0000000000 Binary files a/layout/src/test/resources/com/itextpdf/layout/fonts/NotoSansCJKtc-Regular.otf and /dev/null differ diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Bold.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Bold.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Bold.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Bold.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-BoldItalic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-BoldItalic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-BoldItalic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-BoldItalic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-ExtraBold.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-ExtraBold.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-ExtraBold.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-ExtraBold.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-ExtraBoldItalic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-ExtraBoldItalic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Italic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Italic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Italic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Italic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Light.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Light.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Light.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Light.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-LightItalic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-LightItalic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-LightItalic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-LightItalic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Regular.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Regular.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-Regular.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-Regular.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-SemiBold.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-SemiBold.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-SemiBold.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-SemiBold.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-SemiBoldItalic.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-SemiBoldItalic.ttf similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/Open_Sans/OpenSans-SemiBoldItalic.ttf rename to layout/src/test/resources/com/itextpdf/layout/fonts/OpenSans-SemiBoldItalic.ttf diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.otf b/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.otf new file mode 100644 index 0000000000..2d5428fda5 Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.otf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.ttf new file mode 100644 index 0000000000..270f380de8 Binary files /dev/null and b/layout/src/test/resources/com/itextpdf/layout/fonts/Puritan-Regular.ttf differ diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/Roboto-Regular.ttf b/layout/src/test/resources/com/itextpdf/layout/fonts/Roboto-Regular.ttf index 2d116d9205..7e3bb2f8ce 100644 Binary files a/layout/src/test/resources/com/itextpdf/layout/fonts/Roboto-Regular.ttf and b/layout/src/test/resources/com/itextpdf/layout/fonts/Roboto-Regular.ttf differ diff --git a/pdfa/pom.xml b/pdfa/pom.xml index 5bbdcec8b3..d70f0f3a10 100644 --- a/pdfa/pom.xml +++ b/pdfa/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT pdfa diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADefaultFontStrategy.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADefaultFontStrategy.java index bc9b14fdbd..6eb46ad9b2 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADefaultFontStrategy.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADefaultFontStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocument.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocument.java index cc5bc2cbe8..f04ead5e00 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocument.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocumentInfoHelper.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocumentInfoHelper.java index d61c258bc3..8da2b3016f 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocumentInfoHelper.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfADocumentInfoHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPage.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPage.java index 1b05ab9aac..502fb663f8 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPage.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPageFactory.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPageFactory.java index ab63c59e65..a476ebda67 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPageFactory.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAPageFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java index bc71ca55db..0e71badce7 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/PdfAXMPUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA1Checker.java b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA1Checker.java index 9ec00e7fca..a0d5370ed7 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA1Checker.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA1Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -42,6 +42,7 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfNumber; import com.itextpdf.kernel.pdf.PdfObject; +import com.itextpdf.kernel.pdf.PdfResources; import com.itextpdf.kernel.pdf.PdfStream; import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.PdfXrefTable; @@ -57,8 +58,6 @@ This file is part of the iText (R) project. import com.itextpdf.pdfa.exceptions.PdfAConformanceException; import com.itextpdf.pdfa.exceptions.PdfaExceptionMessageConstant; import com.itextpdf.pdfa.logs.PdfAConformanceLogMessageConstant; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; @@ -67,6 +66,8 @@ This file is part of the iText (R) project. import java.util.HashSet; import java.util.List; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * PdfA1Checker defines the requirements of the PDF/A-1 standard and contains @@ -362,12 +363,17 @@ protected void checkPageTransparency(PdfDictionary pageDict, PdfDictionary pageR @Override protected void checkContentStream(PdfStream contentStream) { + checkContentStream(contentStream, null); + } + + @Override + protected void checkContentStream(PdfStream contentStream, PdfResources resources) { if (isFullCheckMode() || contentStream.isModified()) { byte[] contentBytes = contentStream.getBytes(); PdfTokenizer tokenizer = new PdfTokenizer( new RandomAccessFileOrArray(new RandomAccessSourceFactory().createSource(contentBytes))); - PdfCanvasParser parser = new PdfCanvasParser(tokenizer); + PdfCanvasParser parser = new PdfCanvasParser(tokenizer, resources); List operands = new ArrayList<>(); try { while (parser.parse(operands).size() > 0) { @@ -454,8 +460,9 @@ protected void checkFormXObject(PdfStream form) { throw new PdfAConformanceException(PdfaExceptionMessageConstant.A_GROUP_OBJECT_WITH_AN_S_KEY_WITH_A_VALUE_OF_TRANSPARENCY_SHALL_NOT_BE_INCLUDED_IN_A_FORM_XOBJECT); } - checkResources(form.getAsDictionary(PdfName.Resources), form); - checkContentStream(form); + final PdfDictionary resourcesDict = form.getAsDictionary(PdfName.Resources); + checkResources(resourcesDict, form); + checkContentStream(form, resourcesDict == null ? new PdfResources() : new PdfResources(resourcesDict)); } @Override diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA2Checker.java b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA2Checker.java index 59f33d1cb4..66f28728e0 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA2Checker.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA2Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -43,6 +43,7 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfNumber; import com.itextpdf.kernel.pdf.PdfObject; +import com.itextpdf.kernel.pdf.PdfResources; import com.itextpdf.kernel.pdf.PdfStream; import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.annot.PdfAnnotation; @@ -1006,8 +1007,9 @@ protected void checkFormXObject(PdfStream form, PdfStream contentStream) { checkTransparencyGroup(form, contentStream); - checkResources(form.getAsDictionary(PdfName.Resources), contentStream != null ? contentStream : form); - checkContentStream(form); + final PdfDictionary resourcesDict = form.getAsDictionary(PdfName.Resources); + checkResources(resourcesDict, contentStream != null ? contentStream : form); + checkContentStream(form, resourcesDict == null ? new PdfResources() : new PdfResources(resourcesDict)); } /** diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA3Checker.java b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA3Checker.java index 48319ad6a8..51a3ba1653 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA3Checker.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA3Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA4Checker.java b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA4Checker.java index 67be94e1c1..fba6cd120f 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA4Checker.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfA4Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,6 +33,7 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfNumber; import com.itextpdf.kernel.pdf.PdfObject; +import com.itextpdf.kernel.pdf.PdfResources; import com.itextpdf.kernel.pdf.PdfStream; import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.canvas.CanvasGraphicsState; @@ -437,8 +438,10 @@ protected void checkFormXObject(PdfStream form, PdfStream contentStream) { throw new PdfAConformanceException(PdfaExceptionMessageConstant.A_FORM_XOBJECT_DICTIONARY_SHALL_NOT_CONTAIN_REF_KEY); } checkTransparencyGroup(form, contentStream); - checkResources(form.getAsDictionary(PdfName.Resources), form); - checkContentStream(form); + + final PdfDictionary resourcesDict = form.getAsDictionary(PdfName.Resources); + checkResources(resourcesDict, form); + checkContentStream(form, resourcesDict == null ? new PdfResources() : new PdfResources(resourcesDict)); } /** diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfAChecker.java b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfAChecker.java index 016b503c98..b0e48287be 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfAChecker.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/checker/PdfAChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -37,6 +37,7 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfObject; import com.itextpdf.kernel.pdf.PdfOutline; import com.itextpdf.kernel.pdf.PdfPage; +import com.itextpdf.kernel.pdf.PdfResources; import com.itextpdf.kernel.pdf.PdfStream; import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.PdfXrefTable; @@ -525,12 +526,29 @@ public void setPdfAOutputIntentColorSpace(PdfDictionary catalog) { /** * Attest content stream conformance with appropriate specification. - * Throws PdfAConformanceException if any discrepancy was found + * + *

+ * Throws {@link PdfAConformanceException} if any discrepancy was found. * * @param contentStream is a content stream to validate */ protected abstract void checkContentStream(PdfStream contentStream); + /** + * Attest content stream conformance with appropriate specification. + * + *

+ * Throws {@link PdfAConformanceException} if any discrepancy was found. + * + * @param contentStream is a content stream to validate + * @param resources the resources of the contentStream + */ + protected void checkContentStream(PdfStream contentStream, PdfResources resources) { + // Do nothing + // TODO DEVSIX-8808 iText Core related api breaks for the next major release + // After major release the method must become abstract + } + /** * Verify the conformity of the operand of content stream with appropriate * specification. Throws PdfAConformanceException if any discrepancy was found @@ -965,7 +983,7 @@ private void checkPage(PdfPage page) { int contentStreamCount = page.getContentStreamCount(); for (int j = 0; j < contentStreamCount; ++j) { PdfStream contentStream = page.getContentStream(j); - checkContentStream(contentStream); + checkContentStream(contentStream, page.getResources()); checkedObjects.add(contentStream); } } diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfAConformanceException.java b/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfAConformanceException.java index b4800a6b5d..0855a3d7bb 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfAConformanceException.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfAConformanceException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfaExceptionMessageConstant.java b/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfaExceptionMessageConstant.java index 42c810a46d..3d1a2f6826 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfaExceptionMessageConstant.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/exceptions/PdfaExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfAConformanceLogMessageConstant.java b/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfAConformanceLogMessageConstant.java index d58c589b80..36d2d51b75 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfAConformanceLogMessageConstant.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfAConformanceLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfALogMessageConstant.java b/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfALogMessageConstant.java index c04d2cd02b..0e646fdef2 100644 --- a/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfALogMessageConstant.java +++ b/pdfa/src/main/java/com/itextpdf/pdfa/logs/PdfALogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/sharpenconfig/java/com/itextpdf/pdfa/SharpenConfigMapping.java b/pdfa/src/sharpenconfig/java/com/itextpdf/pdfa/SharpenConfigMapping.java index d7a82160b9..1603d0cacf 100644 --- a/pdfa/src/sharpenconfig/java/com/itextpdf/pdfa/SharpenConfigMapping.java +++ b/pdfa/src/sharpenconfig/java/com/itextpdf/pdfa/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AcroFormCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AcroFormCheckTest.java index aa5b235a15..9baf23d3ae 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AcroFormCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AcroFormCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1ActionCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1ActionCheckTest.java index 66f3cfc409..5d6dd9915b 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1ActionCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1ActionCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AnnotationCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AnnotationCheckTest.java index b0a14f96d1..bc03c1ca3f 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AnnotationCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1AnnotationCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1CanvasCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1CanvasCheckTest.java index 81d1855245..afb602c30b 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1CanvasCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1CanvasCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,8 +24,10 @@ This file is part of the iText (R) project. import com.itextpdf.commons.utils.FileUtil; import com.itextpdf.kernel.pdf.PdfAConformance; +import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfOutputIntent; +import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.utils.CompareTool; @@ -41,23 +43,22 @@ This file is part of the iText (R) project. import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.fail; @Tag("IntegrationTest") public class PdfA1CanvasCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA1CanvasCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA1CanvasCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA1CanvasCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA1CanvasCheckTest/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void canvasCheckTest1() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); try (PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent)) { @@ -74,11 +75,11 @@ public void canvasCheckTest1() throws IOException { @Test public void canvasCheckTest2() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA1b_canvasCheckTest2.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA1b_canvasCheckTest2.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA1b_canvasCheckTest2.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA1b_canvasCheckTest2.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent); pdfDocument.addNewPage(); @@ -94,16 +95,16 @@ public void canvasCheckTest2() throws IOException, InterruptedException { pdfDocument.close(); - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { - fail(result); + Assertions.fail(result); } } @Test public void canvasCheckTest3() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); try (PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent)) { @@ -118,4 +119,21 @@ public void canvasCheckTest3() throws IOException { e.getMessage()); } } + + @Test + public void checkInlineImageTest() throws IOException, InterruptedException { + String outPdf = DESTINATION_FOLDER + "checkInlineImage.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_checkInlineImage.pdf"; + + InputStream iccStream = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); + PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", iccStream); + PdfADocument pdfADocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_1B, outputIntent); + + PdfDocument inlineImagePdf = new PdfDocument(new PdfReader(SOURCE_FOLDER + "inlineImage.pdf")); + inlineImagePdf.copyPagesTo(1, inlineImagePdf.getNumberOfPages(), pdfADocument); + inlineImagePdf.close(); + pdfADocument.close(); + + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER)); + } } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1EmbeddedFilesCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1EmbeddedFilesCheckTest.java index 21bc749108..2a2ee0b457 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1EmbeddedFilesCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1EmbeddedFilesCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1GraphicsTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1GraphicsTest.java index c39eb07c0d..90fdc794b9 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1GraphicsTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1GraphicsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1LayoutListTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1LayoutListTest.java index eb5ce7a304..2358b0b803 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1LayoutListTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1LayoutListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -47,28 +47,29 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA1LayoutListTest extends ExtendedITextTest { - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA1LayoutListTest/"; - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA1LayoutListTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA1LayoutListTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA1LayoutListTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void listTest01() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA1b_listTest01.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA1b_listTest01.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA1b_listTest01.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA1b_listTest01.pdf"; - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_1B, outputIntent); Document doc = new Document(pdfDocument); pdfDocument.setTagged(); - PdfFont textfont = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont textfont = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED); textfont.setSubset(true); @@ -84,7 +85,7 @@ public void listTest01() throws IOException, InterruptedException { doc.close(); - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { Assertions.fail(result); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1bCheckfieldAppearanceTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1bCheckfieldAppearanceTest.java index 27878c86a2..e4e199cbfd 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1bCheckfieldAppearanceTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA1bCheckfieldAppearanceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AcroFormCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AcroFormCheckTest.java index c5a4a0499b..57c679625e 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AcroFormCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AcroFormCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2ActionCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2ActionCheckTest.java index 9a3661425b..7864dd164d 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2ActionCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2ActionCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AnnotationCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AnnotationCheckTest.java index 18e8d05d30..babc6d7126 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AnnotationCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2AnnotationCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -67,19 +67,20 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA2AnnotationCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA2AnnotationCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA2AnnotationCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA2AnnotationCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA2AnnotationCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void annotationCheckTest01() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -93,10 +94,10 @@ public void annotationCheckTest01() throws IOException { @Test public void annotationCheckTest02() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_annotationCheckTest02.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_annotationCheckTest02.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_annotationCheckTest02.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_annotationCheckTest02.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -110,10 +111,10 @@ public void annotationCheckTest02() throws IOException, InterruptedException { @Test public void annotationCheckTest03() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_annotationCheckTest03.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_annotationCheckTest03.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_annotationCheckTest03.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_annotationCheckTest03.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -130,7 +131,7 @@ public void annotationCheckTest03() throws IOException, InterruptedException { @Test public void annotationCheckTest04() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -148,7 +149,7 @@ public void annotationCheckTest04() throws IOException { @Test public void annotationCheckTest05() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -166,7 +167,7 @@ public void annotationCheckTest05() throws IOException { @Test public void annotationCheckTest06() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -184,7 +185,7 @@ public void annotationCheckTest06() throws IOException { @Test public void annotationCheckTest07() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -207,7 +208,7 @@ public void annotationCheckTest07() throws IOException { @Test public void annotationCheckTest08() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -230,7 +231,7 @@ public void annotationCheckTest08() throws IOException { @Test public void annotationCheckTest09() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -250,10 +251,10 @@ public void annotationCheckTest09() throws IOException { @Test public void annotationCheckTest10() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_annotationCheckTest10.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_annotationCheckTest10.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_annotationCheckTest10.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_annotationCheckTest10.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -272,11 +273,11 @@ public void annotationCheckTest10() throws IOException, InterruptedException { @Test public void annotationCheckTest11() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_annotationCheckTest11.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_annotationCheckTest11.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_annotationCheckTest11.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_annotationCheckTest11.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -298,11 +299,11 @@ public void annotationCheckTest11() throws IOException, InterruptedException { @LogMessage(messageTemplate = PdfAConformanceLogMessageConstant.ANNOTATION_OF_TYPE_0_SHOULD_HAVE_CONTENTS_KEY, logLevel = LogLevelConstants.WARN) }) public void annotationCheckTest12() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA1a_annotationCheckTest12.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA1a_annotationCheckTest12.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA1a_annotationCheckTest12.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA1a_annotationCheckTest12.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2A, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.setTagged(); doc.getCatalog().setLang(new PdfString("en-US")); @@ -323,7 +324,7 @@ public void annotationCheckTest12() throws IOException, InterruptedException { @Test public void annotationCheckTest13() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2A, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.setTagged(); doc.getCatalog().setLang(new PdfString("en-US")); @@ -343,10 +344,10 @@ public void annotationCheckTest13() throws IOException { @Test public void annotationCheckTest14() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2a_annotationCheckTest14.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2a_annotationCheckTest14.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2a_annotationCheckTest14.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2a_annotationCheckTest14.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2A, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.setTagged(); doc.getCatalog().setLang(new PdfString("en-US")); @@ -368,7 +369,7 @@ public void annotationCheckTest14() throws IOException, InterruptedException { @Test public void annotationCheckTest15() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -387,7 +388,7 @@ public void annotationCheckTest15() throws IOException { @Test public void annotationCheckTest16() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); @@ -407,7 +408,7 @@ private PdfStream createAppearance(PdfADocument doc, Rectangle formRect) throws PdfFormXObject form = new PdfFormXObject(formRect); PdfCanvas canvas = new PdfCanvas(form, doc); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.beginText().setTextMatrix(200, 50).showText("Hello World").endText(); @@ -415,7 +416,7 @@ private PdfStream createAppearance(PdfADocument doc, Rectangle formRect) throws } private void compareResult(String outPdf, String cmpPdf) throws IOException, InterruptedException { - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { fail(result); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CanvasCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CanvasCheckTest.java index 73d7210a8e..54a0470fa5 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CanvasCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CanvasCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -25,8 +25,10 @@ This file is part of the iText (R) project. import com.itextpdf.commons.utils.FileUtil; import com.itextpdf.io.source.ByteArrayOutputStream; import com.itextpdf.kernel.pdf.PdfAConformance; +import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfOutputIntent; +import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.utils.CompareTool; @@ -45,18 +47,19 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA2CanvasCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA2CanvasCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA2CanvasCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA2CanvasCheckTest/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void canvasCheckTest1() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); try (PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent)) { @@ -76,11 +79,11 @@ public void canvasCheckTest1() throws IOException { @Test public void canvasCheckTest2() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_canvasCheckTest2.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfA2CanvasCheckTest/cmp_pdfA2b_canvasCheckTest2.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_canvasCheckTest2.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfA2CanvasCheckTest/cmp_pdfA2b_canvasCheckTest2.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); try (PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent)) { @@ -97,7 +100,7 @@ public void canvasCheckTest2() throws IOException, InterruptedException { } } - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { fail(result); } @@ -106,7 +109,7 @@ public void canvasCheckTest2() throws IOException, InterruptedException { @Test public void canvasCheckTest3() throws IOException { PdfWriter writer = new PdfWriter(new java.io.ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); try (PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent)) { @@ -121,4 +124,21 @@ public void canvasCheckTest3() throws IOException { e.getMessage()); } } + + @Test + public void checkInlineImageTest() throws IOException, InterruptedException { + String outPdf = DESTINATION_FOLDER + "checkInlineImage.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_checkInlineImage.pdf"; + + InputStream iccStream = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); + PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", iccStream); + PdfADocument pdfADocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_2B, outputIntent); + + PdfDocument inlineImagePdf = new PdfDocument(new PdfReader(SOURCE_FOLDER + "inlineImage.pdf")); + inlineImagePdf.copyPagesTo(1, inlineImagePdf.getNumberOfPages(), pdfADocument); + inlineImagePdf.close(); + pdfADocument.close(); + + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER)); + } } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CatalogCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CatalogCheckTest.java index 8b5f0c883a..ca2f31900f 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CatalogCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2CatalogCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2EmbeddedFilesCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2EmbeddedFilesCheckTest.java index 6231a2a85b..e1e0100529 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2EmbeddedFilesCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2EmbeddedFilesCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,13 +51,14 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA2EmbeddedFilesCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA2EmbeddedFilesCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA2EmbeddedFilesCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA2EmbeddedFilesCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA2EmbeddedFilesCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test @@ -68,15 +69,15 @@ public static void beforeClass() { // conforming pdfa-2 document. We only check they mime type, to define embedded file type, but we don't check // the bytes of the file. That's why this test creates invalid pdfa document. public void fileSpecNonConformingTest01() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_fileSpecNonConformingTest01.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_fileSpecNonConformingTest01.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_fileSpecNonConformingTest01.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_fileSpecNonConformingTest01.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -102,15 +103,15 @@ public void fileSpecNonConformingTest01() throws IOException, InterruptedExcepti @LogMessage(messageTemplate = PdfAConformanceLogMessageConstant.EMBEDDED_FILE_SHALL_BE_COMPLIANT_WITH_SPEC, count = 1) }) public void fileSpecCheckTest02() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_fileSpecCheckTest02.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA2b_fileSpecCheckTest02.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_fileSpecCheckTest02.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_fileSpecCheckTest02.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -121,7 +122,7 @@ public void fileSpecCheckTest02() throws IOException, InterruptedException { .endText() .restoreState(); - InputStream fis = FileUtil.getInputStreamForFile(sourceFolder + "pdfs/pdfa.pdf"); + InputStream fis = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "pdfs/pdfa.pdf"); ByteArrayOutputStream os = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; @@ -141,12 +142,12 @@ public void fileSpecCheckTest02() throws IOException, InterruptedException { }) public void fileSpecCheckTest03() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream()); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_2B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -169,7 +170,7 @@ public void fileSpecCheckTest03() throws IOException { } private void compareResult(String outPdf, String cmpPdf) throws IOException, InterruptedException { - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { fail(result); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2GraphicsCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2GraphicsCheckTest.java index 0bc49f802e..6953819973 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2GraphicsCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2GraphicsCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -72,6 +72,7 @@ public class PdfA2GraphicsCheckTest extends ExtendedITextTest { private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA2GraphicsCheckTest/"; private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA2GraphicsCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { @@ -126,7 +127,7 @@ public void colorCheckTest2() throws IOException, InterruptedException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setFillColor(ColorConstants.RED).beginText().showText(shortText).endText(); canvas.setFillColor(DeviceGray.GRAY).beginText().showText(shortText).endText(); @@ -200,7 +201,7 @@ public void colorCheckTest5() throws IOException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.CLIP); canvas.setFillColor(ColorConstants.RED).beginText().showText(shortText).endText(); @@ -230,7 +231,7 @@ public void colorCheckTest6() throws IOException, InterruptedException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setStrokeColor(new DeviceCmyk(0.1f, 0.1f, 0.1f, 0.1f)); canvas.setFillColor(ColorConstants.RED); @@ -257,7 +258,7 @@ public void colorCheckTest7() throws IOException, InterruptedException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.STROKE); canvas.setFillColor(new DeviceCmyk(0.1f, 0.1f, 0.1f, 0.1f)).beginText().showText(shortText).endText(); @@ -278,7 +279,7 @@ public void defaultTextColorCheckTest() throws IOException { String outPdf = DESTINATION_FOLDER + "defaultColorCheck.pdf"; PdfDocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_2B, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); @@ -302,7 +303,7 @@ public void defaultTextColorCheckForInvisibleTextTest() throws IOException, Inte String cmpPdf = CMP_FOLDER + "cmp_pdfA2b_defaultColorCheckInvisibleText.pdf"; PdfDocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_2B, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2LayoutOcgTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2LayoutOcgTest.java index 90f603c3ab..3a71968b5a 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2LayoutOcgTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2LayoutOcgTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2OCPropertiesTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2OCPropertiesTest.java index 675f937d59..ce74c8ec47 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2OCPropertiesTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2OCPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2PageCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2PageCheckTest.java index fe7a2f0563..1be15b1351 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2PageCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA2PageCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3CatalogCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3CatalogCheckTest.java index d757b9e725..57a1f53207 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3CatalogCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3CatalogCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3EmbeddedFilesCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3EmbeddedFilesCheckTest.java index c7cfe5fed1..e08afa25f4 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3EmbeddedFilesCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA3EmbeddedFilesCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -48,26 +48,27 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA3EmbeddedFilesCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA3EmbeddedFilesCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA3EmbeddedFilesCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA3EmbeddedFilesCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA3EmbeddedFilesCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void fileSpecCheckTest01() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA3b_fileSpecCheckTest01.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA3b_fileSpecCheckTest01.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA3b_fileSpecCheckTest01.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA3b_fileSpecCheckTest01.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_3B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -89,15 +90,15 @@ public void fileSpecCheckTest01() throws IOException, InterruptedException { @Test public void fileSpecCheckTest02() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA3b_fileSpecCheckTest02.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA3b_fileSpecCheckTest02.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA3b_fileSpecCheckTest02.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA3b_fileSpecCheckTest02.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_3B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -120,15 +121,15 @@ public void fileSpecCheckTest02() throws IOException, InterruptedException { @Test public void fileSpecCheckTest03() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA3b_fileSpecCheckTest03.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA3b_fileSpecCheckTest03.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA3b_fileSpecCheckTest03.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA3b_fileSpecCheckTest03.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_3B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -149,15 +150,15 @@ public void fileSpecCheckTest03() throws IOException, InterruptedException { @Test public void fileSpecCheckTest04() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA3b_fileSpecCheckTest04.pdf"; - String cmpPdf = cmpFolder + "cmp_pdfA3b_fileSpecCheckTest04.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA3b_fileSpecCheckTest04.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_pdfA3b_fileSpecCheckTest04.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_3B, outputIntent); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -179,7 +180,7 @@ public void fileSpecCheckTest04() throws IOException, InterruptedException { } private void compareResult(String outPdf, String cmpPdf) throws IOException, InterruptedException { - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { fail(result); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4ActionCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4ActionCheckTest.java index a6c9ceaf18..4d70e66b61 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4ActionCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4ActionCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4AnnotationCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4AnnotationCheckTest.java index cb9d20f8fe..b6cfa4653d 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4AnnotationCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4AnnotationCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4CatalogCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4CatalogCheckTest.java index 2504ec1a8d..2c9df664d0 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4CatalogCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4CatalogCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -65,22 +65,23 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA4CatalogCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfA4CatalogCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfA4CatalogCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA4CatalogCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA4CatalogCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); Security.addProvider(BouncyCastleFactoryCreator.getFactory().getProvider()); } @Test public void createSimpleDocTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck01.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck01.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -91,13 +92,13 @@ public void createSimpleDocTest() throws IOException { @Test public void createSimpleTaggedDocTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA4_tagged.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_tagged.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument pdfDoc = (PdfADocument) new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)).setTagged(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED); Document document = new Document(pdfDoc); document.setFont(font); @@ -108,16 +109,16 @@ public void createSimpleTaggedDocTest() throws IOException, InterruptedException Assertions.assertEquals(PdfVersion.PDF_2_0, pdfDoc.getTagStructureContext().getTagStructureTargetVersion()); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff")); Assertions.assertNull(new VeraPdfValidator().validate(outPdf)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @Test public void invalidCatalogVersionCheckTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck02.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck02.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -130,7 +131,7 @@ public void invalidCatalogVersionCheckTest() throws IOException { @Test public void encryptInTrailerTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck03.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck03.pdf"; byte[] userPassword = "user".getBytes(StandardCharsets.ISO_8859_1); byte[] ownerPassword = "owner".getBytes(StandardCharsets.ISO_8859_1); @@ -138,7 +139,7 @@ public void encryptInTrailerTest() throws IOException { PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0) .setStandardEncryption(userPassword, ownerPassword, permissions, EncryptionConstants.ENCRYPTION_AES_256).setFullCompressionMode(false)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -148,7 +149,7 @@ public void encryptInTrailerTest() throws IOException { @Test public void encryptedDocumentTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_encryptedDocument.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_encryptedDocument.pdf"; byte[] userPassword = "user".getBytes(StandardCharsets.ISO_8859_1); byte[] ownerPassword = "owner".getBytes(StandardCharsets.ISO_8859_1); @@ -156,7 +157,7 @@ public void encryptedDocumentTest() throws IOException { PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0) .setStandardEncryption(userPassword, ownerPassword, permissions, EncryptionConstants.ENCRYPTION_AES_256).setFullCompressionMode(true)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -166,10 +167,10 @@ public void encryptedDocumentTest() throws IOException { @Test public void absentPieceInfoTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck04.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck04.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -185,11 +186,11 @@ public void absentPieceInfoTest() throws IOException { @Test public void validCatalogCheckTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA4_catalogCheck05.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_catalogCheck05.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck05.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_catalogCheck05.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -197,17 +198,17 @@ public void validCatalogCheckTest() throws IOException, InterruptedException { doc.close(); // This is required to check if ModDate is inside Info dictionary - Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_")); Assertions.assertNull(new VeraPdfValidator().validate(outPdf)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @Test public void invalidInfoTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA4_catalogCheck05Invalid.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck05Invalid.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -220,10 +221,10 @@ public void invalidInfoTest() throws IOException, InterruptedException { @Test public void invalidInfoWithFullCompression() throws IOException { - String outPdf = destinationFolder + "invalidInfoWithFillCompression.pdf"; + String outPdf = DESTINATION_FOLDER + "invalidInfoWithFillCompression.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0).setFullCompressionMode(true)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); try (PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is))) { doc.addNewPage(); } @@ -233,9 +234,9 @@ public void invalidInfoWithFullCompression() throws IOException { @Test public void readValidDocumentTest() throws IOException { - String outPdf = destinationFolder + "simplePdfA4_output01.pdf"; + String outPdf = DESTINATION_FOLDER + "simplePdfA4_output01.pdf"; PdfWriter writer = new PdfWriter(outPdf); - PdfReader reader = new PdfReader(sourceFolder + "pdfs/simplePdfA4.pdf"); + PdfReader reader = new PdfReader(SOURCE_FOLDER + "pdfs/simplePdfA4.pdf"); PdfDocument document = new PdfADocument(reader, writer); document.close(); Assertions.assertNull(new VeraPdfValidator().validate(outPdf)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) @@ -243,10 +244,10 @@ public void readValidDocumentTest() throws IOException { @Test public void invalidVersionInCatalogTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck06.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck06.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -259,10 +260,10 @@ public void invalidVersionInCatalogTest() throws IOException { @Test public void corruptedVersionInCatalogTest() throws IOException { - String outPdf = destinationFolder + "pdfA4_catalogCheck07.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck07.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -275,8 +276,8 @@ public void corruptedVersionInCatalogTest() throws IOException { @Test public void readDocumentWithInvalidVersionTest() throws IOException { - PdfWriter writer = new PdfWriter(destinationFolder + "simplePdfA4_output02.pdf"); - PdfReader reader = new PdfReader(sourceFolder + "pdfs/pdfA4WithInvalidVersion.pdf"); + PdfWriter writer = new PdfWriter(DESTINATION_FOLDER + "simplePdfA4_output02.pdf"); + PdfReader reader = new PdfReader(SOURCE_FOLDER + "pdfs/pdfA4WithInvalidVersion.pdf"); PdfDocument document = new PdfADocument(reader, writer); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> document.close()); Assertions.assertEquals(MessageFormatUtil.format(PdfaExceptionMessageConstant.THE_FILE_HEADER_SHALL_CONTAIN_RIGHT_PDF_VERSION, 2), @@ -286,7 +287,7 @@ public void readDocumentWithInvalidVersionTest() throws IOException { @Test public void checkReferenceXObject() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream(), new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, outputIntent); doc.addNewPage(); @@ -306,7 +307,7 @@ public void checkReferenceXObject() throws IOException { @Test public void checkOpiInXObject() throws IOException { PdfWriter writer = new PdfWriter(new ByteArrayOutputStream(), new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, outputIntent); doc.addNewPage(); @@ -325,10 +326,10 @@ public void checkOpiInXObject() throws IOException { @Test public void validFormXObjectTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA4_catalogCheck08.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_catalogCheck08.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA4_catalogCheck08.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfA4CatalogCheckTest/cmp_pdfA4_catalogCheck08.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, outputIntent); doc.addNewPage(); @@ -342,7 +343,7 @@ public void validFormXObjectTest() throws IOException, InterruptedException { doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_")); Assertions.assertNull(new VeraPdfValidator().validate(outPdf)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @@ -353,7 +354,7 @@ public void createInvalidPdfAVersionNumberWithPDFA4() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_7); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -368,7 +369,7 @@ public void createInvalidPdfAVersionNumberWithPDFA4F() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4F, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_7); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -383,7 +384,7 @@ public void createInvalidPdfAVersionNumberWithPDFA4E() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4E, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_7); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -398,7 +399,7 @@ public void createInvalidPdfAVersion16NumberWithPDFA4() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_6); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -413,7 +414,7 @@ public void createInvalidPdfAVersion13NumberWithPDFA4F() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4F, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_3); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -428,7 +429,7 @@ public void createInvalidPdfAVersionNumber17WithPDFA4E() throws IOException { new WriterProperties()); PdfDocumentCustomVersion doc = new PdfDocumentCustomVersion(writer, PdfAConformance.PDF_A_4E, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); doc.setPdfVersion(PdfVersion.PDF_1_7); doc.addNewPage(); Exception e = Assertions.assertThrows(PdfAConformanceException.class, () -> doc.close()); @@ -439,9 +440,9 @@ public void createInvalidPdfAVersionNumber17WithPDFA4E() throws IOException { @Test public void documentWithEmptyStringLangEntryTest() throws IOException { - final String outPdf = destinationFolder + "documentWithEmptyStringLangEntry.pdf"; + final String outPdf = DESTINATION_FOLDER + "documentWithEmptyStringLangEntry.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -452,9 +453,9 @@ public void documentWithEmptyStringLangEntryTest() throws IOException { @Test public void documentWithInvalidLangEntryTest() throws IOException { - final String outPdf = destinationFolder + "documentWithInvalidLangEntry.pdf"; + final String outPdf = DESTINATION_FOLDER + "documentWithInvalidLangEntry.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); doc.addNewPage(); @@ -466,6 +467,23 @@ public void documentWithInvalidLangEntryTest() throws IOException { e.getMessage()); } + @Test + public void checkInlineImageTest() throws IOException, InterruptedException { + String outPdf = DESTINATION_FOLDER + "checkInlineImage.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_checkInlineImage.pdf"; + + InputStream iccStream = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); + PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", iccStream); + PdfADocument pdfADocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_4, outputIntent); + + PdfDocument inlineImagePdf = new PdfDocument(new PdfReader(SOURCE_FOLDER + "inlineImage.pdf")); + inlineImagePdf.copyPagesTo(1, inlineImagePdf.getNumberOfPages(), pdfADocument); + inlineImagePdf.close(); + pdfADocument.close(); + + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER)); + } + private static class PdfDocumentCustomVersion extends PdfADocument { public PdfDocumentCustomVersion(PdfWriter writer, PdfAConformance aConformance, PdfOutputIntent outputIntent) { diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4EmbeddedFilesCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4EmbeddedFilesCheckTest.java index d2346816f7..d70eb13e61 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4EmbeddedFilesCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4EmbeddedFilesCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4GraphicsCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4GraphicsCheckTest.java index 7fcb3b27d8..9283d52d82 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4GraphicsCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4GraphicsCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -87,9 +87,10 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA4GraphicsCheckTest extends ExtendedITextTest { - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA4GraphicsCheckTest/"; - public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA4GraphicsCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfA4GraphicsCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA4GraphicsCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { @@ -312,7 +313,7 @@ public void colorCheckTest2() throws IOException, InterruptedException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setFillColor(ColorConstants.RED).beginText().showText(shortText).endText(); canvas.setFillColor(DeviceGray.GRAY).beginText().showText(shortText).endText(); @@ -422,7 +423,7 @@ public void colorCheckTest6() throws IOException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.CLIP); canvas.setFillColor(ColorConstants.RED).beginText().showText(shortText).endText(); @@ -456,7 +457,7 @@ public void colorCheckTest7() throws IOException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.CLIP); canvas.setFillColor(ColorConstants.RED).beginText().showText(shortText).endText(); @@ -489,7 +490,7 @@ public void colorCheckTest8() throws IOException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.STROKE); canvas.setFillColor(new DeviceCmyk(0.1f, 0.1f, 0.1f, 0.1f)).beginText().showText(shortText).endText(); @@ -523,7 +524,7 @@ public void colorCheckTest9() throws IOException, InterruptedException { String shortText = "text"; PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); canvas.setFontAndSize(font, 12); canvas.setTextRenderingMode(PdfCanvasConstants.TextRenderingMode.STROKE); canvas.setFillColor(new DeviceCmyk(0.1f, 0.1f, 0.1f, 0.1f)).beginText().showText(shortText).endText(); @@ -634,7 +635,7 @@ public void defaultTextColorCheckTest() throws IOException { PdfDocument pdfDocument = new PdfADocument( new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)), PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); @@ -660,7 +661,7 @@ public void defaultTextColorCheckWithPageOutputIntentTest() throws IOException, PdfDocument pdfDocument = new PdfADocument( new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)), PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); @@ -689,7 +690,7 @@ public void defaultTextColorCheckForInvisibleTextTest() throws IOException, Inte PdfDocument pdfDocument = new PdfADocument( new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)), PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4MiscCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4MiscCheckTest.java index a2660d3806..55341be649 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4MiscCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4MiscCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4TransparencyCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4TransparencyCheckTest.java index d6ac606fe8..3e922c6a46 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4TransparencyCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfA4TransparencyCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -66,9 +66,10 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfA4TransparencyCheckTest extends ExtendedITextTest { - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String CMP_FOLDER = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/"; - public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA4TransparencyCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfA4TransparencyCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { @@ -83,7 +84,7 @@ public void textTransparencyPageOutputIntentTest() throws IOException, Interrupt PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); PdfDocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page1 = pdfDocument.addNewPage(); @@ -112,7 +113,7 @@ public void textTransparencyPageWrongOutputIntentTest() throws IOException { PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); PdfDocument pdfDoc = new PdfADocument(writer, PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfOutputIntent outputIntent = createOutputIntent(); @@ -146,7 +147,7 @@ public void transparentTextWithGroupColorSpaceTest() throws IOException, Interru PdfDocument pdfDocument = new PdfADocument( new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)), PdfAConformance.PDF_A_4, null); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); InputStream streamGray = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "BlackWhite.icc"); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAAppendModeTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAAppendModeTest.java index 8ed970ed06..68e43dd93c 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAAppendModeTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAAppendModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -46,21 +46,22 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfAAppendModeTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String testDirName = "PdfAAppendModeTest/"; - public static final String cmpFolder = sourceFolder + "cmp/" + testDirName; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/" + testDirName; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String TEST_DIR_NAME = "PdfAAppendModeTest/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/" + TEST_DIR_NAME; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/" + TEST_DIR_NAME; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void addPageInAppendModeTest() throws IOException, InterruptedException { - String inputFile = destinationFolder + "in_addPageInAppendModeTest.pdf"; - String outputFile = destinationFolder + "out_addPageInAppendModeTest.pdf"; - String cmpFile = cmpFolder + "cmp_addPageInAppendModeTest.pdf"; + String inputFile = DESTINATION_FOLDER + "in_addPageInAppendModeTest.pdf"; + String outputFile = DESTINATION_FOLDER + "out_addPageInAppendModeTest.pdf"; + String cmpFile = CMP_FOLDER + "cmp_addPageInAppendModeTest.pdf"; createInputPdfADocument(inputFile); PdfDocument pdfADocument = new PdfADocument(new PdfReader(inputFile), new PdfWriter(outputFile), new StampingProperties().useAppendMode()); @@ -69,7 +70,7 @@ public void addPageInAppendModeTest() throws IOException, InterruptedException { .beginText() .moveText(36, 750) .setFontAndSize(PdfFontFactory.createFont( - sourceFolder + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED), 16) + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED), 16) .showText("This page 2") .endText() .restoreState(); @@ -77,14 +78,14 @@ public void addPageInAppendModeTest() throws IOException, InterruptedException { pdfADocument.close(); Assertions.assertNull(new VeraPdfValidator().validate(inputFile)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) Assertions.assertNull(new VeraPdfValidator().validate(outputFile)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) - Assertions.assertNull(new CompareTool().compareByContent(outputFile, cmpFile, destinationFolder, "diff_")); + Assertions.assertNull(new CompareTool().compareByContent(outputFile, cmpFile, DESTINATION_FOLDER, "diff_")); } private static void createInputPdfADocument(String docName) throws IOException { PdfWriter writer = new PdfWriter(docName); PdfADocument pdfDoc = new PdfADocument(writer, PdfAConformance.PDF_A_1A, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", - FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"))); + FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"))); pdfDoc.setTagged(); pdfDoc.getCatalog().setLang(new PdfString("en-US")); PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage()); @@ -92,7 +93,7 @@ private static void createInputPdfADocument(String docName) throws IOException { .beginText() .moveText(36, 750) .setFontAndSize(PdfFontFactory.createFont( - sourceFolder + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED), 16) + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED), 16) .showText("This page 1") .endText() .restoreState(); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfABarcodeTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfABarcodeTest.java index 35f05fdd32..3a71de95bb 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfABarcodeTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfABarcodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -55,23 +55,24 @@ This file is part of the iText (R) project. @DisabledInNativeImage // java.awt is not compatible with graalvm @Tag("IntegrationTest") public class PdfABarcodeTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = sourceFolder + "cmp/PdfABarcodeTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfABarcodeTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = SOURCE_FOLDER + "cmp/PdfABarcodeTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfABarcodeTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test public void barcodeMSITest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcodeMSITest.pdf"; - String cmpPdf = cmpFolder + "cmp_barcodeMSITest.pdf"; + String outPdf = DESTINATION_FOLDER + "barcodeMSITest.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcodeMSITest.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -90,12 +91,12 @@ public void barcodeMSITest() throws IOException, InterruptedException { @Test public void barcodeInter25Test() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcodeInter25Test.pdf"; - String cmpPdf = cmpFolder + "cmp_barcodeInter25Test.pdf"; + String outPdf = DESTINATION_FOLDER + "barcodeInter25Test.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcodeInter25Test.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -114,12 +115,12 @@ public void barcodeInter25Test() throws IOException, InterruptedException { @Test public void barcodeEANTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcodeEANTest.pdf"; - String cmpPdf = cmpFolder + "cmp_barcodeEANTest.pdf"; + String outPdf = DESTINATION_FOLDER + "barcodeEANTest.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcodeEANTest.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -138,12 +139,12 @@ public void barcodeEANTest() throws IOException, InterruptedException { @Test public void barcodeCodabarTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcodeCodabarTest.pdf"; - String cmpPdf = cmpFolder + "cmp_barcodeCodabarTest.pdf"; + String outPdf = DESTINATION_FOLDER + "barcodeCodabarTest.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcodeCodabarTest.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -162,12 +163,12 @@ public void barcodeCodabarTest() throws IOException, InterruptedException { @Test public void barcode39Test() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcode39Test.pdf"; - String cmpPdf = cmpFolder + "cmp_barcode39Test.pdf"; + String outPdf = DESTINATION_FOLDER + "barcode39Test.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcode39Test.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -186,12 +187,12 @@ public void barcode39Test() throws IOException, InterruptedException { @Test public void barcode128Test() throws IOException, InterruptedException { - String outPdf = destinationFolder + "barcode128Test.pdf"; - String cmpPdf = cmpFolder + "cmp_barcode128Test.pdf"; + String outPdf = DESTINATION_FOLDER + "barcode128Test.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_barcode128Test.pdf"; Document doc = createPdfATaggedDocument(outPdf); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); font.setSubset(true); @@ -222,7 +223,7 @@ private void fillBarcode1D(Barcode1D barcode1D, String code) { private Document createPdfATaggedDocument(String outPdf) throws IOException { PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); Document doc = new Document(pdfDocument); pdfDocument.setTagged(); @@ -230,7 +231,7 @@ private Document createPdfATaggedDocument(String outPdf) throws IOException { } private void compareResult(String outFile, String cmpFile) throws IOException, InterruptedException { - String differences = new CompareTool().compareByContent(outFile, cmpFile, destinationFolder, "diff_"); + String differences = new CompareTool().compareByContent(outFile, cmpFile, DESTINATION_FOLDER, "diff_"); if (differences != null) { fail(differences); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfACheckfieldTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfACheckfieldTest.java index 3a8236eb27..c918a8a8da 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfACheckfieldTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfACheckfieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfADocumentTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfADocumentTest.java index 93d3881be3..d1e10f9e84 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfADocumentTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfADocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFlushingTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFlushingTest.java index edbcff3333..3c060f4196 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFlushingTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFlushingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -64,25 +64,26 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfAFlushingTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfAFlushingTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfAFlushingTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test @LogMessages(messages = {@LogMessage(messageTemplate = PdfALogMessageConstant.PDFA_OBJECT_FLUSHING_WAS_NOT_PERFORMED)}) public void flushingTest01() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA1b_flushingTest01.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfAFlushingTest/cmp_pdfA1b_flushingTest01.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA1b_flushingTest01.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFlushingTest/cmp_pdfA1b_flushingTest01.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); - PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(sourceFolder + "Desert.jpg")); + PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(SOURCE_FOLDER + "Desert.jpg")); imageXObject.makeIndirect(doc); canvas.addXObjectFittedIntoRectangle(imageXObject, new Rectangle(30, 300, 300, 300)); @@ -99,14 +100,14 @@ public void flushingTest01() throws IOException, InterruptedException { @Test @LogMessages(messages = {@LogMessage(messageTemplate = PdfALogMessageConstant.PDFA_PAGE_FLUSHING_WAS_NOT_PERFORMED)}) public void flushingTest02() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA2b_flushingTest02.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfAFlushingTest/cmp_pdfA2b_flushingTest02.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA2b_flushingTest02.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFlushingTest/cmp_pdfA2b_flushingTest02.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); - PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(sourceFolder + "Desert.jpg")); + PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(SOURCE_FOLDER + "Desert.jpg")); imageXObject.makeIndirect(doc); canvas.addXObjectFittedIntoRectangle(imageXObject, new Rectangle(30, 300, 300, 300)); @@ -123,14 +124,14 @@ public void flushingTest02() throws IOException, InterruptedException { @Test public void flushingTest03() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA3b_flushingTest03.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfAFlushingTest/cmp_pdfA3b_flushingTest03.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA3b_flushingTest03.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFlushingTest/cmp_pdfA3b_flushingTest03.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_3B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); - PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(sourceFolder + "Desert.jpg")); + PdfImageXObject imageXObject = new PdfImageXObject(ImageDataFactory.create(SOURCE_FOLDER + "Desert.jpg")); canvas.addXObjectFittedIntoRectangle(imageXObject, new Rectangle(30, 300, 300, 300)); PdfPage lastPage = doc.getLastPage(); @@ -149,13 +150,13 @@ public void flushingTest03() throws IOException, InterruptedException { @LogMessage(messageTemplate = PdfALogMessageConstant.PDFA_OBJECT_FLUSHING_WAS_NOT_PERFORMED, logLevel = LogLevelConstants.WARN) }) public void tryToFlushFontTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "tryToFlushFontTest.pdf"; - String cmpPdf = sourceFolder + "cmp_tryToFlushFontTest.pdf"; + String outPdf = DESTINATION_FOLDER + "tryToFlushFontTest.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFlushingTest/cmp_tryToFlushFontTest.pdf"; PdfWriter writer = new PdfWriter(outPdf, new WriterProperties().setPdfVersion(PdfVersion.PDF_2_0)); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument pdfDoc = (PdfADocument) new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)).setTagged(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", PdfFontFactory.EmbeddingStrategy.FORCE_EMBEDDED); font.makeIndirect(pdfDoc); Document document = new Document(pdfDoc); @@ -170,19 +171,19 @@ public void tryToFlushFontTest() throws IOException, InterruptedException { assertEquals(PdfVersion.PDF_2_0, pdfDoc.getTagStructureContext().getTagStructureTargetVersion()); document.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff")); + Assertions.assertNull(new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff")); Assertions.assertNull(new VeraPdfValidator().validate(outPdf)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @Test @LogMessages(messages = {@LogMessage(messageTemplate = PdfALogMessageConstant.PDFA_OBJECT_FLUSHING_WAS_NOT_PERFORMED)}) public void addUnusedStreamObjectsTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "pdfA1b_docWithUnusedObjects_3.pdf"; - String cmpPdf = sourceFolder + "cmp/PdfAFlushingTest/cmp_pdfA1b_docWithUnusedObjects_3.pdf"; + String outPdf = DESTINATION_FOLDER + "pdfA1b_docWithUnusedObjects_3.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFlushingTest/cmp_pdfA1b_docWithUnusedObjects_3.pdf"; PdfWriter writer = new PdfWriter(outPdf); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfADocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); pdfDocument.addNewPage(); @@ -207,7 +208,7 @@ public void addUnusedStreamObjectsTest() throws IOException, InterruptedExceptio } private void compareResult(String outFile, String cmpFile) throws IOException, InterruptedException { - String differences = new CompareTool().compareByContent(outFile, cmpFile, destinationFolder, "diff_"); + String differences = new CompareTool().compareByContent(outFile, cmpFile, DESTINATION_FOLDER, "diff_"); if (differences != null) { fail(differences); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFontTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFontTest.java index e64a8f46b2..da90b58ae2 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFontTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFontTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -77,6 +77,7 @@ public class PdfAFontTest extends ExtendedITextTest { static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfAFontTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { @@ -91,7 +92,7 @@ public void fontCheckPdfA1_01() throws IOException, InterruptedException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -112,7 +113,7 @@ public void fontCheckPdfA1_02() throws IOException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -138,7 +139,7 @@ public void fontCheckPdfA1_03() throws IOException, InterruptedException { PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.PREFER_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -185,7 +186,7 @@ public void fontCheckPdfA1_05() throws IOException, InterruptedException { PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSansCJKtc-Light.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKtc-Light.otf", "Identity-H"); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() .setFillColor(ColorConstants.GREEN) @@ -209,7 +210,7 @@ public void fontCheckPdfA2_01() throws IOException, InterruptedException { PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_2B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.PREFER_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -234,7 +235,7 @@ public void fontCheckPdfA3_01() throws IOException, InterruptedException { PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_3B, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.PREFER_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -262,11 +263,9 @@ public void cidFontCheckTest1() throws IOException, InterruptedException { public void cidFontCheckTest2() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "pdfA2b_cidFontCheckTest2.pdf"; String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest2.pdf"; - String expectedVeraPdfWarning = "The following warnings and errors were logged during validation:\n" - + "WARNING: The Top DICT does not begin with ROS operator"; - generatePdfA2WithCidFont("Puritan2.otf", outPdf); - compareResult(outPdf, cmpPdf, expectedVeraPdfWarning); + generatePdfA2WithCidFont("Puritan-Regular.ttf", outPdf); + compareResult(outPdf, cmpPdf, null); } @Test @@ -360,7 +359,7 @@ public void notdefInTrueTypeFontTest() throws IOException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "# simple 32 0020 00C5 1987", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. @@ -384,7 +383,7 @@ public void notdefFontTest2() throws IOException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", "", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. @@ -410,7 +409,7 @@ public void glyphLineWithUndefinedGlyphsTest() throws Exception { PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB ICC preference", icm))); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", "", EmbeddingStrategy.PREFER_EMBEDDED); Paragraph p = new Paragraph("\u898B\u7A4D\u3082\u308A"); p.setFont(font); @@ -428,7 +427,7 @@ public void pdfArrayWithUndefinedGlyphsTest() throws Exception { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSans-Regular.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSans-Regular.ttf", "", EmbeddingStrategy.PREFER_EMBEDDED); PdfCanvas canvas = new PdfCanvas(doc.addNewPage()); canvas. @@ -502,7 +501,7 @@ public void checkPdfA4FreeSansForceEmbeddedTest() throws IOException, Interrupte InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -525,7 +524,7 @@ public void checkPdfA4FreeSansForceNotEmbeddedTest() throws IOException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -554,7 +553,7 @@ public void checkPdfA4FreeSansPreferNotEmbeddedTest() throws IOException, Interr PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.PREFER_NOT_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -606,7 +605,7 @@ public void checkPdfA4NotoSansCJKtcLightTest() throws IOException, InterruptedEx PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSansCJKtc-Light.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKtc-Light.otf", "Identity-H"); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() .setFillColor(ColorConstants.GREEN) @@ -622,11 +621,9 @@ public void checkPdfA4NotoSansCJKtcLightTest() throws IOException, InterruptedEx } @Test - public void checkPdfA4Puritan2Test() throws IOException, InterruptedException { - String outPdf = DESTINATION_FOLDER + "pdfA4Puritan2Test.pdf"; - String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFontTest/cmp_pdfA4Puritan2Test.pdf"; - String expectedVeraPdfWarning = "The following warnings and errors were logged during validation:\n" - + "WARNING: The Top DICT does not begin with ROS operator"; + public void checkPdfA4PuritanTest() throws IOException, InterruptedException { + String outPdf = DESTINATION_FOLDER + "pdfA4PuritanTest.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp/PdfAFontTest/cmp_pdfA4PuritanTest.pdf"; WriterProperties writerProperties = new WriterProperties(); writerProperties.setPdfVersion(PdfVersion.PDF_2_0); PdfWriter writer = new PdfWriter(outPdf, writerProperties); @@ -634,7 +631,7 @@ public void checkPdfA4Puritan2Test() throws IOException, InterruptedException { PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "Puritan2.otf", "Identity-H"); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "Puritan-Regular.ttf", "Identity-H"); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() .setFillColor(ColorConstants.GREEN) @@ -646,7 +643,7 @@ public void checkPdfA4Puritan2Test() throws IOException, InterruptedException { .restoreState(); doc.close(); - compareResult(outPdf, cmpPdf, expectedVeraPdfWarning); + compareResult(outPdf, cmpPdf, null); } @Test @@ -753,7 +750,7 @@ public void checkPdfA4WoffTest() throws IOException, InterruptedException { InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "SourceSerif4-Black.woff", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "SourceSerif4-Black.woff", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -779,7 +776,7 @@ public void checkPdfA4SurrogatePairTest() throws IOException, InterruptedExcepti InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfDocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_4, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoEmoji-Regular.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "NotoEmoji-Regular.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -803,7 +800,7 @@ private void createDocumentWithFont(String outFileName, String fontFileName, Str PdfDocument doc = new PdfADocument(writer, conformance, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is)); PdfPage page = doc.addNewPage(); - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + fontFileName, + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + fontFileName, encoding, EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() @@ -841,7 +838,7 @@ private void generatePdfA2WithCidFont(String fontFile, String outPdf) throws IOE PdfPage page = doc.addNewPage(); // Identity-H must be embedded - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + fontFile, + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + fontFile, "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); canvas.saveState() diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFormFieldTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFormFieldTest.java index 7cf86ca6c1..1325473d4d 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFormFieldTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAFormFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -102,8 +102,9 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfAFormFieldTest extends ExtendedITextTest { - public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfAFormFieldTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfAFormFieldTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { @@ -123,9 +124,9 @@ public void pdfAButtonFieldTest() throws Exception { PageSize pageSize = PageSize.LETTER; Document doc = new Document(pdf, pageSize); - PdfFontFactory.register(SOURCE_FOLDER + "FreeSans.ttf", SOURCE_FOLDER + "FreeSans.ttf"); + PdfFontFactory.register(FONTS_FOLDER + "FreeSans.ttf", FONTS_FOLDER + "FreeSans.ttf"); PdfFont font = PdfFontFactory.createFont( - SOURCE_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); PdfButtonFormField group = new RadioFormFieldBuilder(pdf, "group") .setConformance(PdfConformance.PDF_A_1B).createRadioGroup(); @@ -226,7 +227,7 @@ public void pdfA1DocWithPdfA1ChoiceFieldTest() throws IOException, InterruptedEx String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ChoiceField.pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); @@ -255,7 +256,7 @@ public void pdfA1DocWithPdfA1ComboBoxFieldTest() throws IOException, Interrupted String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ComboBoxField.pdf"; - PdfFont fontCJK = PdfFontFactory.createFont(SOURCE_FOLDER + "NotoSansCJKtc-Light.otf", + PdfFont fontCJK = PdfFontFactory.createFont(FONTS_FOLDER + "NotoSansCJKtc-Light.otf", PdfEncodings.IDENTITY_H, EmbeddingStrategy.FORCE_EMBEDDED); InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); @@ -283,7 +284,7 @@ public void pdfA1DocWithPdfA1ListFieldTest() throws IOException, InterruptedExce String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ListField.pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); @@ -316,7 +317,7 @@ public void pdfA1DocWithPdfA1PushButtonFieldTest() throws IOException, Interrupt String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1PushButtonField.pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); @@ -382,7 +383,7 @@ public void pdfA1DocWithPdfA1TextFieldTest() throws IOException, InterruptedExce String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1TextField.pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); fontFreeSans.setSubset(false); @@ -409,7 +410,7 @@ public void pdfA1DocWithPdfA1SignatureFieldTest() throws IOException, Interrupte String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1SignatureField.pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); fontFreeSans.setSubset(false); @@ -443,7 +444,7 @@ public void mergePdfADocWithFormTest() throws IOException, InterruptedException "http://www.color.org", "sRGB ICC preference", is)); Document doc = new Document(pdfDoc)) { - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI); + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI); doc.add(new Paragraph(new Text("Some text").setFont(font).setFontSize(10))); @@ -539,7 +540,7 @@ public void testCheckboxWithPDFA() throws IOException, InterruptedException { public void testMultipleCombinationsFontOnFieldSeparate() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "testMultipleCombinations.pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_testMultipleCombinations.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(outPdf, cmp, document -> { for (Supplier formFieldSupplier : generateFormFields()) { @@ -560,7 +561,7 @@ public void testMultipleCombinationsFontOnFieldSeparate() throws IOException, In @Test public void testMultipleCombinationsWriteAndReload() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "testMultipleCombinationsWriteAndLoad1.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(outPdf, null, (document -> { for (Supplier formFieldSupplier : generateFormFields()) { @@ -592,7 +593,7 @@ public void testMultipleCombinationsWriteAndReload() throws IOException, Interru public void testMultipleCombinationsOnDocument() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "testMultipleCombinationsOnDocument.pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocument.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(outPdf, cmp, (document -> { document.setFont(font); @@ -614,7 +615,7 @@ public void testMultipleCombinationsOnDocument() throws IOException, Interrupted public void testMultipleCombinationsFontOnFieldSeparateNonInteractive() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "testMultipleCombinationsNonInteractive.pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsNonInteractive.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(outPdf, cmp, (document -> { for (Supplier formFieldSupplier : generateFormFields()) { @@ -635,7 +636,7 @@ public void testMultipleCombinationsFontOnFieldSeparateNonInteractive() throws I public void testMultipleCombinationsOnDocumentNonInteractive() throws IOException, InterruptedException { String outPdf = DESTINATION_FOLDER + "testMultipleCombinationsOnDocumentNonInteractive.pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocumentNonInteractive.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(outPdf, cmp, (document -> { document.setFont(font); @@ -659,7 +660,7 @@ public void testCopyPagesDoesntEmbedHelveticaFont() throws IOException, Interrup String outPdf = DESTINATION_FOLDER + "testCopyPagesDoesntEmbedHelveticaFont.pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_testCopyPagesDoesntEmbedHelveticaFont.pdf"; - PdfFont font = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfWriter writer = new PdfWriter(simplePdf, new WriterProperties() @@ -696,7 +697,7 @@ public void pdfASignatureFieldWithTextAndFontTest() throws IOException, Interrup String fileName = DESTINATION_FOLDER + name + ".pdf"; String cmp = SOURCE_FOLDER + "cmp/PdfAFormFieldTest/cmp_" + name + ".pdf"; - PdfFont fontFreeSans = PdfFontFactory.createFont(SOURCE_FOLDER + "FreeSans.ttf", + PdfFont fontFreeSans = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); makePdfDocument(fileName, cmp, (pdfDoc) -> { diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectObjectsCountLimitTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectObjectsCountLimitTest.java index 7b10824b5d..42aee16d73 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectObjectsCountLimitTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectObjectsCountLimitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,7 +51,8 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfAIndirectObjectsCountLimitTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @Test public void validAmountOfIndirectObjectsTest() throws IOException { @@ -63,7 +64,7 @@ protected long getMaxNumberOfIndirectObjects() { }; try ( - InputStream icm = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream icm = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); OutputStream fos = new ByteArrayOutputStream(); Document document = new Document(new PdfADocument(new PdfWriter(fos), PdfAConformance.PDF_A_1B, @@ -90,7 +91,7 @@ protected long getMaxNumberOfIndirectObjects() { }; try ( - InputStream icm = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream icm = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); OutputStream fos = new ByteArrayOutputStream(); ) { Document document = new Document(new PdfADocument(new PdfWriter(fos), @@ -120,7 +121,7 @@ protected long getMaxNumberOfIndirectObjects() { }; try ( - InputStream fis = FileUtil.getInputStreamForFile(sourceFolder + "pdfs/pdfa10IndirectObjects.pdf"); + InputStream fis = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "pdfs/pdfa10IndirectObjects.pdf"); OutputStream fos = new ByteArrayOutputStream(); ) { PdfADocument pdfa = new PdfADocument(new PdfReader(fis), new PdfWriter(fos), new StampingProperties().useAppendMode()); @@ -137,9 +138,9 @@ protected long getMaxNumberOfIndirectObjects() { } private Paragraph buildContent() throws IOException { - PdfFontFactory.register(sourceFolder + "FreeSans.ttf",sourceFolder + "FreeSans.ttf"); + PdfFontFactory.register(FONTS_FOLDER + "FreeSans.ttf", FONTS_FOLDER + "FreeSans.ttf"); PdfFont font = PdfFontFactory.createFont( - sourceFolder + "FreeSans.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", PdfEncodings.WINANSI, EmbeddingStrategy.PREFER_EMBEDDED); Paragraph p = new Paragraph(UUID.randomUUID().toString()); p.setMinWidth(1e6f); p.setFont(font); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectResourcesTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectResourcesTest.java index 5839bcde8e..179a31dc27 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectResourcesTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAIndirectResourcesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfALongStringTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfALongStringTest.java index 578cae4a82..0ec8427e46 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfALongStringTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfALongStringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,21 +45,22 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfALongStringTest extends ExtendedITextTest { - private static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - private static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfALongStringTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfALongStringTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; private static final String LOREM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis condimentum, tortor sit amet fermentum pharetra, sem felis finibus enim, vel consectetur nunc justo at nisi. In hac habitasse platea dictumst. Donec quis suscipit eros. Nam urna purus, scelerisque in placerat in, convallis vel sapien. Suspendisse sed lacus sit amet orci ornare vulputate. In hac habitasse platea dictumst. Ut eu aliquet felis, at consectetur neque."; private static final int STRING_LENGTH_LIMIT = 32767; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @Test public void runTest() throws Exception { String file = "pdfALongString.pdf"; - String filename = destinationFolder + file; - try (InputStream icm = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + String filename = DESTINATION_FOLDER + file; + try (InputStream icm = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); OutputStream fos = FileUtil.getFileOutputStream(filename)) { Document document = new Document(new PdfADocument(new PdfWriter(fos), PdfAConformance.PDF_A_3U, new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB ICC preference", icm)) @@ -68,9 +69,9 @@ public void runTest() throws Exception { while (stringBuilder.length() < STRING_LENGTH_LIMIT) { stringBuilder.append(stringBuilder.toString()); } - PdfFontFactory.register(sourceFolder + "FreeSans.ttf", sourceFolder + "FreeSans.ttf"); + PdfFontFactory.register(FONTS_FOLDER + "FreeSans.ttf", FONTS_FOLDER + "FreeSans.ttf"); PdfFont font = PdfFontFactory.createFont( - sourceFolder + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); + FONTS_FOLDER + "FreeSans.ttf", EmbeddingStrategy.PREFER_EMBEDDED); Paragraph p = new Paragraph(stringBuilder.toString()); p.setMinWidth(1e6f); p.setFont(font); diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPageTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPageTest.java index 3c5a0d49ff..3497227542 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPageTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPushbuttonfieldTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPushbuttonfieldTest.java index ab41f1e195..5e615ccf26 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPushbuttonfieldTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAPushbuttonfieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -51,24 +51,25 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfAPushbuttonfieldTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfAPushbuttonfieldTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfAPushbuttonfieldTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createDestinationFolder(destinationFolder); + createDestinationFolder(DESTINATION_FOLDER); } @Test public void pdfA1bButtonAppearanceTest() throws IOException, InterruptedException { String name = "pdfA1b_ButtonAppearanceTest"; - String outPath = destinationFolder + name + ".pdf"; - String cmpPath = cmpFolder + "cmp_" + name + ".pdf"; + String outPath = DESTINATION_FOLDER + name + ".pdf"; + String cmpPath = CMP_FOLDER + "cmp_" + name + ".pdf"; String diff = "diff_" + name + "_"; PdfWriter writer = new PdfWriter(outPath); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent); doc.setTagged(); @@ -77,7 +78,7 @@ public void pdfA1bButtonAppearanceTest() throws IOException, InterruptedExceptio PdfAcroForm form = PdfFormCreator.getAcroForm(doc, true); Rectangle rect = new Rectangle(36, 626, 100, 40); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfFormField button = new PushButtonFormFieldBuilder(doc, "push button").setWidgetRectangle(rect) .setCaption("push").setConformance(PdfConformance.PDF_A_1B) @@ -86,7 +87,7 @@ public void pdfA1bButtonAppearanceTest() throws IOException, InterruptedExceptio form.addField(button); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, destinationFolder, diff)); + Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, DESTINATION_FOLDER, diff)); Assertions.assertNull(new VeraPdfValidator().validate(outPath)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @@ -94,12 +95,12 @@ public void pdfA1bButtonAppearanceTest() throws IOException, InterruptedExceptio @Test public void pdfA1bButtonAppearanceRegenerateTest() throws IOException, InterruptedException { String name = "pdfA1b_ButtonAppearanceRegenerateTest"; - String outPath = destinationFolder + name + ".pdf"; - String cmpPath = cmpFolder + "cmp_" + name + ".pdf"; + String outPath = DESTINATION_FOLDER + name + ".pdf"; + String cmpPath = CMP_FOLDER + "cmp_" + name + ".pdf"; String diff = "diff_" + name + "_"; PdfWriter writer = new PdfWriter(outPath); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent); doc.setTagged(); @@ -108,7 +109,7 @@ public void pdfA1bButtonAppearanceRegenerateTest() throws IOException, Interrupt PdfAcroForm form = PdfFormCreator.getAcroForm(doc, true); Rectangle rect = new Rectangle(36, 626, 100, 40); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfFormField button = new PushButtonFormFieldBuilder(doc, "push button").setWidgetRectangle(rect) .setCaption("push").setConformance(PdfConformance.PDF_A_1B) @@ -118,19 +119,19 @@ public void pdfA1bButtonAppearanceRegenerateTest() throws IOException, Interrupt form.addField(button); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, destinationFolder, diff)); + Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, DESTINATION_FOLDER, diff)); Assertions.assertNull(new VeraPdfValidator().validate(outPath)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } @Test public void pdfA1bButtonAppearanceSetValueTest() throws IOException, InterruptedException { String name = "pdfA1b_ButtonAppearanceSetValueTest"; - String outPath = destinationFolder + name + ".pdf"; - String cmpPath = cmpFolder + "cmp_" + name + ".pdf"; + String outPath = DESTINATION_FOLDER + name + ".pdf"; + String cmpPath = CMP_FOLDER + "cmp_" + name + ".pdf"; String diff = "diff_" + name + "_"; PdfWriter writer = new PdfWriter(outPath); - InputStream is = FileUtil.getInputStreamForFile(sourceFolder + "sRGB Color Space Profile.icm"); + InputStream is = FileUtil.getInputStreamForFile(SOURCE_FOLDER + "sRGB Color Space Profile.icm"); PdfOutputIntent outputIntent = new PdfOutputIntent("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", is); PdfADocument doc = new PdfADocument(writer, PdfAConformance.PDF_A_1B, outputIntent); doc.setTagged(); @@ -139,7 +140,7 @@ public void pdfA1bButtonAppearanceSetValueTest() throws IOException, Interrupted PdfAcroForm form = PdfFormCreator.getAcroForm(doc, true); Rectangle rect = new Rectangle(36, 626, 100, 40); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "WinAnsi", EmbeddingStrategy.FORCE_EMBEDDED); PdfFormField button = new PushButtonFormFieldBuilder(doc, "push button").setWidgetRectangle(rect) .setCaption("push").setConformance(PdfConformance.PDF_A_1B) @@ -148,7 +149,7 @@ public void pdfA1bButtonAppearanceSetValueTest() throws IOException, Interrupted button.setValue("button"); form.addField(button); doc.close(); - Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, destinationFolder, diff)); + Assertions.assertNull(new CompareTool().compareByContent(outPath, cmpPath, DESTINATION_FOLDER, diff)); Assertions.assertNull(new VeraPdfValidator().validate(outPath)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfARadiofieldTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfARadiofieldTest.java index 022a07d415..7d62bf0311 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfARadiofieldTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfARadiofieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAStampingModeTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAStampingModeTest.java index 4339440c35..5ec20c0e34 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAStampingModeTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAStampingModeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfATransparencyCheckTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfATransparencyCheckTest.java index cdc6e30d9a..859a74f5e3 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfATransparencyCheckTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfATransparencyCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -55,13 +55,14 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class PdfATransparencyCheckTest extends ExtendedITextTest { - public static final String sourceFolder = "./src/test/resources/com/itextpdf/pdfa/"; - public static final String cmpFolder = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/"; - public static final String destinationFolder = TestUtil.getOutputPath() + "/pdfa/PdfATransparencyCheckTest/"; + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/pdfa/"; + private static final String CMP_FOLDER = "./src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/"; + private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfa/PdfATransparencyCheckTest/"; + private static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/pdfa/fonts/"; @BeforeAll public static void beforeClass() { - createOrClearDestinationFolder(destinationFolder); + createOrClearDestinationFolder(DESTINATION_FOLDER); } @Test @@ -69,7 +70,7 @@ public void textTransparencyNoOutputIntentTest() throws IOException { PdfWriter writer = new PdfWriter(new java.io.ByteArrayOutputStream()); PdfDocument pdfDocument = new PdfADocument(writer, PdfAConformance.PDF_A_3B, null); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page1 = pdfDocument.addNewPage(); @@ -93,11 +94,11 @@ public void textTransparencyNoOutputIntentTest() throws IOException { @Test public void transparentTextWithGroupColorSpaceTest() throws IOException, InterruptedException { - String outPdf = destinationFolder + "transparencyAndCS.pdf"; - String cmpPdf = cmpFolder + "cmp_transparencyAndCS.pdf"; + String outPdf = DESTINATION_FOLDER + "transparencyAndCS.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_transparencyAndCS.pdf"; PdfDocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_3B, null); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfPage page = pdfDocument.addNewPage(); @@ -145,7 +146,7 @@ public void imageTransparencyTest() throws IOException { page.getResources().setDefaultRgb(new PdfCieBasedCs.CalRgb(new float[]{0.3f, 0.4f, 0.5f})); canvas.saveState(); - canvas.addImageFittedIntoRectangle(ImageDataFactory.create(sourceFolder + "itext.png"), + canvas.addImageFittedIntoRectangle(ImageDataFactory.create(SOURCE_FOLDER + "itext.png"), new Rectangle(0, 0, page.getPageSize().getWidth() / 2, page.getPageSize().getHeight() / 2), false); canvas.restoreState(); @@ -192,12 +193,12 @@ public void nestedXObjectWithTransparencyTest() { @Test public void testTransparencyObjectsAbsence() throws IOException, InterruptedException { - String outPdf = destinationFolder + "transparencyObjectsAbsence.pdf"; - String cmpPdf = cmpFolder + "cmp_transparencyObjectsAbsence.pdf"; + String outPdf = DESTINATION_FOLDER + "transparencyObjectsAbsence.pdf"; + String cmpPdf = CMP_FOLDER + "cmp_transparencyObjectsAbsence.pdf"; PdfDocument pdfDocument = new PdfADocument(new PdfWriter(outPdf), PdfAConformance.PDF_A_3B, null); PdfPage page = pdfDocument.addNewPage(); - PdfFont font = PdfFontFactory.createFont(sourceFolder + "FreeSans.ttf", + PdfFont font = PdfFontFactory.createFont(FONTS_FOLDER + "FreeSans.ttf", "Identity-H", EmbeddingStrategy.FORCE_EMBEDDED); PdfCanvas canvas = new PdfCanvas(page); @@ -218,7 +219,7 @@ public void testTransparencyObjectsAbsence() throws IOException, InterruptedExce } private void compareResult(String outPdf, String cmpPdf) throws IOException, InterruptedException { - String result = new CompareTool().compareByContent(outPdf, cmpPdf, destinationFolder, "diff_"); + String result = new CompareTool().compareByContent(outPdf, cmpPdf, DESTINATION_FOLDER, "diff_"); if (result != null) { fail(result); } diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java index 175cebd7ee..1a50cf8367 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/PdfAXmpTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1CheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1CheckerTest.java index 666e6aa624..4679996a6c 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1CheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1CheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1ImplementationLimitsCheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1ImplementationLimitsCheckerTest.java index 30112982f0..f2c9e499c1 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1ImplementationLimitsCheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA1ImplementationLimitsCheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerGlyphsTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerGlyphsTest.java index 5a385acd02..b18524f8df 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerGlyphsTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerGlyphsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTest.java index a97ef379c3..f112b874e1 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTransparencyTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTransparencyTest.java index 4b9b0737f4..4a02881929 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTransparencyTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2CheckerTransparencyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2ImplementationLimitsCheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2ImplementationLimitsCheckerTest.java index b27cf82aca..6792e396d1 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2ImplementationLimitsCheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA2ImplementationLimitsCheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA3CheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA3CheckerTest.java index 041979ce9c..0ea7e26151 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA3CheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA3CheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4ImplementationLimitsTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4ImplementationLimitsTest.java index d5f00f56d1..bc1bc007e8 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4ImplementationLimitsTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4ImplementationLimitsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4MetaDataTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4MetaDataTest.java index 5394cda3b8..2f0a62d9b9 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4MetaDataTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfA4MetaDataTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTest.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTest.java index cbd50754f1..6c33a203af 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTest.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -36,6 +36,7 @@ This file is part of the iText (R) project. import com.itextpdf.kernel.pdf.PdfObject; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfReader; +import com.itextpdf.kernel.pdf.PdfResources; import com.itextpdf.kernel.pdf.PdfStream; import com.itextpdf.kernel.pdf.PdfString; import com.itextpdf.kernel.pdf.PdfWriter; @@ -54,8 +55,8 @@ This file is part of the iText (R) project. import java.util.Set; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; @Tag("UnitTest") public class PdfACheckerTest extends ExtendedITextTest { @@ -181,6 +182,11 @@ protected void checkContentStream(PdfStream contentStream) { } + @Override + protected void checkContentStream(PdfStream contentStream, PdfResources resources) { + + } + @Override protected void checkContentStreamObject(PdfObject object) { diff --git a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTestUtils.java b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTestUtils.java index 59bcfc6f6c..9f2abe72c4 100644 --- a/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTestUtils.java +++ b/pdfa/src/test/java/com/itextpdf/pdfa/checker/PdfACheckerTestUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/FreeSans.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/FreeSans.ttf deleted file mode 100644 index 4b06bd7822..0000000000 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/FreeSans.ttf and /dev/null differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/NotoSans-Regular.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/NotoSans-Regular.ttf deleted file mode 100644 index 7da1a0fad8..0000000000 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/NotoSans-Regular.ttf and /dev/null differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/Puritan2.otf b/pdfa/src/test/resources/com/itextpdf/pdfa/Puritan2.otf deleted file mode 100644 index e4c7eb15df..0000000000 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/Puritan2.otf and /dev/null differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1CanvasCheckTest/cmp_checkInlineImage.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1CanvasCheckTest/cmp_checkInlineImage.pdf new file mode 100644 index 0000000000..a1a9d356da Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1CanvasCheckTest/cmp_checkInlineImage.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1LayoutListTest/cmp_pdfA1b_listTest01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1LayoutListTest/cmp_pdfA1b_listTest01.pdf index e76af85ec4..e52875b25c 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1LayoutListTest/cmp_pdfA1b_listTest01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA1LayoutListTest/cmp_pdfA1b_listTest01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA1a_annotationCheckTest12.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA1a_annotationCheckTest12.pdf index 2b46a2cff3..2f143056f5 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA1a_annotationCheckTest12.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA1a_annotationCheckTest12.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2a_annotationCheckTest14.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2a_annotationCheckTest14.pdf index 69fdd199dd..6737ff00cc 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2a_annotationCheckTest14.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2a_annotationCheckTest14.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest10.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest10.pdf index ae63828b7e..f5764bba63 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest10.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest10.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest11.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest11.pdf index 06041b2cac..2916ea2364 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest11.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2AnnotationCheckTest/cmp_pdfA2b_annotationCheckTest11.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2CanvasCheckTest/cmp_checkInlineImage.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2CanvasCheckTest/cmp_checkInlineImage.pdf new file mode 100644 index 0000000000..9f48a056d8 Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2CanvasCheckTest/cmp_checkInlineImage.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecCheckTest02.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecCheckTest02.pdf index bf717a06a5..2d9955c901 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecCheckTest02.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecCheckTest02.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecNonConformingTest01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecNonConformingTest01.pdf index 603c1d29bc..3db0cb5904 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecNonConformingTest01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2EmbeddedFilesCheckTest/cmp_pdfA2b_fileSpecNonConformingTest01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_colorCheckTest2.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_colorCheckTest2.pdf index 40bfbbc36d..72406a9659 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_colorCheckTest2.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_colorCheckTest2.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_defaultColorCheckInvisibleText.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_defaultColorCheckInvisibleText.pdf index 5b77c58393..0bee46164a 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_defaultColorCheckInvisibleText.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA2GraphicsCheckTest/cmp_pdfA2b_defaultColorCheckInvisibleText.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest01.pdf index 906094fdec..9e6da768ae 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest02.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest02.pdf index 3387e01f09..f260b8a1ac 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest02.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest02.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest03.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest03.pdf index ff066a74fe..7866a7132f 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest03.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest03.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest04.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest04.pdf index ad52da6bca..e5455daa1a 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest04.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA3EmbeddedFilesCheckTest/cmp_pdfA3b_fileSpecCheckTest04.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4Puritan2Test.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_checkInlineImage.pdf similarity index 55% rename from pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4Puritan2Test.pdf rename to pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_checkInlineImage.pdf index b573c53ced..d8e66cf63c 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4Puritan2Test.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_checkInlineImage.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf index 6de1a4f86f..33ae5e6836 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4CatalogCheckTest/cmp_pdfA4_tagged.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest2.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest2.pdf index 6457cae520..53e25ad1ba 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest2.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest2.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest9.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest9.pdf index fba13c448d..d2dcd3eb25 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest9.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_colorCheckTest9.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultColorCheckInvisibleText.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultColorCheckInvisibleText.pdf index d161f66c08..eef6b657c5 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultColorCheckInvisibleText.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultColorCheckInvisibleText.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultTextColorCheckWithPageOutputIntent.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultTextColorCheckWithPageOutputIntent.pdf index 1cfe394f38..7915f81ab3 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultTextColorCheckWithPageOutputIntent.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4GraphicsCheckTest/cmp_pdfA4_defaultTextColorCheckWithPageOutputIntent.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_textTransparencyPageOutputIntent.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_textTransparencyPageOutputIntent.pdf index 8fb161ba25..bc5a0d62ac 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_textTransparencyPageOutputIntent.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_textTransparencyPageOutputIntent.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_transparencyAndCS.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_transparencyAndCS.pdf index 0b96497040..fba6c12cd2 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_transparencyAndCS.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfA4TransparencyCheckTest/cmp_transparencyAndCS.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAAppendModeTest/cmp_addPageInAppendModeTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAAppendModeTest/cmp_addPageInAppendModeTest.pdf index ead5574f47..443f27f37d 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAAppendModeTest/cmp_addPageInAppendModeTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAAppendModeTest/cmp_addPageInAppendModeTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode128Test.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode128Test.pdf index 5daa4bc01a..86065353ba 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode128Test.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode128Test.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode39Test.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode39Test.pdf index a3b392b57d..8f8258b6d9 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode39Test.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcode39Test.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeCodabarTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeCodabarTest.pdf index 823f1f5b45..d65c6d0700 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeCodabarTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeCodabarTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeEANTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeEANTest.pdf index 6ecc7f099d..de82ec5d14 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeEANTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeEANTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeInter25Test.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeInter25Test.pdf index 58daaa4ca2..80e8e86499 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeInter25Test.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeInter25Test.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeMSITest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeMSITest.pdf index 09f3021295..46b1b12cdf 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeMSITest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfABarcodeTest/cmp_barcodeMSITest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp_tryToFlushFontTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFlushingTest/cmp_tryToFlushFontTest.pdf similarity index 51% rename from pdfa/src/test/resources/com/itextpdf/pdfa/cmp_tryToFlushFontTest.pdf rename to pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFlushingTest/cmp_tryToFlushFontTest.pdf index 51f97c3600..f376ebcf69 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp_tryToFlushFontTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFlushingTest/cmp_tryToFlushFontTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansForceEmbeddedTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansForceEmbeddedTest.pdf index a3043eb661..612f3e0a95 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansForceEmbeddedTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansForceEmbeddedTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansPreferNotEmbeddedTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansPreferNotEmbeddedTest.pdf index 546723d4de..587820f722 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansPreferNotEmbeddedTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_PdfA4FreeSansPreferNotEmbeddedTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_nonSymbolicTtfCharEncodingsPdfA1Test01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_nonSymbolicTtfCharEncodingsPdfA1Test01.pdf index 1f4dd4224c..93f3b11245 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_nonSymbolicTtfCharEncodingsPdfA1Test01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_nonSymbolicTtfCharEncodingsPdfA1Test01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_01.pdf index 3dd0926009..ef6ad78a46 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_03.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_03.pdf index 004c424197..0b6c75d9b8 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_03.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA1b_fontCheckPdfA1_03.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest1.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest1.pdf index 8c353477dd..76d419130d 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest1.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest1.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest2.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest2.pdf index 81c0121fa2..b0084cb09f 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest2.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_cidFontCheckTest2.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_fontCheckPdfA2_01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_fontCheckPdfA2_01.pdf index 087f34bcbb..ba65c21eb7 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_fontCheckPdfA2_01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA2b_fontCheckPdfA2_01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA3b_fontCheckPdfA3_01.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA3b_fontCheckPdfA3_01.pdf index 65995e4923..6ecf40bb7f 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA3b_fontCheckPdfA3_01.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA3b_fontCheckPdfA3_01.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4PuritanTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4PuritanTest.pdf new file mode 100644 index 0000000000..fb29209d45 Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFontTest/cmp_pdfA4PuritanTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_mergePdfADocWithForm.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_mergePdfADocWithForm.pdf index de2cc479e7..daf593506f 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_mergePdfADocWithForm.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_mergePdfADocWithForm.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ChoiceField.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ChoiceField.pdf index 4b334813ee..043209bf5a 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ChoiceField.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ChoiceField.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ListField.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ListField.pdf index d880862f14..79d2e18d71 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ListField.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1ListField.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1PushButtonField.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1PushButtonField.pdf index a1a245c1c4..124a1628fa 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1PushButtonField.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1PushButtonField.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1TextField.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1TextField.pdf index 084e61dff1..003911a147 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1TextField.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfA1DocWithPdfA1TextField.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfAButtonField.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfAButtonField.pdf index 181affa511..2fe8599b39 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfAButtonField.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfAButtonField.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfASignatureFieldTestWithText.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfASignatureFieldTestWithText.pdf index 5ed4a33497..0faf847839 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfASignatureFieldTestWithText.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_pdfASignatureFieldTestWithText.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testCopyPagesDoesntEmbedHelveticaFont.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testCopyPagesDoesntEmbedHelveticaFont.pdf index 73cd3ff318..355752aa83 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testCopyPagesDoesntEmbedHelveticaFont.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testCopyPagesDoesntEmbedHelveticaFont.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinations.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinations.pdf index 57a9caa12e..17175318de 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinations.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinations.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsNonInteractive.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsNonInteractive.pdf index 93d867ecca..f00918446b 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsNonInteractive.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsNonInteractive.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocument.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocument.pdf index dcf8f2de1b..ce20c9b33c 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocument.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocument.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocumentNonInteractive.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocumentNonInteractive.pdf index c0a199f799..7b5d7aa29f 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocumentNonInteractive.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsOnDocumentNonInteractive.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsWriteAndLoad.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsWriteAndLoad.pdf index 3053afa77c..dabcc15b79 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsWriteAndLoad.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAFormFieldTest/cmp_testMultipleCombinationsWriteAndLoad.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceRegenerateTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceRegenerateTest.pdf index 9688a808dc..ec1deb0c76 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceRegenerateTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceRegenerateTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceSetValueTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceSetValueTest.pdf index 0b509fa157..d2c29e7ea6 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceSetValueTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceSetValueTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceTest.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceTest.pdf index 92cbe35f51..a166f48919 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceTest.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfAPushbuttonfieldTest/cmp_pdfA1b_ButtonAppearanceTest.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyAndCS.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyAndCS.pdf index 97d474d9b3..2de9f5cdae 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyAndCS.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyAndCS.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyObjectsAbsence.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyObjectsAbsence.pdf index 9701622057..213f36de43 100644 Binary files a/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyObjectsAbsence.pdf and b/pdfa/src/test/resources/com/itextpdf/pdfa/cmp/PdfATransparencyCheckTest/cmp_transparencyObjectsAbsence.pdf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/FreeSans.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/FreeSans.ttf new file mode 100644 index 0000000000..6de62ebf67 Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/FreeSans.ttf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/GNU General Public License.txt b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/GNU General Public License.txt new file mode 100644 index 0000000000..3b6dc96b30 --- /dev/null +++ b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/GNU General Public License.txt @@ -0,0 +1,219 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds of works. + + The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + + Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and modification follow. + + TERMS AND CONDITIONS + 0. Definitions. + “This License” refers to version 3 of the GNU General Public License. + + “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + + “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + + To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + + A “covered work” means either the unmodified Program or a work based on the Program. + + To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + + To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + + A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + + The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + + The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + + The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + + When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + + A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + + “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + + If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + + The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + + However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + + Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + + An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + + 11. Patents. + A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + + A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + + In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + + If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + + A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + + Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + + You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + + The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . \ No newline at end of file diff --git a/io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/LICENSE_OFL.txt b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/LICENSE_OFL-1.1.txt similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/otf/GposLookupType5Test/LICENSE_OFL.txt rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/LICENSE_OFL-1.1.txt diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NOTICE.txt b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NOTICE.txt new file mode 100644 index 0000000000..8bfc81dc3c --- /dev/null +++ b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NOTICE.txt @@ -0,0 +1,8 @@ +Please notice that the following fonts are used with the mentioned below licenses. + +FreeSans.ttf | GPL license | GNU General Public License.txt | Based on "https://savannah.gnu.org/projects/freefont" (28.01.2026) +NotoEmoji-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Emoji" (26.01.2026) +NotoSansCJKtc-Light.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository "https://github.com/notofonts/noto-cjk/blob/main/Sans/OTF/TraditionalChinese/NotoSansCJKtc-Light.otf" +NotoSans-Regular.ttf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on commit 4cdde035fd5138d6653a2176ba728b5b6f8cc533 (30.10.2019) from repository: "https://github.com/googlefonts/noto-fonts" +Puritan-Regular.otf | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Puritan" (26.01.2026) +SourceSerif4-Black.woff | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Source+Serif+4" (26.01.2026) \ No newline at end of file diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/NotoEmoji-Regular.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoEmoji-Regular.ttf similarity index 100% rename from pdfa/src/test/resources/com/itextpdf/pdfa/NotoEmoji-Regular.ttf rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoEmoji-Regular.ttf diff --git a/io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSans-Regular.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoSans-Regular.ttf similarity index 100% rename from io/src/test/resources/com/itextpdf/io/font/sharedFontsResourceFiles/NotoSans-Regular.ttf rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoSans-Regular.ttf diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/NotoSansCJKtc-Light.otf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoSansCJKtc-Light.otf similarity index 100% rename from pdfa/src/test/resources/com/itextpdf/pdfa/NotoSansCJKtc-Light.otf rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/NotoSansCJKtc-Light.otf diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/Puritan-Regular.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/Puritan-Regular.ttf new file mode 100644 index 0000000000..270f380de8 Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/Puritan-Regular.ttf differ diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/SourceSerif4-Black.woff b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/SourceSerif4-Black.woff similarity index 100% rename from pdfa/src/test/resources/com/itextpdf/pdfa/SourceSerif4-Black.woff rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/SourceSerif4-Black.woff diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/Symbols1.ttf b/pdfa/src/test/resources/com/itextpdf/pdfa/fonts/Symbols1.ttf similarity index 100% rename from pdfa/src/test/resources/com/itextpdf/pdfa/Symbols1.ttf rename to pdfa/src/test/resources/com/itextpdf/pdfa/fonts/Symbols1.ttf diff --git a/pdfa/src/test/resources/com/itextpdf/pdfa/inlineImage.pdf b/pdfa/src/test/resources/com/itextpdf/pdfa/inlineImage.pdf new file mode 100644 index 0000000000..df0010afe8 Binary files /dev/null and b/pdfa/src/test/resources/com/itextpdf/pdfa/inlineImage.pdf differ diff --git a/pdftest/pom.xml b/pdftest/pom.xml index 2110be527b..c508b5dc95 100644 --- a/pdftest/pom.xml +++ b/pdftest/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT pdftest @@ -31,6 +31,22 @@ org.verapdf validation-model ${verapdf.version} + + + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-core + + + com.fasterxml.jackson.core + jackson-annotations + + ch.qos.logback @@ -42,6 +58,11 @@ junit-jupiter ${junit.jupiter.version} + + org.junit.platform + junit-platform-launcher + ${junit.platform.version} + diff --git a/pdftest/src/main/java/com/itextpdf/test/AssertUtil.java b/pdftest/src/main/java/com/itextpdf/test/AssertUtil.java index 1693f2ecea..a0b27715f4 100644 --- a/pdftest/src/main/java/com/itextpdf/test/AssertUtil.java +++ b/pdftest/src/main/java/com/itextpdf/test/AssertUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/ExceptionTestUtil.java b/pdftest/src/main/java/com/itextpdf/test/ExceptionTestUtil.java index c668211b0e..4be49c880b 100644 --- a/pdftest/src/main/java/com/itextpdf/test/ExceptionTestUtil.java +++ b/pdftest/src/main/java/com/itextpdf/test/ExceptionTestUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/Executor.java b/pdftest/src/main/java/com/itextpdf/test/Executor.java index 504dc7632a..0b90c7c0de 100644 --- a/pdftest/src/main/java/com/itextpdf/test/Executor.java +++ b/pdftest/src/main/java/com/itextpdf/test/Executor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/ExtendedITextTest.java b/pdftest/src/main/java/com/itextpdf/test/ExtendedITextTest.java index 380cd55c41..35a4afeae2 100644 --- a/pdftest/src/main/java/com/itextpdf/test/ExtendedITextTest.java +++ b/pdftest/src/main/java/com/itextpdf/test/ExtendedITextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/ITextTest.java b/pdftest/src/main/java/com/itextpdf/test/ITextTest.java index e102f4ecc9..3a8927d41d 100644 --- a/pdftest/src/main/java/com/itextpdf/test/ITextTest.java +++ b/pdftest/src/main/java/com/itextpdf/test/ITextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/LogLevelConstants.java b/pdftest/src/main/java/com/itextpdf/test/LogLevelConstants.java index a683af4451..b716720a23 100644 --- a/pdftest/src/main/java/com/itextpdf/test/LogLevelConstants.java +++ b/pdftest/src/main/java/com/itextpdf/test/LogLevelConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/LogListener.java b/pdftest/src/main/java/com/itextpdf/test/LogListener.java index 92d95f4959..28a246f857 100644 --- a/pdftest/src/main/java/com/itextpdf/test/LogListener.java +++ b/pdftest/src/main/java/com/itextpdf/test/LogListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/LoggerHelper.java b/pdftest/src/main/java/com/itextpdf/test/LoggerHelper.java index 678a8da018..ba4f55ffa1 100644 --- a/pdftest/src/main/java/com/itextpdf/test/LoggerHelper.java +++ b/pdftest/src/main/java/com/itextpdf/test/LoggerHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/RunnerSearchConfig.java b/pdftest/src/main/java/com/itextpdf/test/RunnerSearchConfig.java index 9a43bf35f5..3bb9414993 100644 --- a/pdftest/src/main/java/com/itextpdf/test/RunnerSearchConfig.java +++ b/pdftest/src/main/java/com/itextpdf/test/RunnerSearchConfig.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/TestUtil.java b/pdftest/src/main/java/com/itextpdf/test/TestUtil.java index b6bee18446..0424c97491 100644 --- a/pdftest/src/main/java/com/itextpdf/test/TestUtil.java +++ b/pdftest/src/main/java/com/itextpdf/test/TestUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/WrappedSamplesRunner.java b/pdftest/src/main/java/com/itextpdf/test/WrappedSamplesRunner.java index 94a3bea6e2..c332596f19 100644 --- a/pdftest/src/main/java/com/itextpdf/test/WrappedSamplesRunner.java +++ b/pdftest/src/main/java/com/itextpdf/test/WrappedSamplesRunner.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessage.java b/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessage.java index 7145ae3866..df260dd612 100644 --- a/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessage.java +++ b/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessages.java b/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessages.java index 5367ffd12f..f279938163 100644 --- a/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessages.java +++ b/pdftest/src/main/java/com/itextpdf/test/annotations/LogMessages.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/pdfa/VeraPdfValidator.java b/pdftest/src/main/java/com/itextpdf/test/pdfa/VeraPdfValidator.java index c342291f04..698b57f7fd 100644 --- a/pdftest/src/main/java/com/itextpdf/test/pdfa/VeraPdfValidator.java +++ b/pdftest/src/main/java/com/itextpdf/test/pdfa/VeraPdfValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/runtime/VeraPdfValidatorApp.java b/pdftest/src/main/java/com/itextpdf/test/runtime/VeraPdfValidatorApp.java index b70a074312..9036c6306d 100644 --- a/pdftest/src/main/java/com/itextpdf/test/runtime/VeraPdfValidatorApp.java +++ b/pdftest/src/main/java/com/itextpdf/test/runtime/VeraPdfValidatorApp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/signutils/Pkcs12FileHelper.java b/pdftest/src/main/java/com/itextpdf/test/signutils/Pkcs12FileHelper.java index dba1a78681..8987f25f63 100644 --- a/pdftest/src/main/java/com/itextpdf/test/signutils/Pkcs12FileHelper.java +++ b/pdftest/src/main/java/com/itextpdf/test/signutils/Pkcs12FileHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/utils/FileUtil.java b/pdftest/src/main/java/com/itextpdf/test/utils/FileUtil.java index 59b482fd09..5f61452e4c 100644 --- a/pdftest/src/main/java/com/itextpdf/test/utils/FileUtil.java +++ b/pdftest/src/main/java/com/itextpdf/test/utils/FileUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/main/java/com/itextpdf/test/utils/UriUtil.java b/pdftest/src/main/java/com/itextpdf/test/utils/UriUtil.java index 5b7193673b..804fc272d1 100644 --- a/pdftest/src/main/java/com/itextpdf/test/utils/UriUtil.java +++ b/pdftest/src/main/java/com/itextpdf/test/utils/UriUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/sharpenconfig/java/com/itextpdf/test/SharpenConfigMapping.java b/pdftest/src/sharpenconfig/java/com/itextpdf/test/SharpenConfigMapping.java index d1d248dbfc..ae20f0ec00 100644 --- a/pdftest/src/sharpenconfig/java/com/itextpdf/test/SharpenConfigMapping.java +++ b/pdftest/src/sharpenconfig/java/com/itextpdf/test/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -110,6 +110,7 @@ private void mapJunit(MappingConfigurator configurator) { configurator.addFullName("NUnit.Framework.TestCaseSource"); configurator.addFullName("NUnit.Framework.Timeout"); configurator.removeNamedParameterFromAnnotation("NUnit.Framework.Timeout", "Unit"); + configurator.removeNamedParameterFromAnnotation("NUnit.Framework.Timeout", "ThreadMode"); configurator.addFullName("NUnit.Framework.Category"); configurator.mapMethodParametersOrder("org.junit.jupiter.api.Assertions.assertTrue(java.lang.String,boolean)", "2, 1"); diff --git a/pdftest/src/test/java/com/itextpdf/test/AssertUtilTest.java b/pdftest/src/test/java/com/itextpdf/test/AssertUtilTest.java index 1620351422..08210f1cac 100644 --- a/pdftest/src/test/java/com/itextpdf/test/AssertUtilTest.java +++ b/pdftest/src/test/java/com/itextpdf/test/AssertUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -70,4 +70,4 @@ void assertPassedWithinTimeoutTestFailsFirstTimes() throws InterruptedException Assertions.assertTrue(callCount.get() > 1); } -} \ No newline at end of file +} diff --git a/pdftest/src/test/java/com/itextpdf/test/LoggerHelperTest.java b/pdftest/src/test/java/com/itextpdf/test/LoggerHelperTest.java index d7658ee910..4d22a67a6e 100644 --- a/pdftest/src/test/java/com/itextpdf/test/LoggerHelperTest.java +++ b/pdftest/src/test/java/com/itextpdf/test/LoggerHelperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/test/java/com/itextpdf/test/VeraPdfLoggerValidationTest.java b/pdftest/src/test/java/com/itextpdf/test/VeraPdfLoggerValidationTest.java index 0f7c3e1879..7df35dfea9 100644 --- a/pdftest/src/test/java/com/itextpdf/test/VeraPdfLoggerValidationTest.java +++ b/pdftest/src/test/java/com/itextpdf/test/VeraPdfLoggerValidationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdftest/src/test/java/com/itextpdf/test/runtime/VeraPdfValidatorAppTest.java b/pdftest/src/test/java/com/itextpdf/test/runtime/VeraPdfValidatorAppTest.java index ac82f8d832..e24d2ebba0 100644 --- a/pdftest/src/test/java/com/itextpdf/test/runtime/VeraPdfValidatorAppTest.java +++ b/pdftest/src/test/java/com/itextpdf/test/runtime/VeraPdfValidatorAppTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -183,4 +183,4 @@ public void write(String message) { result += message; } } -} \ No newline at end of file +} diff --git a/pdftest/src/test/java/com/itextpdf/test/utils/UriUtilTest.java b/pdftest/src/test/java/com/itextpdf/test/utils/UriUtilTest.java index 7dd989cb66..4f3f25f5ad 100644 --- a/pdftest/src/test/java/com/itextpdf/test/utils/UriUtilTest.java +++ b/pdftest/src/test/java/com/itextpdf/test/utils/UriUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -61,4 +61,4 @@ void parseQueryParams05() { String query = "param1=value1¶m2=value2¶m3=value3"; assertEquals("value3", UriUtil.parseQueryParams(query).get("param3")); } -} \ No newline at end of file +} diff --git a/pdfua/pom.xml b/pdfua/pom.xml index 3c6dc4384e..6fa0c827c6 100644 --- a/pdfua/pom.xml +++ b/pdfua/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT pdfua diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAConfig.java b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAConfig.java index 0fec5015ae..a9d25dbdea 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAConfig.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAConfig.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUADocument.java b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUADocument.java index 173ec8bbfa..47f9137f56 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUADocument.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUADocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,6 +23,7 @@ This file is part of the iText (R) project. package com.itextpdf.pdfua; import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.kernel.contrast.ColorContrastChecker; import com.itextpdf.kernel.pdf.DocumentProperties; import com.itextpdf.kernel.pdf.PdfConformance; import com.itextpdf.kernel.pdf.PdfDocument; @@ -43,6 +44,7 @@ This file is part of the iText (R) project. import com.itextpdf.pdfua.checkers.PdfUAChecker; import com.itextpdf.pdfua.exceptions.PdfUAExceptionMessageConstants; import com.itextpdf.pdfua.logs.PdfUALogMessageConstants; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -80,7 +82,7 @@ public PdfUADocument(PdfWriter writer, DocumentProperties properties, PdfUAConfi setupUAConfiguration(config); final ValidationContainer validationContainer = new ValidationContainer(); - final List checkers = getCorrectCheckerFromConformance(config.getConformance()); + final List checkers = createCheckers(config.getConformance()); for (IValidationChecker checker : checkers) { validationContainer.addChecker(checker); } @@ -117,7 +119,7 @@ public PdfUADocument(PdfReader reader, PdfWriter writer, StampingProperties prop setupUAConfiguration(config); final ValidationContainer validationContainer = new ValidationContainer(); - final List checkers = getCorrectCheckerFromConformance(config.getConformance()); + final List checkers = createCheckers(config.getConformance()); for (IValidationChecker checker : checkers) { validationContainer.addChecker(checker); } @@ -125,15 +127,54 @@ public PdfUADocument(PdfReader reader, PdfWriter writer, StampingProperties prop this.pdfPageFactory = new PdfUAPageFactory(getUaChecker(checkers)); } + /** + * Creates a list of {@link PdfUAChecker} for specified PDF/UA conformance. + * If you want to enable/disable specific checks, you can override the implementation. + * + * @param uaConformance the conformance for which checker is needed + * + * @return the correct list of PDF/UA checkers + */ + protected List createCheckers(PdfUAConformance uaConformance) { + List checkers = new ArrayList<>(); + final ColorContrastChecker contrastChecker = new ColorContrastChecker(false, false); + contrastChecker.setCheckWcagAA(false); + contrastChecker.setCheckWcagAAA(true); + switch (uaConformance.getPart()) { + case "1": + checkers.add(new PdfUA1Checker(this)); + checkers.add(contrastChecker); + break; + case "2": + checkers.add(new PdfUA2Checker(this)); + checkers.add(new Pdf20Checker(this)); + checkers.add(contrastChecker); + break; + default: + throw new IllegalArgumentException( + PdfUAExceptionMessageConstants.CANNOT_FIND_PDF_UA_CHECKER_FOR_SPECIFIED_CONFORMANCE); + } + return checkers; + } + + private void setupUAConfiguration(PdfUAConfig config) { + // Basic configuration. + this.setTagged(); + this.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true)); + this.getCatalog().setLang(new PdfString(config.getLanguage())); + final PdfDocumentInfo info = this.getDocumentInfo(); + info.setTitle(config.getTitle()); + } + private static PdfWriter configureWriterProperties(PdfWriter writer, PdfUAConformance uaConformance) { writer.getProperties().addPdfUaXmpMetadata(uaConformance); if (writer.getPdfVersion() != null) { - if (uaConformance == PdfUAConformance.PDF_UA_1 && !writer.getPdfVersion().equals(PdfVersion.PDF_1_7)) { + if (uaConformance == PdfUAConformance.PDF_UA_1 && !PdfVersion.PDF_1_7.equals(writer.getPdfVersion())) { LOGGER.warn(MessageFormatUtil.format( PdfUALogMessageConstants.WRITER_PROPERTIES_PDF_VERSION_WAS_OVERRIDDEN, PdfVersion.PDF_1_7)); writer.getProperties().setPdfVersion(PdfVersion.PDF_1_7); } - if (uaConformance == PdfUAConformance.PDF_UA_2 && !writer.getPdfVersion().equals(PdfVersion.PDF_2_0)) { + if (uaConformance == PdfUAConformance.PDF_UA_2 && !PdfVersion.PDF_2_0.equals(writer.getPdfVersion())) { LOGGER.warn(MessageFormatUtil.format( PdfUALogMessageConstants.WRITER_PROPERTIES_PDF_VERSION_WAS_OVERRIDDEN, PdfVersion.PDF_2_0)); writer.getProperties().setPdfVersion(PdfVersion.PDF_2_0); @@ -150,36 +191,4 @@ private static PdfUAChecker getUaChecker(List checkers) { } return null; } - - private void setupUAConfiguration(PdfUAConfig config) { - // Basic configuration. - this.setTagged(); - this.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true)); - this.getCatalog().setLang(new PdfString(config.getLanguage())); - final PdfDocumentInfo info = this.getDocumentInfo(); - info.setTitle(config.getTitle()); - } - - /** - * Gets correct {@link PdfUAChecker} for specified PDF/UA conformance. - * - * @param uaConformance the conformance for which checker is needed - * @return the correct PDF/UA checker - */ - private List getCorrectCheckerFromConformance(PdfUAConformance uaConformance) { - List checkers = new ArrayList<>(); - switch (uaConformance.getPart()) { - case "1": - checkers.add(new PdfUA1Checker(this)); - break; - case "2": - checkers.add(new PdfUA2Checker(this)); - checkers.add(new Pdf20Checker(this)); - break; - default: - throw new IllegalArgumentException( - PdfUAExceptionMessageConstants.CANNOT_FIND_PDF_UA_CHECKER_FOR_SPECIFIED_CONFORMANCE); - } - return checkers; - } } diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPage.java b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPage.java index 15810ab59c..097700588f 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPage.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPageFactory.java b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPageFactory.java index c8143d8aed..385f78302e 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPageFactory.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/PdfUAPageFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA1Checker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA1Checker.java index e6c68c8831..8bd1611e3d 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA1Checker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA1Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -214,7 +214,7 @@ void checkOCProperties(PdfDictionary ocProperties) { @Override void checkLogicalStructureInBMC(Stack> stack, - Tuple2 currentBmc, PdfDocument document) { + Tuple2 currentBmc, PdfDocument document) { checkStandardRoleMapping(currentBmc); super.checkLogicalStructureInBMC(stack, currentBmc, document); } diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA2Checker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA2Checker.java index e64a6dd6c6..b6ac47423a 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA2Checker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUA2Checker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUAChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUAChecker.java index d587040840..708d085a2f 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUAChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/PdfUAChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ActionCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ActionCheckUtil.java index 450744e615..43805788f3 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ActionCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ActionCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtil.java index bcd37e4b7c..b1a83c67da 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/BCP47Validator.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/BCP47Validator.java index 3a56837c07..4d4ab236b9 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/BCP47Validator.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/BCP47Validator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ContextAwareTagTreeIteratorHandler.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ContextAwareTagTreeIteratorHandler.java index bf7796d18c..68d1263bf7 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ContextAwareTagTreeIteratorHandler.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ContextAwareTagTreeIteratorHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormCheckUtil.java index 78371a65c9..efdb63d57d 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormulaCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormulaCheckUtil.java index ef14558dc2..657507dcc6 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormulaCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/FormulaCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/GraphicsCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/GraphicsCheckUtil.java index f7a56fbdbe..8d42216c91 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/GraphicsCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/GraphicsCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/LayoutCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/LayoutCheckUtil.java index 3bd337ca7d..66239a2ed0 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/LayoutCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/LayoutCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/NoteCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/NoteCheckUtil.java index b0136325bf..d43afd8199 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/NoteCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/NoteCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/PdfUAValidationContext.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/PdfUAValidationContext.java index 3a99ad7876..137b36933e 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/PdfUAValidationContext.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/PdfUAValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/XfaCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/XfaCheckUtil.java index 66e5e2a6b0..672f6d1c6d 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/XfaCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/XfaCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/headings/HeadingsChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/headings/HeadingsChecker.java index 94b3f91bc1..b68b51d3a2 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/headings/HeadingsChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/headings/HeadingsChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/AbstractResultMatrix.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/AbstractResultMatrix.java index 98caf12e98..7a67a98ca8 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/AbstractResultMatrix.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/AbstractResultMatrix.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -237,7 +237,7 @@ private boolean hasValidHeaderIds(T cell, Set knownIds) { private static List createFixedSizedList(int capacity, Object defaultValue) { List arr = new ArrayList<>(capacity); for (int i = 0; i < capacity; i++) { - arr.add((Z)defaultValue); + arr.add((Z) defaultValue); } return arr; } diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/CellResultMatrix.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/CellResultMatrix.java index 7038eb0b0a..904370a67c 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/CellResultMatrix.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/CellResultMatrix.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/ITableIterator.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/ITableIterator.java index 4218dc3d46..77cdbb6c80 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/ITableIterator.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/ITableIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/StructTreeResultMatrix.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/StructTreeResultMatrix.java index 978ffff428..29cac3a680 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/StructTreeResultMatrix.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/StructTreeResultMatrix.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -120,7 +120,7 @@ byte[] getElementId(PdfStructElem cell) { */ @Override String getRole(PdfStructElem cell) { - return ((TableStructElementIterator)iterator).context.resolveToStandardRole(cell); + return ((TableStructElementIterator) iterator).context.resolveToStandardRole(cell); } } diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCellIterator.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCellIterator.java index dfa7edcb23..ec7a8a2102 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCellIterator.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCellIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -147,10 +147,10 @@ public int getNumberOfColumns() { public int getRow() { PdfName location = getLocation(); int row = currentCell.getRow(); - if (location == PdfName.TBody) { + if (PdfName.TBody.equals(location)) { row += this.getAmountOfRowsHeader(); } - if (location == PdfName.TFoot) { + if (PdfName.TFoot.equals(location)) { row += this.getAmountOfRowsHeader(); row += this.getAmountOfRowsBody(); } diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCheckUtil.java index af30b64df8..5563763853 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableStructElementIterator.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableStructElementIterator.java index 7405c9949f..3c3e5fc8e3 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableStructElementIterator.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/tables/TableStructElementIterator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1AnnotationChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1AnnotationChecker.java index 7ca0e8b0e2..399d78b1ef 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1AnnotationChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1AnnotationChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormChecker.java index face6c784b..ddccfd09dd 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormulaChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormulaChecker.java index d07ea43a23..2b32b7e75a 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormulaChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1FormulaChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1HeadingsChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1HeadingsChecker.java index 43f9d67884..06f2ccadcd 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1HeadingsChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1HeadingsChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1ListChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1ListChecker.java index 823dd82e5c..cb8487ab6f 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1ListChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1ListChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1NotesChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1NotesChecker.java index de79ea356a..0fbc2eba1c 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1NotesChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1NotesChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1XfaCheckUtil.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1XfaCheckUtil.java index d50067b0e9..63ea4d0b9c 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1XfaCheckUtil.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua1/PdfUA1XfaCheckUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationChecker.java index 3d69fca5b1..4fabeca670 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2CanvasTextChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2CanvasTextChecker.java index 92d9847a4d..17fd97482e 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2CanvasTextChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2CanvasTextChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2DestinationsChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2DestinationsChecker.java index 6f0be81842..41db9b4e6b 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2DestinationsChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2DestinationsChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2EmbeddedFilesChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2EmbeddedFilesChecker.java index 3966ae71c3..203423d181 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2EmbeddedFilesChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2EmbeddedFilesChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormChecker.java index 1f77ed19ec..eda5a9f77b 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormulaChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormulaChecker.java index 4886eb1514..63748f4baf 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormulaChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2FormulaChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2HeadingsChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2HeadingsChecker.java index 8d6f777602..f6afcfd4df 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2HeadingsChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2HeadingsChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2LinkChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2LinkChecker.java index 12a04c2f6c..ca7fa62501 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2LinkChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2LinkChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2ListChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2ListChecker.java index ea4e8fcf72..e939d1f711 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2ListChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2ListChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2NotesChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2NotesChecker.java index d0c37847ca..ce86ea618d 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2NotesChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2NotesChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2StringChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2StringChecker.java index 6194d2dcb3..4367ab648e 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2StringChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2StringChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2TableOfContentsChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2TableOfContentsChecker.java index d057965d33..e26bb98909 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2TableOfContentsChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2TableOfContentsChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2XfaChecker.java b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2XfaChecker.java index bf0e4fcc56..a4cd46955a 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2XfaChecker.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2XfaChecker.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAConformanceException.java b/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAConformanceException.java index 676b2c83e2..fcaae411b9 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAConformanceException.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAConformanceException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAExceptionMessageConstants.java b/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAExceptionMessageConstants.java index cdf8ff7e4e..7b8aa7a9a8 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAExceptionMessageConstants.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/exceptions/PdfUAExceptionMessageConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/main/java/com/itextpdf/pdfua/logs/PdfUALogMessageConstants.java b/pdfua/src/main/java/com/itextpdf/pdfua/logs/PdfUALogMessageConstants.java index 527da11034..ba0a652d73 100644 --- a/pdfua/src/main/java/com/itextpdf/pdfua/logs/PdfUALogMessageConstants.java +++ b/pdfua/src/main/java/com/itextpdf/pdfua/logs/PdfUALogMessageConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/sharpenconfig/java/com/itextpdf/pdfua/SharpenConfigMapping.java b/pdfua/src/sharpenconfig/java/com/itextpdf/pdfua/SharpenConfigMapping.java index 095616e408..822a2d4d91 100644 --- a/pdfua/src/sharpenconfig/java/com/itextpdf/pdfua/SharpenConfigMapping.java +++ b/pdfua/src/sharpenconfig/java/com/itextpdf/pdfua/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUA2TestPdfDocument.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUA2TestPdfDocument.java index b7ffdb7508..7e6fff7d9d 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUA2TestPdfDocument.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUA2TestPdfDocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAAnnotationsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAAnnotationsTest.java index 33eafce884..c799d6950d 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAAnnotationsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAAnnotationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUADocumentTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUADocumentTest.java index 7515980c65..eff03a626f 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUADocumentTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUADocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAFontsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAFontsTest.java index bcc6639287..f82e418f5f 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAFontsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAFontsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAMetadataUnitTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAMetadataUnitTest.java index a30582f472..f9368148d1 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAMetadataUnitTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUAMetadataUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATaggedGridContainerTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATaggedGridContainerTest.java index e77a76a3f3..21d96552ec 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATaggedGridContainerTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATaggedGridContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -140,7 +140,7 @@ public void simpleBackgroundTest(PdfUAConformance pdfUAConformance) throws IOExc document.add(new Paragraph("Validate Grid Container with Background")); GridContainer gridContainer0 = createGridBoxWithText(); - gridContainer0.setBackgroundColor(ColorConstants.RED); + gridContainer0.setBackgroundColor(ColorConstants.PINK); document.add(gridContainer0); }); framework.assertBothValid("background", pdfUAConformance); diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATestPdfDocument.java b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATestPdfDocument.java index 71c712e9cb..94e9f28004 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATestPdfDocument.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/PdfUATestPdfDocument.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/UaValidationTestFramework.java b/pdfua/src/test/java/com/itextpdf/pdfua/UaValidationTestFramework.java index 0e939e2448..7aa8d046c6 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/UaValidationTestFramework.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/UaValidationTestFramework.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2AnnotationTypesTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2AnnotationTypesTest.java index d36ce07e0a..823dfc2ff8 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2AnnotationTypesTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2AnnotationTypesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2LinkAnnotationTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2LinkAnnotationTest.java index 2fdde23265..4c2d400899 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2LinkAnnotationTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2LinkAnnotationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2RoleMappingTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2RoleMappingTest.java index 7e941162c5..e292d9d225 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2RoleMappingTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUA2RoleMappingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTest.java index 09483d2ee3..d4d1af998f 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -278,7 +278,7 @@ public void checkPoint_01_005_TextGlyphLineContentIsArtifact(PdfUAConformance pd .setFontAndSize(font, 12) .beginText() .moveText(200, 200) - .setColor(ColorConstants.RED, true) + .setColor(ColorConstants.BLUE, true) .showText(glyphLine) .endText() .closeTag() @@ -306,7 +306,7 @@ public void checkPoint_01_005_TextGlyphLineContentIsContentCorrect(PdfUAConforma .setFontAndSize(font, 12) .beginText() .moveText(200, 200) - .setColor(ColorConstants.RED, true) + .setColor(ColorConstants.BLUE, true) .showText(glyphLine) .endText() .closeTag() @@ -329,7 +329,7 @@ public void checkPoint_01_005_allowPureBmcInArtifact(PdfUAConformance pdfUAConfo .beginMarkedContent(PdfName.P) .beginText() .moveText(200, 200) - .setColor(ColorConstants.RED, true) + .setColor(ColorConstants.BLUE, true) .showText(glyphLine) .endMarkedContent() .endText() @@ -354,7 +354,7 @@ public void checkPoint_01_005_allowNestedPureBmcInArtifact(PdfUAConformance pdfU .openTag(new CanvasTag(PdfName.Artifact)) .beginText() .moveText(200, 200) - .setColor(ColorConstants.RED, true) + .setColor(ColorConstants.BLUE, true) .showText(glyphLine) .closeTag() .endMarkedContent() @@ -390,8 +390,11 @@ public void checkPoint_01_005_LineContentThatIsContentIsNotTagged_noContent(PdfU PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage()); canvas.setColor(ColorConstants.RED, true) .setLineWidth(2); + canvas.moveTo(0,0); canvas.lineTo(200, 200); + }); + framework.assertBothValid("lineContentThatIsContentIsNotTagged_noContent", pdfUAConformance); } @@ -423,6 +426,7 @@ public void checkPoint_01_005_LineContentThatIsContentIsTaggedButIsNotAnArtifact canvas.openTag(new CanvasTag(PdfName.P)) .setColor(ColorConstants.RED, true) .setLineWidth(2); + canvas.moveTo(0,0); canvas.lineTo(200, 200); canvas.lineTo(300, 200); diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTextTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTextTest.java index d850c72801..5e2dd3ae99 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTextTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasTextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasXObjectTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasXObjectTest.java index 6be41925ea..0e1952ab5a 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasXObjectTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUACanvasXObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUADestinationsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUADestinationsTest.java index aa783ee271..5b228da788 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUADestinationsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUADestinationsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEmbeddedFilesCheckTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEmbeddedFilesCheckTest.java index 5499a8b4e3..5806c1ae55 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEmbeddedFilesCheckTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEmbeddedFilesCheckTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEncryptionTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEncryptionTest.java index 02652d3858..fbef6e0b80 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEncryptionTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAEncryptionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormFieldsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormFieldsTest.java index c9cc00d16f..f39bc46c1f 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormFieldsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormFieldsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormulaTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormulaTest.java index a57acd1425..e6c0caed3c 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormulaTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAFormulaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAGraphicsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAGraphicsTest.java index b01daef2ed..785b16246a 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAGraphicsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAGraphicsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAHeadingsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAHeadingsTest.java index 58479b6e26..126eb74d34 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAHeadingsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAHeadingsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUALayoutTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUALayoutTest.java index 562b47b2c2..45fda9d694 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUALayoutTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUALayoutTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,17 +23,23 @@ This file is part of the iText (R) project. package com.itextpdf.pdfua.checkers; import com.itextpdf.io.font.PdfEncodings; +import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.colors.DeviceRgb; +import com.itextpdf.kernel.contrast.ColorContrastChecker; +import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.font.PdfFontFactory.EmbeddingStrategy; import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfUAConformance; +import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.CanvasTag; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.tagging.StandardRoles; +import com.itextpdf.kernel.validation.IValidationChecker; import com.itextpdf.layout.Document; import com.itextpdf.layout.borders.DottedBorder; import com.itextpdf.layout.element.Cell; @@ -41,14 +47,23 @@ This file is part of the iText (R) project. import com.itextpdf.layout.element.IBlockElement; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; +import com.itextpdf.pdfua.PdfUADocument; import com.itextpdf.pdfua.UaValidationTestFramework; +import com.itextpdf.test.AssertUtil; import com.itextpdf.test.ExtendedITextTest; import com.itextpdf.test.TestUtil; +import com.itextpdf.test.annotations.LogMessage; +import com.itextpdf.test.annotations.LogMessages; +import com.fasterxml.jackson.annotation.JsonTypeInfo.As; +import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -57,7 +72,7 @@ This file is part of the iText (R) project. public class PdfUALayoutTest extends ExtendedITextTest { private static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/pdfua/PdfUALayoutTest/"; private static final String FONT = "./src/test/resources/com/itextpdf/pdfua/font/FreeSans.ttf"; - + @BeforeAll public static void before() { createOrClearDestinationFolder(DESTINATION_FOLDER); @@ -68,12 +83,12 @@ public static List data() { } public static Object[] roleData() { - return new Object[]{ + return new Object[] { // Parent role, child role, expected exception - new Object[]{StandardRoles.FORM, StandardRoles.FORM, false}, - new Object[]{StandardRoles.H1, StandardRoles.H1, true}, - new Object[]{StandardRoles.P, StandardRoles.P, false}, - new Object[]{StandardRoles.DIV, StandardRoles.P, false}, + new Object[] {StandardRoles.FORM, StandardRoles.FORM, false}, + new Object[] {StandardRoles.H1, StandardRoles.H1, true}, + new Object[] {StandardRoles.P, StandardRoles.P, false}, + new Object[] {StandardRoles.DIV, StandardRoles.P, false}, }; } @@ -81,7 +96,7 @@ public static Object[] roleData() { @MethodSource("data") public void simpleParagraphTest(PdfUAConformance pdfUAConformance) throws IOException { UaValidationTestFramework framework = new UaValidationTestFramework(DESTINATION_FOLDER); - framework .addBeforeGenerationHook(pdfDoc -> { + framework.addBeforeGenerationHook(pdfDoc -> { PdfFont font = loadFont(); Document doc = new Document(pdfDoc); doc.add(new Paragraph("Simple layout PDF UA test").setFont(font)); @@ -93,7 +108,7 @@ public void simpleParagraphTest(PdfUAConformance pdfUAConformance) throws IOExce @MethodSource("data") public void simpleParagraphWithUnderlineTest(PdfUAConformance pdfUAConformance) throws IOException { UaValidationTestFramework framework = new UaValidationTestFramework(DESTINATION_FOLDER); - framework .addBeforeGenerationHook(pdfDoc -> { + framework.addBeforeGenerationHook(pdfDoc -> { PdfFont font = loadFont(); Document doc = new Document(pdfDoc); doc.add(new Paragraph("Simple layout PDF UA with underline test").setFont(font).setUnderline()); @@ -134,7 +149,7 @@ public IBlockElement generate() { @MethodSource("data") public void simpleBorderTest(PdfUAConformance pdfUAConformance) throws IOException { UaValidationTestFramework framework = new UaValidationTestFramework(DESTINATION_FOLDER); - framework .addBeforeGenerationHook(pdfDocument -> { + framework.addBeforeGenerationHook(pdfDocument -> { PdfPage page = pdfDocument.addNewPage(); PdfCanvas canvas = new PdfCanvas(page); @@ -149,11 +164,11 @@ public void simpleBorderTest(PdfUAConformance pdfUAConformance) throws IOExcepti @MethodSource("data") public void simpleTableTest(PdfUAConformance pdfUAConformance) throws IOException { UaValidationTestFramework framework = new UaValidationTestFramework(DESTINATION_FOLDER); - framework .addBeforeGenerationHook(pdfDocument -> { + framework.addBeforeGenerationHook(pdfDocument -> { Document doc = new Document(pdfDocument); PdfFont font = loadFont(); - Table table = new Table(new float[]{50, 50}) + Table table = new Table(new float[] {50, 50}) .addCell(new Cell().add(new Paragraph("cell 1, 1").setFont(font))) .addCell(new Cell().add(new Paragraph("cell 1, 2").setFont(font))); doc.add(table); @@ -161,6 +176,80 @@ public void simpleTableTest(PdfUAConformance pdfUAConformance) throws IOExceptio framework.assertBothValid("simpleTable", pdfUAConformance); } + + @ParameterizedTest + @MethodSource("data") + public void simpleParagraphBadContrastThrowsWcagAAAU(PdfUAConformance pdfUAConformance) throws IOException { + PdfDocument pdfDoc = new PdfUADocument(new PdfWriter(new ByteArrayOutputStream()), + new com.itextpdf.pdfua.PdfUAConfig(pdfUAConformance, "Hello", "en-US")) { + @Override + protected List createCheckers(PdfUAConformance uaConformance) { + ColorContrastChecker contrastChecker = new ColorContrastChecker(false, true); + contrastChecker.setCheckWcagAA(false); + List validationCheckers = new ArrayList<>(); + validationCheckers.add(contrastChecker); + return validationCheckers; + } + }; + PdfFont font = loadFont(); + Document doc = new Document(pdfDoc); + Paragraph p = new Paragraph("Simple layout PDF UA test").setFont(font); + p.setBackgroundColor(ColorConstants.RED); + doc.add(p); + Exception e = Assertions.assertThrows(PdfException.class, () -> { + pdfDoc.close(); + }); + Assertions.assertTrue(e.getMessage().contains("not WCAG AAA compliant")); + Assertions.assertTrue(e.getMessage().contains("has contrast ratio: 5")); + } + + @ParameterizedTest + @MethodSource("data") + public void simpleParagraphBadContrastThrowsWcagAA(PdfUAConformance pdfUAConformance) throws IOException { + PdfDocument pdfDoc = new PdfUADocument(new PdfWriter(new ByteArrayOutputStream()), + new com.itextpdf.pdfua.PdfUAConfig(pdfUAConformance, "Hello", "en-US")) { + @Override + protected List createCheckers(PdfUAConformance uaConformance) { + ColorContrastChecker contrastChecker = new ColorContrastChecker(false, true); + contrastChecker.setCheckWcagAAA(false); + contrastChecker.setCheckWcagAA(true); + List validationCheckers = new ArrayList<>(); + validationCheckers.add(contrastChecker); + return validationCheckers; + } + }; + PdfFont font = loadFont(); + Document doc = new Document(pdfDoc); + Paragraph p = new Paragraph("Simple layout PDF UA test").setFont(font); + p.setFontColor(ColorConstants.PINK); + p.setBackgroundColor(ColorConstants.RED); + doc.add(p); + Exception e = Assertions.assertThrows(PdfException.class, () -> { + pdfDoc.close(); + }); + Assertions.assertTrue(e.getMessage().contains("not WCAG AA compliant")); + Assertions.assertTrue(e.getMessage().contains("has contrast ratio: 2")); + } + + @ParameterizedTest + @MethodSource("data") + @LogMessages(messages = { + @LogMessage(messageTemplate = "Page 1: Text: 'Simple layout PDF UA test', with font size: {0} pt " + + "has contrast ratio: {1}. It is not WCAG AAA compliant. ", count = 2) + }) + public void simpleParagraphBadContrastLogsByDefaultTest(PdfUAConformance pdfUAConformance) throws IOException { + UaValidationTestFramework framework = new UaValidationTestFramework(DESTINATION_FOLDER); + framework.addBeforeGenerationHook(pdfDoc -> { + PdfFont font = loadFont(); + Document doc = new Document(pdfDoc); + Paragraph p = new Paragraph("Simple layout PDF UA test").setFont(font); + p.setBackgroundColor(ColorConstants.RED); + doc.add(p); + }); + framework.assertBothValid("simpleParagraphAbc", pdfUAConformance); + } + + private static PdfFont loadFont() { try { return PdfFontFactory.createFont(FONT, PdfEncodings.WINANSI, EmbeddingStrategy.FORCE_EMBEDDED); diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAListTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAListTest.java index 45f3f7e854..5d51171469 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAListTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAListTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUANotesTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUANotesTest.java index 54b9024e0a..e7ffd7c448 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUANotesTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUANotesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUARoleMappingTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUARoleMappingTest.java index b3730302f6..0161f96b65 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUARoleMappingTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUARoleMappingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAStringTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAStringTest.java index 8bf0aabd7e..29ad57011c 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAStringTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAStringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableOfContentsTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableOfContentsTest.java index f92ff86691..d405a8f50e 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableOfContentsTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableOfContentsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableTest.java index 6d14d8c966..ab4f48fb60 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATest.java index 17e4bbc6a4..6e55e31047 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUATest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAXfaTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAXfaTest.java index 66403be84e..32b40c6ea6 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAXfaTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/PdfUAXfaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtilTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtilTest.java index 091e430796..a9356f8824 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtilTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/AnnotationCheckUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -49,4 +49,4 @@ public void annotationHandler(){ assertTrue(handler.accept(new PdfMcrNumber(new PdfNumber(2), null))); AssertUtil.doesNotThrow(() -> handler.processElement(null)); } -} \ No newline at end of file +} diff --git a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationCheckerUnitTest.java b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationCheckerUnitTest.java index f54164d451..1bfca3fcd0 100644 --- a/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationCheckerUnitTest.java +++ b/pdfua/src/test/java/com/itextpdf/pdfua/checkers/utils/ua2/PdfUA2AnnotationCheckerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_copyPageAsFormWithCorrectFontXobjectWithUnTaggedPdf.pdf b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_copyPageAsFormWithCorrectFontXobjectWithUnTaggedPdf.pdf index 839b1a9e16..e4ffaf8da2 100644 Binary files a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_copyPageAsFormWithCorrectFontXobjectWithUnTaggedPdf.pdf and b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_copyPageAsFormWithCorrectFontXobjectWithUnTaggedPdf.pdf differ diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_manuallyAddToCanvasWithUnAndCorrectFontUnAndArtifactPdf.pdf b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_manuallyAddToCanvasWithUnAndCorrectFontUnAndArtifactPdf.pdf index 6ccc937230..dcd30b9043 100644 Binary files a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_manuallyAddToCanvasWithUnAndCorrectFontUnAndArtifactPdf.pdf and b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUACanvasXObjectTest/cmp_manuallyAddToCanvasWithUnAndCorrectFontUnAndArtifactPdf.pdf differ diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUAEncryptionTest/cmp_encryptWithPassword.pdf b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUAEncryptionTest/cmp_encryptWithPassword.pdf index 833aaa6131..20e5584bdc 100644 Binary files a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUAEncryptionTest/cmp_encryptWithPassword.pdf and b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUAEncryptionTest/cmp_encryptWithPassword.pdf differ diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUARoleMappingTest/cmp_standardMappingViaTagTreePointerTest.pdf b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUARoleMappingTest/cmp_standardMappingViaTagTreePointerTest.pdf index cdb3e75146..174b4e73a4 100644 Binary files a/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUARoleMappingTest/cmp_standardMappingViaTagTreePointerTest.pdf and b/pdfua/src/test/resources/com/itextpdf/pdfua/PdfUARoleMappingTest/cmp_standardMappingViaTagTreePointerTest.pdf differ diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/font/FreeSans.ttf b/pdfua/src/test/resources/com/itextpdf/pdfua/font/FreeSans.ttf index 4b06bd7822..6de62ebf67 100644 Binary files a/pdfua/src/test/resources/com/itextpdf/pdfua/font/FreeSans.ttf and b/pdfua/src/test/resources/com/itextpdf/pdfua/font/FreeSans.ttf differ diff --git a/kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/LICENSE-OFL-1.1.txt b/pdfua/src/test/resources/com/itextpdf/pdfua/font/LICENSE-OFL-1.1.txt similarity index 100% rename from kernel/src/test/resources/com/itextpdf/kernel/font/PdfType0FontTest/LICENSE-OFL-1.1.txt rename to pdfua/src/test/resources/com/itextpdf/pdfua/font/LICENSE-OFL-1.1.txt diff --git a/pdfua/src/test/resources/com/itextpdf/pdfua/font/NOTICE.txt b/pdfua/src/test/resources/com/itextpdf/pdfua/font/NOTICE.txt index 40639500c3..f773a84367 100644 --- a/pdfua/src/test/resources/com/itextpdf/pdfua/font/NOTICE.txt +++ b/pdfua/src/test/resources/com/itextpdf/pdfua/font/NOTICE.txt @@ -1,5 +1,7 @@ This software uses the following test resources under the following licenses: -| cmr10.afm | SIL OFL-1.1 | LICENSE-SIL-1.1.txt | https://www.ams.org/arc/resources/amsfonts-about.html (13.09.2023) -| cmr10.pfb | SIL OFL-1.1 | LICENSE-SIL-1.1.txt | https://www.ams.org/arc/resources/amsfonts-about.html (13.09.2023) -| FreeSans.ttf | GPL license | GNU General Public License.txt -| iTextFreeSansWithE001Glyph.ttf | GPL license | FreeSans font under license detailed in 'GNU General Public License.txt' file with the following modifications: E001 glyph was added at 05.05.2025 \ No newline at end of file + +cmr10.afm | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" (13.09.2023) +cmr10.pfb | OFL-1.1 | LICENSE_OFL-1.1.txt | Based on "https://www.ams.org/arc/resources/amsfonts-about.html" (13.09.2023) +FreeSans.ttf | GPL license | GNU General Public License.txt | Based on "https://savannah.gnu.org/projects/freefont" (28.01.2026) +FreeSans_changed_cmap.ttf | GPL license | Based on FreeSans font under license detailed in 'GNU General Public License.txt' file with the following modifications: the cmap table has been modified to not contain (3,1), (3,0), (1,0) 'cmap' subtables +iTextFreeSansWithE001Glyph.ttf | GPL license | Based on FreeSans font under license detailed in 'GNU General Public License.txt' file with the following modifications: E001 glyph was added at 05.05.2025 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1883b9ba79..1b2d7af086 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT pom iText @@ -92,11 +92,11 @@ https://docs.oracle.com/javase/8/docs/api/ 3.7.0 - 5.10.2 - 1.10.2 + 5.14.2 + 1.14.2 1.0.4 - 1.3.14 - 2.17.0 + 1.3.16 + 2.20.1 1.8 1.8 3.1.0 @@ -1062,6 +1062,14 @@ --initialize-at-build-time=org.junit.validator.PublicClassValidator --initialize-at-build-time=org.junit.platform.engine.TestTag + + --initialize-at-build-time=org.junit.jupiter.engine + --initialize-at-build-time=org.junit.platform.launcher + --initialize-at-build-time=org.junit.jupiter.engine.extension.TimeoutExtension + --initialize-at-build-time=org.junit.jupiter.engine.extension.RepeatedTestExtension + --initialize-at-build-time=org.junit.platform.commons.util.LruCache + --initialize-at-build-time=org.junit.jupiter.api.extension.ExtensionContext$Namespace + --initialize-at-run-time=org.bouncycastle.crypto.prng.SP800SecureRandom --initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV --initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG$Default @@ -1094,4 +1102,4 @@ - \ No newline at end of file + diff --git a/resources/graalvm/BouncyCastleFeature.java b/resources/graalvm/BouncyCastleFeature.java index 9a81629d57..69630bb572 100644 --- a/resources/graalvm/BouncyCastleFeature.java +++ b/resources/graalvm/BouncyCastleFeature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sharpenConfiguration.xml b/sharpenConfiguration.xml index d4cbb61181..897d17d7e4 100644 --- a/sharpenConfiguration.xml +++ b/sharpenConfiguration.xml @@ -165,6 +165,9 @@ + + + @@ -238,6 +241,7 @@ + @@ -313,6 +317,7 @@ + @@ -365,6 +370,7 @@ + @@ -472,9 +478,6 @@ - - - @@ -555,9 +558,6 @@ - - - @@ -743,6 +743,10 @@ + + + + diff --git a/sign/pom.xml b/sign/pom.xml index 47f8d3e862..798d6eee01 100644 --- a/sign/pom.xml +++ b/sign/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT sign @@ -22,11 +22,6 @@ - - com.fasterxml.jackson.core - jackson-databind - ${jackson.core.version} - com.itextpdf forms diff --git a/sign/src/main/java/com/itextpdf/signatures/AccessPermissions.java b/sign/src/main/java/com/itextpdf/signatures/AccessPermissions.java index 65a0427dba..71ff7a953d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/AccessPermissions.java +++ b/sign/src/main/java/com/itextpdf/signatures/AccessPermissions.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java b/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java index 1f53db8cb6..1766ccad2c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java +++ b/sign/src/main/java/com/itextpdf/signatures/BouncyCastleDigest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java b/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java index 1d90911f7c..0a17e6beb7 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/CRLVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java b/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java index 5b71ab3663..aa3fff5a6e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/CertificateInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java b/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java index 6e39099151..c488d83f62 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java +++ b/sign/src/main/java/com/itextpdf/signatures/CertificateUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java b/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java index b358e44aa7..665816e030 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java +++ b/sign/src/main/java/com/itextpdf/signatures/CertificateVerification.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java b/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java index 08efb6b4a6..62abf72083 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/CertificateVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java b/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java index a3a79f7097..658f0d7738 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java +++ b/sign/src/main/java/com/itextpdf/signatures/CrlClientOffline.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java b/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java index 7717d6a043..71db533f90 100644 --- a/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java +++ b/sign/src/main/java/com/itextpdf/signatures/CrlClientOnline.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -26,6 +26,8 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; import com.itextpdf.io.logs.IoLogMessageConstant; import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.io.resolver.resource.DefaultResourceRetriever; +import com.itextpdf.io.resolver.resource.IAdvancedResourceRetriever; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -57,7 +59,9 @@ public class CrlClientOnline implements ICrlClient { * The URLs of the CRLs. */ protected List urls = new ArrayList<>(); + @Deprecated private int connectionTimeout = -1; + private IAdvancedResourceRetriever resourceRetriever = new DefaultResourceRetriever(); /** * Creates a CrlClientOnline instance that will try to find @@ -168,12 +172,40 @@ public Collection getEncoded(X509Certificate checkCert, String url) thro /** * Sets the connection timeout for the http client + * * @param i the timeout in milliseconds, a negative number means using the system connection timeout + * + * @deprecated in favor of custom resource retriever */ + @Deprecated public void setConnectionTimeout(int i) { connectionTimeout = i; } + /** + * Sets a resource retriever for this CRL client. + *

+ * This method allows you to provide a custom implementation of {@link IAdvancedResourceRetriever} to be used + * for fetching CRL responses. By default, {@link DefaultResourceRetriever} is used. + * + * @param resourceRetriever the custom resource retriever to be used for fetching CRL responses + * + * @return the current instance of {@link CrlClientOnline} + */ + public CrlClientOnline withResourceRetriever(IAdvancedResourceRetriever resourceRetriever) { + this.resourceRetriever = resourceRetriever; + return this; + } + + /** + * Gets the resource retriever currently being used in this CRL client. + * + * @return resource retriever + */ + public IAdvancedResourceRetriever getResourceRetriever() { + return resourceRetriever; + } + /** * Get CRL response represented as {@link InputStream}. * @@ -185,7 +217,11 @@ public void setConnectionTimeout(int i) { * @throws IOException if an I/O error occurs */ protected InputStream getCrlResponse(X509Certificate cert, URL urlt) throws IOException { - return SignUtils.getHttpResponse(urlt, connectionTimeout); + if (connectionTimeout > 0 && resourceRetriever instanceof DefaultResourceRetriever) { + ((DefaultResourceRetriever) resourceRetriever).setConnectTimeout(connectionTimeout); + } + + return resourceRetriever.getInputStreamByUrl(urlt); } /** diff --git a/sign/src/main/java/com/itextpdf/signatures/DefaultIssuingCertificateRetriever.java b/sign/src/main/java/com/itextpdf/signatures/DefaultIssuingCertificateRetriever.java index 658ce26ba7..7b22b2fed3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/DefaultIssuingCertificateRetriever.java +++ b/sign/src/main/java/com/itextpdf/signatures/DefaultIssuingCertificateRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java b/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java index 2215db8ee4..012d21285e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java +++ b/sign/src/main/java/com/itextpdf/signatures/ExternalBlankSignatureContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IApplicableSignatureParams.java b/sign/src/main/java/com/itextpdf/signatures/IApplicableSignatureParams.java index c8d1178faa..d98eef0acc 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IApplicableSignatureParams.java +++ b/sign/src/main/java/com/itextpdf/signatures/IApplicableSignatureParams.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java b/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java index c012318382..4dbb8ac2a9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java +++ b/sign/src/main/java/com/itextpdf/signatures/ICrlClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java b/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java index ca97c474a7..2d0d9099f4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java +++ b/sign/src/main/java/com/itextpdf/signatures/IExternalDigest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java b/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java index 458c8034d5..b6be9c2796 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java +++ b/sign/src/main/java/com/itextpdf/signatures/IExternalSignature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java b/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java index ad379444b2..c7d779eeba 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java +++ b/sign/src/main/java/com/itextpdf/signatures/IExternalSignatureContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IIssuingCertificateRetriever.java b/sign/src/main/java/com/itextpdf/signatures/IIssuingCertificateRetriever.java index 8e314edee0..8f5a62812b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IIssuingCertificateRetriever.java +++ b/sign/src/main/java/com/itextpdf/signatures/IIssuingCertificateRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java b/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java index 5b619b765b..c1305483b2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java +++ b/sign/src/main/java/com/itextpdf/signatures/IOcspClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IOcspClientBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/IOcspClientBouncyCastle.java index 4d3928efa1..9ae670e8c5 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IOcspClientBouncyCastle.java +++ b/sign/src/main/java/com/itextpdf/signatures/IOcspClientBouncyCastle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ISignatureMechanismParams.java b/sign/src/main/java/com/itextpdf/signatures/ISignatureMechanismParams.java index 16129803e1..a9260cf88d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ISignatureMechanismParams.java +++ b/sign/src/main/java/com/itextpdf/signatures/ISignatureMechanismParams.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java b/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java index f789c3dcfc..fbac001ffc 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java +++ b/sign/src/main/java/com/itextpdf/signatures/ITSAClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java index 05e482af23..0abe3d2c30 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java +++ b/sign/src/main/java/com/itextpdf/signatures/ITSAInfoBouncyCastle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/IssuingCertificateRetriever.java b/sign/src/main/java/com/itextpdf/signatures/IssuingCertificateRetriever.java index 1a86135500..b4b4952c90 100644 --- a/sign/src/main/java/com/itextpdf/signatures/IssuingCertificateRetriever.java +++ b/sign/src/main/java/com/itextpdf/signatures/IssuingCertificateRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,14 +24,19 @@ This file is part of the iText (R) project. import com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator; import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; +import com.itextpdf.commons.bouncycastle.asn1.x500.IX500Name; +import com.itextpdf.commons.bouncycastle.asn1.x509.ISubjectPublicKeyInfo; import com.itextpdf.commons.bouncycastle.cert.ocsp.IBasicOCSPResp; +import com.itextpdf.io.resolver.resource.DefaultResourceRetriever; +import com.itextpdf.io.resolver.resource.IAdvancedResourceRetriever; +import com.itextpdf.kernel.crypto.DigestAlgorithms; import com.itextpdf.signatures.logs.SignLogMessageConstant; import com.itextpdf.signatures.validation.dataorigin.CertificateOrigin; import com.itextpdf.signatures.validation.dataorigin.RevocationDataOrigin; import com.itextpdf.signatures.validation.TrustedCertificatesStore; -import com.itextpdf.styledxmlparser.resolver.resource.DefaultResourceRetriever; -import com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever; +import java.io.ByteArrayInputStream; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; @@ -63,22 +68,29 @@ public class IssuingCertificateRetriever implements IIssuingCertificateRetriever private final TrustedCertificatesStore trustedCertificatesStore = new TrustedCertificatesStore(); private final Map> knownCertificates = new HashMap<>(); private final Map certificateOrigins = new HashMap<>(); - private final IResourceRetriever resourceRetriever; + @Deprecated + private final com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever resourceRetriever; + private IAdvancedResourceRetriever advancedResourceRetriever; /** * Creates {@link IssuingCertificateRetriever} instance. */ public IssuingCertificateRetriever() { - this.resourceRetriever = new DefaultResourceRetriever(); + this.resourceRetriever = null; + this.advancedResourceRetriever = new DefaultResourceRetriever(); } /** * Creates {@link IssuingCertificateRetriever} instance. * - * @param resourceRetriever an @{link IResourceRetriever} instance to use for performing http - * requests. + * @param resourceRetriever an @{link com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever} + * instance to use for performing http requests. + * + * @deprecated in favour of {@link #withResourceRetriever} */ - public IssuingCertificateRetriever(IResourceRetriever resourceRetriever) { + @Deprecated + public IssuingCertificateRetriever( + com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever resourceRetriever) { this.resourceRetriever = resourceRetriever; } @@ -125,6 +137,9 @@ public Certificate[] retrieveMissingCertificates(Certificate[] chain) { return fullChain.toArray(new Certificate[0]); } } + if (fullChain.contains(issuer)) { + return fullChain.toArray(new Certificate[0]); + } fullChain.add(issuer); } lastAddedCert = (X509Certificate) fullChain.get(fullChain.size() - 1); @@ -163,9 +178,33 @@ public List buildCertificateChains(X509Certificate[] certific return result; } + /** + * Sets a resource retriever for this CA issuer certificates retriever. + *

+ * This method allows you to provide a custom implementation of {@link IAdvancedResourceRetriever} to be used + * for fetching CA issuer certificates. By default, {@link DefaultResourceRetriever} is used. + * + * @param resourceRetriever the custom resource retriever to be used for fetching CA issuer certificates + * + * @return the current instance of {@link IssuingCertificateRetriever} + */ + public IssuingCertificateRetriever withResourceRetriever(IAdvancedResourceRetriever resourceRetriever) { + advancedResourceRetriever = resourceRetriever; + return this; + } + + /** + * Gets the resource retriever currently being used in this CA issuer certificates retriever. + * + * @return resource retriever + */ + public IAdvancedResourceRetriever getResourceRetriever() { + return advancedResourceRetriever; + } + private List> buildCertificateChainsList(X509Certificate[] certificates) { List> allChains = - new ArrayList<>(buildCertificateChainsList(certificates[certificates.length - 1])); + new ArrayList<>(buildCertificateChainsList(certificates[certificates.length - 1], null)); for (List issuerChain : allChains) { for (int i = certificates.length - 2; i >= 0; --i) { issuerChain.add(certificates[i]); @@ -174,7 +213,19 @@ private List> buildCertificateChainsList(X509Certificate[] return allChains; } - private List> buildCertificateChainsList(X509Certificate certificate) { + private List> buildCertificateChainsList(X509Certificate certificate, + HashSet prevProcessed) { + HashSet processed; + if (prevProcessed == null) { + processed = new HashSet(); + } else { + processed = prevProcessed; + } + if (!processed.add(certificate)) { + //certificate is already being processed + return new ArrayList<>(); + } + if (CertificateUtil.isSelfSigned(certificate)) { List> singleChain = new ArrayList<>(); List chain = new ArrayList<>(); @@ -204,7 +255,8 @@ private List> buildCertificateChainsList(X509Certificate c return singleChain; } for (Certificate possibleIssuer : possibleIssuers) { - List> issuerChains = buildCertificateChainsList((X509Certificate) possibleIssuer); + List> issuerChains = + buildCertificateChainsList((X509Certificate) possibleIssuer, processed); for (List issuerChain : issuerChains) { issuerChain.add(certificate); allChains.add(issuerChain); @@ -239,10 +291,6 @@ public List retrieveIssuerCertificate(Certificate certificate) * @return retrieved OCSP responder candidates or an empty set in case none were found. */ public Set retrieveOCSPResponderByNameCertificate(IBasicOCSPResp ocspResp) { - - String name = FACTORY.createX500Name(FACTORY.createASN1Sequence( - ocspResp.getResponderId().toASN1Primitive().getName().toASN1Primitive())).getName(); - // Look for the existence of an Authorized OCSP responder inside the cert chain in the ocsp response. Iterable certs = SignUtils.getCertsFromOcspResponse(ocspResp); List certList = new ArrayList<>(); @@ -250,20 +298,27 @@ public Set retrieveOCSPResponderByNameCertificate(IBasicOCSPResp oc certList.add(certificate); } addKnownCertificates(certList, CertificateOrigin.OCSP_RESPONSE); - for (X509Certificate cert : certs) { - try { - if (name.equals(cert.getSubjectX500Principal().getName())) { - return Collections.singleton(cert); - } - } catch (Exception ignored) { - // Ignore. - } + IX500Name x500Name = ocspResp.getResponderId().toASN1Primitive().getName(); + Set responders = null; + if (!x500Name.isNull()) { + responders = retrieveOCSPResponderByName(certs, x500Name); + } + if (responders == null) { + byte[] keyHash = ocspResp.getResponderId().toASN1Primitive().getKeyHash(); + responders = retrieveOCSPResponderByKeyHash(certs, keyHash); } // Certificate chain is not present in the response, or it does not contain the responder. - return trustedCertificatesStore.getKnownCertificates(name); + if (responders == null) { + if (x500Name.isNull()) { + responders = Collections.emptySet(); + } else { + responders = trustedCertificatesStore.getKnownCertificates( + FACTORY.createX500Name(FACTORY.createASN1Sequence(x500Name.toASN1Primitive())).getName()); + } + } + return responders; } - /** * {@inheritDoc} * @@ -422,7 +477,11 @@ public boolean isCertificateTrusted(Certificate certificate) { * @throws IOException if an I/O error occurs. */ protected InputStream getIssuerCertByURI(String uri) throws IOException { - return resourceRetriever.getInputStreamByUrl(new URL(uri)); + if (advancedResourceRetriever == null) { + return resourceRetriever.getInputStreamByUrl(new URL(uri)); + } else { + return advancedResourceRetriever.getInputStreamByUrl(new URL(uri)); + } } /** @@ -438,6 +497,39 @@ protected Collection parseCertificates(InputStream certsData) throw return SignUtils.readAllCerts(certsData, null); } + private static Set retrieveOCSPResponderByKeyHash(Iterable certs, byte[] keyHash) { + for (X509Certificate cert : certs) { + try { + ISubjectPublicKeyInfo publicKeyInfo = FACTORY.createSubjectPublicKeyInfo(cert.getPublicKey()); + // According to RFC2560 hash algorithm is always SHA-1. + byte[] publicKeyHash = DigestAlgorithms.digest( + new ByteArrayInputStream(publicKeyInfo.getPublicKeyData().getBytes()), + DigestAlgorithms.getMessageDigest(DigestAlgorithms.SHA1, FACTORY.getProviderName())); + + if (Arrays.equals(publicKeyHash, keyHash)) { + return Collections.singleton(cert); + } + } catch (Exception ignored) { + // Ignore. + } + } + return null; + } + + private static Set retrieveOCSPResponderByName(Iterable certs, IX500Name x500Name) { + String name = FACTORY.createX500Name(FACTORY.createASN1Sequence(x500Name.toASN1Primitive())).getName(); + for (X509Certificate cert : certs) { + try { + if (name.equals(cert.getSubjectX500Principal().getName())) { + return Collections.singleton(cert); + } + } catch (Exception ignored) { + // Ignore. + } + } + return null; + } + private Collection processCertificatesFromAIA(String url) { if (url == null) { // We don't have any URIs to the issuer certificates in AuthorityInfoAccess extension diff --git a/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java b/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java index 77a28332b3..764f1fd72b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java +++ b/sign/src/main/java/com/itextpdf/signatures/KeyStoreUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java b/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java index b82e3794b3..130943f90e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java +++ b/sign/src/main/java/com/itextpdf/signatures/LtvVerification.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -238,6 +238,8 @@ public boolean addVerification(String signatureName, IOcspClient ocsp, ICrlClien if (used) { throw new IllegalStateException(SignExceptionMessageConstant.VERIFICATION_ALREADY_OUTPUT); } + + checkSignatureExists(signatureName); PdfPKCS7 pk = sgnUtil.readSignatureData(signatureName, securityProviderCode); LOGGER.info("Adding verification for " + signatureName); Certificate[] certificateChain = pk.getCertificates(); @@ -286,6 +288,8 @@ public boolean addVerification(String signatureName, Collection ocsps, C if (used) { throw new IllegalStateException(SignExceptionMessageConstant.VERIFICATION_ALREADY_OUTPUT); } + + checkSignatureExists(signatureName); ValidationData vd = new ValidationData(); if (ocsps != null) { for (byte[] ocsp : ocsps) { @@ -365,6 +369,14 @@ X509Certificate getParent(X509Certificate cert, Certificate[] certs) { return null; } + private void checkSignatureExists(String signatureName) { + PdfSignature sig = sgnUtil.getSignature(signatureName); + if (sig == null) { + throw new PdfException(MessageFormatUtil.format(SignExceptionMessageConstant.NO_SIGNATURE_WITH_THAT_NAME, + signatureName)); + } + } + private void addRevocationDataForChain(X509Certificate signingCert, Certificate[] certChain, IOcspClient ocsp, ICrlClient crl, Level level, CertificateInclusion certInclude, CertificateOption certOption, ValidationData validationData, Set processedCerts) diff --git a/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java b/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java index 86118ece96..94ec8450f3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/LtvVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java b/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java index c274b81dc1..90a553588c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/OCSPVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java index 38241e0aba..eced6583f7 100644 --- a/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java +++ b/sign/src/main/java/com/itextpdf/signatures/OcspClientBouncyCastle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -33,7 +33,11 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.cert.ocsp.ISingleResp; import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.io.logs.IoLogMessageConstant; +import com.itextpdf.io.resolver.resource.DefaultResourceRetriever; +import com.itextpdf.io.resolver.resource.IAdvancedResourceRetriever; import com.itextpdf.io.util.StreamUtil; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; import java.io.IOException; import java.io.InputStream; @@ -42,6 +46,8 @@ This file is part of the iText (R) project. import java.security.GeneralSecurityException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; +import java.util.HashMap; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,6 +63,8 @@ public class OcspClientBouncyCastle implements IOcspClientBouncyCastle { */ private static final Logger LOGGER = LoggerFactory.getLogger(OcspClientBouncyCastle.class); + private IAdvancedResourceRetriever resourceRetriever = new DefaultResourceRetriever(); + /** * Creates new {@link OcspClientBouncyCastle} instance. */ @@ -113,6 +121,29 @@ public byte[] getEncoded(X509Certificate checkCert, X509Certificate rootCert, St return null; } + /** + * Sets a resource retriever for this OCSP client. + *

+ * This method allows you to provide a custom implementation of {@link IAdvancedResourceRetriever} to be used + * for fetching OCSP responses. By default, {@link DefaultResourceRetriever} is used. + * + * @param resourceRetriever the custom resource retriever to be used for fetching OCSP responses + * + * @return the current instance of {@link OcspClientBouncyCastle} + */ + public OcspClientBouncyCastle withResourceRetriever(IAdvancedResourceRetriever resourceRetriever) { + this.resourceRetriever = resourceRetriever; + return this; + } + + /** + * Gets the resource retriever currently being used in this OCSP client. + * + * @return resource retriever + */ + public IAdvancedResourceRetriever getResourceRetriever() { + return resourceRetriever; + } /** * Generates an OCSP request using BouncyCastle. @@ -161,6 +192,38 @@ protected static ICertificateStatus getCertificateStatus(byte[] basicOcspRespByt return null; } + /** + * Create OCSP request and get the response for this request, represented as {@link InputStream}. + * + * @param checkCert {@link X509Certificate} certificate to get OCSP response for + * @param rootCert {@link X509Certificate} root certificate from which OCSP request will be built + * @param url {@link URL} link, which is expected to be used to get OCSP response from + * + * @return OCSP response bytes, represented as {@link InputStream} + * + * @throws IOException if an I/O error occurs + * @throws AbstractOperatorCreationException is thrown if any errors occur while handling OCSP requests/responses + * @throws AbstractOCSPException is thrown if any errors occur while handling OCSP requests/responses + * @throws CertificateEncodingException is thrown if any errors occur while handling OCSP requests/responses + */ + protected InputStream createRequestAndResponse(X509Certificate checkCert, X509Certificate rootCert, String url) + throws IOException, AbstractOperatorCreationException, AbstractOCSPException, CertificateEncodingException { + LOGGER.info("Getting OCSP from " + url); + IOCSPReq request = generateOCSPRequest(rootCert, checkCert.getSerialNumber()); + byte[] array = request.getEncoded(); + URL urlt = new URL(url); + + Map headers = new HashMap<>(); + headers.put("Content-Type", "application/ocsp-request"); + headers.put("Accept", "application/ocsp-response"); + + try { + return resourceRetriever.get(urlt, array, headers); + } catch (com.itextpdf.io.exceptions.IOException e) { + throw new PdfException(SignExceptionMessageConstant.INVALID_HTTP_RESPONSE).setMessageParams(e.getMessage()); + } + } + /** * Gets an OCSP response object using BouncyCastle. * @@ -190,27 +253,4 @@ IOCSPResp getOcspResponse(X509Certificate checkCert, X509Certificate rootCert, S InputStream in = createRequestAndResponse(checkCert, rootCert, url); return in == null ? null : BOUNCY_CASTLE_FACTORY.createOCSPResp(StreamUtil.inputStreamToArray(in)); } - - /** - * Create OCSP request and get the response for this request, represented as {@link InputStream}. - * - * @param checkCert {@link X509Certificate} certificate to get OCSP response for - * @param rootCert {@link X509Certificate} root certificate from which OCSP request will be built - * @param url {@link URL} link, which is expected to be used to get OCSP response from - * - * @return OCSP response bytes, represented as {@link InputStream} - * - * @throws IOException if an I/O error occurs - * @throws AbstractOperatorCreationException is thrown if any errors occur while handling OCSP requests/responses - * @throws AbstractOCSPException is thrown if any errors occur while handling OCSP requests/responses - * @throws CertificateEncodingException is thrown if any errors occur while handling OCSP requests/responses - */ - protected InputStream createRequestAndResponse(X509Certificate checkCert, X509Certificate rootCert, String url) - throws IOException, AbstractOperatorCreationException, AbstractOCSPException, CertificateEncodingException { - LOGGER.info("Getting OCSP from " + url); - IOCSPReq request = generateOCSPRequest(rootCert, checkCert.getSerialNumber()); - byte[] array = request.getEncoded(); - URL urlt = new URL(url); - return SignUtils.getHttpResponseForOcspRequest(array, urlt); - } } diff --git a/sign/src/main/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainer.java b/sign/src/main/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainer.java index 1aee7ff550..9cc4cc3932 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainer.java +++ b/sign/src/main/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PadesTwoPhaseSigningHelper.java b/sign/src/main/java/com/itextpdf/signatures/PadesTwoPhaseSigningHelper.java index 9905770080..9c5c003259 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PadesTwoPhaseSigningHelper.java +++ b/sign/src/main/java/com/itextpdf/signatures/PadesTwoPhaseSigningHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfDSS.java b/sign/src/main/java/com/itextpdf/signatures/PdfDSS.java index 3335bc32f5..c69d516c0b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfDSS.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfDSS.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java b/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java index 696fc54750..1eeaae8a58 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfPKCS7.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfPadesSigner.java b/sign/src/main/java/com/itextpdf/signatures/PdfPadesSigner.java index 13b7de54a9..abf2dfea95 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfPadesSigner.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfPadesSigner.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java index 58f15043ef..46326ac454 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java index bdbca3cfb2..74b46cefd4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureApp.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java index fe728cbe99..eb910d3e82 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfSignatureBuildProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java b/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java index af5b71c748..880c52522e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfSigner.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PdfTwoPhaseSigner.java b/sign/src/main/java/com/itextpdf/signatures/PdfTwoPhaseSigner.java index 6f84e122ce..4a8e7d978b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PdfTwoPhaseSigner.java +++ b/sign/src/main/java/com/itextpdf/signatures/PdfTwoPhaseSigner.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java b/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java index ed53a113b0..a635e7bfda 100644 --- a/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java +++ b/sign/src/main/java/com/itextpdf/signatures/PrivateKeySignature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java b/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java index 728a8ec4fa..3a0ff48342 100644 --- a/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java +++ b/sign/src/main/java/com/itextpdf/signatures/ProviderDigest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/RSASSAPSSMechanismParams.java b/sign/src/main/java/com/itextpdf/signatures/RSASSAPSSMechanismParams.java index 7e81c4fb91..ce25770723 100644 --- a/sign/src/main/java/com/itextpdf/signatures/RSASSAPSSMechanismParams.java +++ b/sign/src/main/java/com/itextpdf/signatures/RSASSAPSSMechanismParams.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java b/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java index d3c282bc44..1835bc744e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/RootStoreVerifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignJsonSerializerHelper.java b/sign/src/main/java/com/itextpdf/signatures/SignJsonSerializerHelper.java new file mode 100644 index 0000000000..f9ebaa3ce7 --- /dev/null +++ b/sign/src/main/java/com/itextpdf/signatures/SignJsonSerializerHelper.java @@ -0,0 +1,261 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures; + +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonNull; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.commons.utils.EncodingUtil; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.signatures.validation.lotl.criteria.CertSubjectDNAttributeCriteria; +import com.itextpdf.signatures.validation.lotl.criteria.Criteria; +import com.itextpdf.signatures.validation.lotl.criteria.CriteriaList; +import com.itextpdf.signatures.validation.lotl.criteria.ExtendedKeyUsageCriteria; +import com.itextpdf.signatures.validation.lotl.criteria.KeyUsageCriteria; +import com.itextpdf.signatures.validation.lotl.criteria.PolicySetCriteria; + +import java.io.ByteArrayInputStream; +import java.security.cert.Certificate; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Helper class for JSON AST serialization/deserialization. + */ +public final class SignJsonSerializerHelper { + private static final String JSON_KEY_BASE64_ENCODED = "base64Encoded"; + private static final String JSON_KEY_CRITERIA_LIST = "criteriaList"; + private static final String JSON_KEY_CRITERIAS = "criterias"; + private static final String JSON_KEY_CRITERIA_ASSERT_VALUE = "criteriaAssertValue"; + private static final String JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA = "certSubjectDNAttributeCriteria"; + private static final String JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS = "requiredAttributeIDs"; + private static final String JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA = "extendedKeyUsageCriteria"; + private static final String JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES = "requiredExtendedKeyUsages"; + private static final String JSON_KEY_CRITERIA_POLICY_SET_CRITERIA = "policySetCriteria"; + private static final String JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS = "requiredPolicyIDs"; + private static final String JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA = "keyUsageCriteria"; + private static final String JSON_KEY_CRITERIA_KEY_USAGE_BITS = "requiredKeyUsageBits"; + + private SignJsonSerializerHelper() { + // Empty. + } + + /** + * Serializes {@link Certificate} object to JSON AST. + * + * @param certificate {@link Certificate} object to serialize + * + * @return serialized certificate as JSON AST + */ + public static JsonValue serializeCertificate(Certificate certificate) { + if (certificate == null) { + return JsonNull.JSON_NULL; + } + byte[] encoded; + try { + encoded = certificate.getEncoded(); + } catch (Exception e) { + throw new PdfException(e); + } + String base64Encoded = EncodingUtil.toBase64(encoded); + JsonObject certificateJson = new JsonObject(); + certificateJson.add(JSON_KEY_BASE64_ENCODED, new JsonString(base64Encoded)); + return certificateJson; + } + + /** + * Deserializes JSON AST object into certificate. + * + * @param certificateJson {@link JsonValue} JSON AST to deserialize + * + * @return {@link X509Certificate} deserialized certificate + */ + public static X509Certificate deserializeCertificate(JsonValue certificateJson) { + if (certificateJson == JsonNull.JSON_NULL) { + return null; + } + String base64Encoded = ((JsonString) ((JsonObject) certificateJson).getField(JSON_KEY_BASE64_ENCODED)) + .getValue(); + byte[] decoded = EncodingUtil.fromBase64(base64Encoded); + try { + return (X509Certificate) CertificateUtil.generateCertificate(new ByteArrayInputStream(decoded)); + } catch (Exception e) { + throw new PdfException(e); + } + } + + /** + * Serializes {@link CriteriaList} object to JSON AST. + * + * @param criteriaList {@link CriteriaList} to serialize + * + * @return serialized {@link CriteriaList} as JSON AST + */ + public static JsonValue serializeCriteriaList(CriteriaList criteriaList) { + JsonObject criteriaListJson = new JsonObject(); + criteriaListJson.add(JSON_KEY_CRITERIA_ASSERT_VALUE, + new JsonString(criteriaList.getAssertValue())); + + JsonArray criteriasJson = new JsonArray(); + for (Criteria criteria : criteriaList.getCriteriaList()) { + if (criteria instanceof CriteriaList) { + JsonObject innerCriteriaListJson = new JsonObject(); + innerCriteriaListJson.add(JSON_KEY_CRITERIA_LIST, + serializeCriteriaList((CriteriaList) criteria)); + criteriasJson.add(innerCriteriaListJson); + } else if (criteria instanceof CertSubjectDNAttributeCriteria) { + JsonObject certSubjectDNAttributeCriteriaJson = new JsonObject(); + JsonObject criteriaRequiredAttributeIdsJson = new JsonObject(); + criteriaRequiredAttributeIdsJson.add(JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS, + new JsonArray(((CertSubjectDNAttributeCriteria) criteria).getRequiredAttributeIds().stream() + .map(requiredAttributeId -> (JsonValue) new JsonString(requiredAttributeId)) + .collect(Collectors.toList()))); + certSubjectDNAttributeCriteriaJson.add(JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA, + criteriaRequiredAttributeIdsJson); + criteriasJson.add(certSubjectDNAttributeCriteriaJson); + } else if (criteria instanceof ExtendedKeyUsageCriteria) { + JsonObject extendedKeyUsageCriteriaJson = new JsonObject(); + JsonObject criteriaRequiredExtendedKeyUsageJson = new JsonObject(); + criteriaRequiredExtendedKeyUsageJson.add(JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES, + new JsonArray(((ExtendedKeyUsageCriteria) criteria).getRequiredExtendedKeyUsages().stream() + .map(requiredExtendedKeyUsage -> (JsonValue) new JsonString(requiredExtendedKeyUsage)) + .collect(Collectors.toList()))); + extendedKeyUsageCriteriaJson.add(JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA, + criteriaRequiredExtendedKeyUsageJson); + criteriasJson.add(extendedKeyUsageCriteriaJson); + } else if (criteria instanceof KeyUsageCriteria) { + List keyUsages = new ArrayList<>(); + for (Boolean keyUsage : ((KeyUsageCriteria) criteria).getKeyUsageBits()) { + if (keyUsage == null) { + keyUsages.add("null"); + } else { + keyUsages.add((boolean) keyUsage ? "true" : "false"); + } + } + + JsonObject keyUsageCriteriaJson = new JsonObject(); + JsonObject criteriaRequiredKeyUsageJson = new JsonObject(); + criteriaRequiredKeyUsageJson.add(JSON_KEY_CRITERIA_KEY_USAGE_BITS, + new JsonArray(keyUsages.stream().map( + requiredExtendedKeyUsage -> (JsonValue) new JsonString(requiredExtendedKeyUsage)) + .collect(Collectors.toList()))); + keyUsageCriteriaJson.add(JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA, + criteriaRequiredKeyUsageJson); + criteriasJson.add(keyUsageCriteriaJson); + } else if (criteria instanceof PolicySetCriteria) { + JsonObject policySetCriteriaJson = new JsonObject(); + JsonObject criteriaRequiredPolicyIdsJson = new JsonObject(); + criteriaRequiredPolicyIdsJson.add(JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS, + new JsonArray(((PolicySetCriteria) criteria).getRequiredPolicyIds().stream() + .map(requiredPolicyId -> (JsonValue) new JsonString(requiredPolicyId)) + .collect(Collectors.toList()))); + policySetCriteriaJson.add(JSON_KEY_CRITERIA_POLICY_SET_CRITERIA, + criteriaRequiredPolicyIdsJson); + criteriasJson.add(policySetCriteriaJson); + } + } + criteriaListJson.add(JSON_KEY_CRITERIAS, criteriasJson); + return criteriaListJson; + } + + /** + * Deserializes JSON AST object in {@link CriteriaList}. + * + * @param criteriaListJson {@link JsonObject} to create {@link CriteriaList} from + * + * @return deserialized {@link CriteriaList} + */ + public static CriteriaList deserializeCriteriaList(JsonObject criteriaListJson) { + JsonString assertValueJson = (JsonString) criteriaListJson.getField(JSON_KEY_CRITERIA_ASSERT_VALUE); + + CriteriaList criteriaList = new CriteriaList(assertValueJson.getValue()); + + JsonArray criteriasJson = (JsonArray) criteriaListJson.getField(JSON_KEY_CRITERIAS); + + for (JsonValue criteriaJson : criteriasJson.getValues()) { + JsonObject criteriaJsonObject = (JsonObject) criteriaJson; + if (criteriaJsonObject.getField(JSON_KEY_CRITERIA_LIST) != null) { + Criteria innerCriteriaList = deserializeCriteriaList( + (JsonObject) criteriaJsonObject.getField(JSON_KEY_CRITERIA_LIST)); + criteriaList.addCriteria(innerCriteriaList); + continue; + } + + if (criteriaJsonObject.getField(JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA) != null) { + CertSubjectDNAttributeCriteria criteriaFromJson = new CertSubjectDNAttributeCriteria(); + JsonArray requiredAttributeIDsJson = (JsonArray) ((JsonObject) criteriaJsonObject.getField( + JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA)) + .getField(JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS); + for (JsonValue attributeIDJson : requiredAttributeIDsJson.getValues()) { + criteriaFromJson.addRequiredAttributeId(((JsonString) attributeIDJson).getValue()); + } + criteriaList.addCriteria(criteriaFromJson); + continue; + } + + if (criteriaJsonObject.getField(JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA) != null) { + ExtendedKeyUsageCriteria criteriaFromJson = new ExtendedKeyUsageCriteria(); + JsonArray requiredExtendedKeyUsagesJson = (JsonArray) ((JsonObject) criteriaJsonObject.getField( + JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA)) + .getField(JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES); + for (JsonValue extendedKeyUsageJson : requiredExtendedKeyUsagesJson.getValues()) { + criteriaFromJson.addRequiredExtendedKeyUsage(((JsonString) extendedKeyUsageJson).getValue()); + } + criteriaList.addCriteria(criteriaFromJson); + continue; + } + + if (criteriaJsonObject.getField(JSON_KEY_CRITERIA_POLICY_SET_CRITERIA) != null) { + PolicySetCriteria criteriaFromJson = new PolicySetCriteria(); + JsonArray requiredPolicyIDsJson = (JsonArray) ((JsonObject) criteriaJsonObject.getField( + JSON_KEY_CRITERIA_POLICY_SET_CRITERIA)) + .getField(JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS); + for (JsonValue policyIdJson : requiredPolicyIDsJson.getValues()) { + criteriaFromJson.addRequiredPolicyId(((JsonString) policyIdJson).getValue()); + } + criteriaList.addCriteria(criteriaFromJson); + continue; + } + + if (criteriaJsonObject.getField(JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA) != null) { + KeyUsageCriteria criteriaFromJson = new KeyUsageCriteria(); + JsonArray requiredKeyUsageBitsJson = (JsonArray) ((JsonObject) criteriaJsonObject.getField( + JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA)) + .getField(JSON_KEY_CRITERIA_KEY_USAGE_BITS); + int counter = 0; + for (JsonValue keyUsageBitsJson : requiredKeyUsageBitsJson.getValues()) { + String text = ((JsonString) keyUsageBitsJson).getValue(); + criteriaFromJson.getKeyUsageBits()[counter] = + "null".equals(text) ? null : (Boolean) "true".equals(text); + counter++; + } + criteriaList.addCriteria(criteriaFromJson); + } + } + return criteriaList; + } +} diff --git a/sign/src/main/java/com/itextpdf/signatures/SignMetaInfo.java b/sign/src/main/java/com/itextpdf/signatures/SignMetaInfo.java index e02db0104f..ef95cc2d27 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignMetaInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignMetaInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignUtils.java b/sign/src/main/java/com/itextpdf/signatures/SignUtils.java index efb514640e..07117c99a9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignUtils.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -132,23 +132,6 @@ static MessageDigest getMessageDigest(String hashAlgorithm, IExternalDigest exte return externalDigest.getMessageDigest(hashAlgorithm); } - static InputStream getHttpResponse(URL urlt) throws IOException { - return getHttpResponse(urlt, -1); - } - - static InputStream getHttpResponse(URL urlt, int connectionTimeout) throws IOException { - HttpURLConnection con = (HttpURLConnection) urlt.openConnection(); - if (connectionTimeout >= 0) { - con.setConnectTimeout(connectionTimeout); - } - if (con.getResponseCode() / 100 != 2) { - throw new PdfException(SignExceptionMessageConstant.INVALID_HTTP_RESPONSE) - .setMessageParams(con.getResponseCode()); - } - return (InputStream) con.getContent(); - } - - static ICertificateID generateCertificateId(X509Certificate issuerCert, BigInteger serialNumber, IAlgorithmIdentifier digestAlgorithmIdentifier) throws AbstractOperatorCreationException, CertificateEncodingException, AbstractOCSPException { @@ -179,24 +162,6 @@ static IOCSPReq generateOcspRequestWithNonce(ICertificateID id) throws IOExcepti return gen.build(); } - static InputStream getHttpResponseForOcspRequest(byte[] request, URL urlt) throws IOException { - HttpURLConnection con = (HttpURLConnection) urlt.openConnection(); - con.setRequestProperty("Content-Type", "application/ocsp-request"); - con.setRequestProperty("Accept", "application/ocsp-response"); - con.setDoOutput(true); - OutputStream out = con.getOutputStream(); - DataOutputStream dataOut = new DataOutputStream(new BufferedOutputStream(out)); - dataOut.write(request); - dataOut.flush(); - dataOut.close(); - if (con.getResponseCode() / 100 != 2) { - throw new PdfException(SignExceptionMessageConstant.INVALID_HTTP_RESPONSE) - .setMessageParams(con.getResponseCode()); - } - //Get Response - return (InputStream) con.getContent(); - } - static boolean isSignatureValid(IBasicOCSPResp validator, Certificate certStoreX509, String provider) throws AbstractOperatorCreationException, AbstractOCSPException { if (provider == null) { diff --git a/sign/src/main/java/com/itextpdf/signatures/SignatureMechanisms.java b/sign/src/main/java/com/itextpdf/signatures/SignatureMechanisms.java index 1638e8894f..b67b9949a7 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignatureMechanisms.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignatureMechanisms.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java b/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java index 63ade1f872..2046bd853d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignaturePermissions.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java b/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java index 6a48117263..0277671523 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignaturePolicyInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java b/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java index 29c99e0f1f..75ac4c0729 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignatureUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/SignerProperties.java b/sign/src/main/java/com/itextpdf/signatures/SignerProperties.java index bf37c5117e..dddc64c247 100644 --- a/sign/src/main/java/com/itextpdf/signatures/SignerProperties.java +++ b/sign/src/main/java/com/itextpdf/signatures/SignerProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java b/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java index 5d0cf684c4..25357e408d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java +++ b/sign/src/main/java/com/itextpdf/signatures/TSAClientBouncyCastle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java b/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java index dab0818836..22fa6cfbea 100644 --- a/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java +++ b/sign/src/main/java/com/itextpdf/signatures/TimestampConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/VerificationException.java b/sign/src/main/java/com/itextpdf/signatures/VerificationException.java index e1e96cce1b..539063116a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/VerificationException.java +++ b/sign/src/main/java/com/itextpdf/signatures/VerificationException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java b/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java index 6886690db8..f8e0b8a682 100644 --- a/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java +++ b/sign/src/main/java/com/itextpdf/signatures/VerificationOK.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/cms/AlgorithmIdentifier.java b/sign/src/main/java/com/itextpdf/signatures/cms/AlgorithmIdentifier.java index e8ddd9364c..e7f826c976 100644 --- a/sign/src/main/java/com/itextpdf/signatures/cms/AlgorithmIdentifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/cms/AlgorithmIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/cms/CMSContainer.java b/sign/src/main/java/com/itextpdf/signatures/cms/CMSContainer.java index b6a72f1757..8777fcf2e2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/cms/CMSContainer.java +++ b/sign/src/main/java/com/itextpdf/signatures/cms/CMSContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/cms/CmsAttribute.java b/sign/src/main/java/com/itextpdf/signatures/cms/CmsAttribute.java index 5591bbb593..476ba0d8d6 100644 --- a/sign/src/main/java/com/itextpdf/signatures/cms/CmsAttribute.java +++ b/sign/src/main/java/com/itextpdf/signatures/cms/CmsAttribute.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/cms/EncapsulatedContentInfo.java b/sign/src/main/java/com/itextpdf/signatures/cms/EncapsulatedContentInfo.java index ec8dd1b296..92aec20bac 100644 --- a/sign/src/main/java/com/itextpdf/signatures/cms/EncapsulatedContentInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/cms/EncapsulatedContentInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/cms/SignerInfo.java b/sign/src/main/java/com/itextpdf/signatures/cms/SignerInfo.java index fcd0bbea65..a8388df3b4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/cms/SignerInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/cms/SignerInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java b/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java index 3787c96400..cf9d3fddab 100644 --- a/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java +++ b/sign/src/main/java/com/itextpdf/signatures/exceptions/SignExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -168,6 +168,7 @@ public final class SignExceptionMessageConstant { "process for the next document."; public static final String SIGNATURE_NAME_NOT_PROVIDED = "Signature validation name needs to be provided with QualifiedValidator#startSignatureValidation method."; + public static final String NO_SIGNATURE_WITH_THAT_NAME = "Signature field with {0} name was not found in the document."; private SignExceptionMessageConstant() { // Private constructor will prevent the instantiation of this class directly diff --git a/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java b/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java index 66a956eb12..87c9ffa6b4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java +++ b/sign/src/main/java/com/itextpdf/signatures/logs/SignLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -54,6 +54,9 @@ public final class SignLogMessageConstant { "to retrieve trusted certificates and LOTL location."; public static final String COUNTRY_NOT_REQUIRED_BY_CONFIGURATION = "Country \"{0}\" is not required by " + "lotlFetchingProperties, and not be used when validating."; + public static final String SCHEMA_NAMES_CONFIGURATION_PROPERTY_IGNORED = "LotlFetchingProperties#setCountryNames " + + "and LotlFetchingProperties#setCountryNamesToIgnore do not take effect for SingleFileLotlService and " + + "will be ignored."; private SignLogMessageConstant() { // Private constructor will prevent the instantiation of this class directly diff --git a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureContainerGenerationEvent.java b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureContainerGenerationEvent.java index cfd39a3e1b..20396b23bc 100644 --- a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureContainerGenerationEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureContainerGenerationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureDocumentClosingEvent.java b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureDocumentClosingEvent.java index 8d64ceab32..f3ceeaeca0 100644 --- a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureDocumentClosingEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureDocumentClosingEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacContainerLocator.java b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacContainerLocator.java index 918b20695d..b56172d102 100644 --- a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacContainerLocator.java +++ b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacContainerLocator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacIntegrityProtector.java b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacIntegrityProtector.java index bf122e996f..e7de0cc058 100644 --- a/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacIntegrityProtector.java +++ b/sign/src/main/java/com/itextpdf/signatures/mac/SignatureMacIntegrityProtector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/CRLValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/CRLValidator.java index 3d12942a02..541282f321 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/CRLValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/CRLValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/CertificateChainValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/CertificateChainValidator.java index feee894996..9d760f8df5 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/CertificateChainValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/CertificateChainValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -272,6 +272,7 @@ private void validateChain(ValidationReport result, ValidationContext context, X issuerCertificates = issuerCertificates.stream().sorted((issuer1, issuer2) -> Integer.compare( certificateRetriever.getCertificateOrigin(issuer1).ordinal(), certificateRetriever.getCertificateOrigin(issuer2).ordinal())) + .filter( c -> !previousCertificates.contains(c)) .collect(Collectors.toList()); ValidationReport[] candidateReports = new ValidationReport[issuerCertificates.size()]; for (int i = 0; i < issuerCertificates.size(); i++) { diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparator.java b/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparator.java index 4095f27165..fe992a5e08 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionsValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionsValidator.java index c78a494b72..12ddae9835 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionsValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/DocumentRevisionsValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoader.java b/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoader.java index 35470cb7c5..58b786213b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoader.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoader.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactory.java b/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactory.java index ac4a4fe036..8d8be9b29c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactory.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -91,4 +91,4 @@ public static void setFactory(Supplier * @return a list of certificates */ public abstract List getCertificates(); -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/LoadFromModuleEuropeanTrustedListConfigurationFactory.java b/sign/src/main/java/com/itextpdf/signatures/validation/LoadFromModuleEuropeanTrustedListConfigurationFactory.java index 77e0517594..adddfd0635 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/LoadFromModuleEuropeanTrustedListConfigurationFactory.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/LoadFromModuleEuropeanTrustedListConfigurationFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/NullQualifiedValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/NullQualifiedValidator.java index 7617e05e08..0349351824 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/NullQualifiedValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/NullQualifiedValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/OCSPValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/OCSPValidator.java index c2080d64c8..5651d916c2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/OCSPValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/OCSPValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/RevocationDataValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/RevocationDataValidator.java index ec58901c52..be3a5c777c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/RevocationDataValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/RevocationDataValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/SafeCalling.java b/sign/src/main/java/com/itextpdf/signatures/validation/SafeCalling.java index 1f15e480ce..d6eeb61462 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/SafeCalling.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/SafeCalling.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/SafeCallingAvoidantException.java b/sign/src/main/java/com/itextpdf/signatures/validation/SafeCallingAvoidantException.java index 6224fd3e08..c5ecedb9fe 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/SafeCallingAvoidantException.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/SafeCallingAvoidantException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidationProperties.java b/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidationProperties.java index 5a95fa7c66..7f1f7535b8 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidationProperties.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidationProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -399,4 +399,4 @@ public void setRequiredExtensions(List requiredExtensions) this.requiredExtensions = requiredExtensions; } } -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidator.java index 570568429d..8ac397bd82 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/SignatureValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/TrustedCertificatesStore.java b/sign/src/main/java/com/itextpdf/signatures/validation/TrustedCertificatesStore.java index 31d02aff46..cb9ac8d343 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/TrustedCertificatesStore.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/TrustedCertificatesStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationCrlClient.java b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationCrlClient.java index 03290cd4a3..49818e4c8f 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationCrlClient.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationCrlClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationMetaInfo.java b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationMetaInfo.java index 2885154d2b..d7bcbe66f6 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationMetaInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationMetaInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationOcspClient.java b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationOcspClient.java index 2909f349b9..09c6e995a0 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/ValidationOcspClient.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/ValidationOcspClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/ValidatorChainBuilder.java b/sign/src/main/java/com/itextpdf/signatures/validation/ValidatorChainBuilder.java index 7b672d6396..c6a138febe 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/ValidatorChainBuilder.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/ValidatorChainBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,6 +23,8 @@ This file is part of the iText (R) project. package com.itextpdf.signatures.validation; import com.itextpdf.commons.actions.EventManager; +import com.itextpdf.io.resolver.resource.IAdvancedResourceRetriever; +import com.itextpdf.io.resolver.resource.DefaultResourceRetriever; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.signatures.CrlClientOnline; import com.itextpdf.signatures.ICrlClient; @@ -40,8 +42,6 @@ This file is part of the iText (R) project. import com.itextpdf.signatures.validation.report.xml.EventsToAdESReportAggratorConvertor; import com.itextpdf.signatures.validation.report.xml.NullAdESReportAggregator; import com.itextpdf.signatures.validation.report.xml.PadesValidationReport; -import com.itextpdf.styledxmlparser.resolver.resource.DefaultResourceRetriever; -import com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever; import java.io.Writer; import java.security.cert.Certificate; @@ -63,7 +63,9 @@ public class ValidatorChainBuilder { private Supplier revocationDataValidatorFactory; private Supplier ocspValidatorFactory; private Supplier crlValidatorFactory; - private Supplier resourceRetrieverFactory; + @Deprecated + private Supplier resourceRetrieverFactory; + private Supplier advancedResourceRetrieverFactory; private Supplier documentRevisionsValidatorFactory; private Supplier ocspClientFactory; private Supplier crlClientFactory; @@ -87,6 +89,8 @@ public class ValidatorChainBuilder { private final EventManager eventManager; private AdESReportAggregator adESReportAggregator = new NullAdESReportAggregator(); private boolean padesValidationRequested = false; + @Deprecated + private boolean deprecatedResourceRetrieverToUse = false; /** * Creates a ValidatorChainBuilder using default implementations @@ -98,10 +102,12 @@ public ValidatorChainBuilder() { revocationDataValidatorFactory = () -> buildRevocationDataValidator(); ocspValidatorFactory = () -> buildOCSPValidator(); crlValidatorFactory = () -> buildCRLValidator(); - resourceRetrieverFactory = () -> new DefaultResourceRetriever(); + resourceRetrieverFactory = () -> new com.itextpdf.styledxmlparser.resolver.resource.DefaultResourceRetriever(); + advancedResourceRetrieverFactory = () -> new DefaultResourceRetriever(); documentRevisionsValidatorFactory = () -> buildDocumentRevisionsValidator(); - ocspClientFactory = () -> new OcspClientBouncyCastle(); - crlClientFactory = () -> new CrlClientOnline(); + ocspClientFactory = () -> new OcspClientBouncyCastle() + .withResourceRetriever(advancedResourceRetrieverFactory.get()); + crlClientFactory = () -> new CrlClientOnline().withResourceRetriever(advancedResourceRetrieverFactory.get()); lotlServiceFactory = () -> buildLotlService(); qualifiedValidator = new NullQualifiedValidator(); eventManager = EventManager.createNewInstance(); @@ -131,7 +137,7 @@ public ValidatorChainBuilder() { * * @param trustEuropeanLotl {@code true} if European Union LOTLs are expected to be trusted, {@code false} otherwise * - * @return current ValidatorChainBuilder. + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder trustEuropeanLotl(boolean trustEuropeanLotl) { this.trustEuropeanLotl = trustEuropeanLotl; @@ -213,7 +219,8 @@ public CRLValidator buildCRLValidator() { * for use in the validation chain. * * @param documentRevisionsValidatorFactory the document revisions validator factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withDocumentRevisionsValidatorFactory( Supplier documentRevisionsValidatorFactory) { @@ -225,7 +232,8 @@ public ValidatorChainBuilder withDocumentRevisionsValidatorFactory( * Use this factory method to create instances of {@link CRLValidator} for use in the validation chain. * * @param crlValidatorFactory the CRLValidatorFactory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withCRLValidatorFactory(Supplier crlValidatorFactory) { this.crlValidatorFactory = crlValidatorFactory; @@ -233,13 +241,45 @@ public ValidatorChainBuilder withCRLValidatorFactory(Supplier crlV } /** - * Use this factory method to create instances of {@link IResourceRetriever} for use in the validation chain. + * Use this factory method to create instances of + * {@link com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever} for use in the validation chain. * - * @param resourceRetrieverFactory the ResourceRetrieverFactory method to use. - * @return the current ValidatorChainBuilder. + * @param resourceRetrieverFactory the ResourceRetrieverFactory method to use + * + * @return the current {@link ValidatorChainBuilder} + * + * @deprecated in favor of {@link #withAdvancedResourceRetriever} */ - public ValidatorChainBuilder withResourceRetriever(Supplier resourceRetrieverFactory) { + @Deprecated + public ValidatorChainBuilder withResourceRetriever( + Supplier resourceRetrieverFactory) { this.resourceRetrieverFactory = resourceRetrieverFactory; + deprecatedResourceRetrieverToUse = true; + return this; + } + + /** + * Use this factory method to create instances of {@link IAdvancedResourceRetriever} for use in the validation chain. + * + *

+ * Resource retriever created by this factory will be automatically used in the default CRL client, + * default OCSP client and default CA issuer certificate retriever. If some custom client is set + * and one needs to use their custom resource retriever for it, it's their responsibility to pass + * custom resource retriever to their custom client. + * + *

+ * Note that resource retriever created by this factory will not be used for {@link LotlService} because + * the global instance of {@link LotlService} is used by default. If one needs to use their custom resource + * retriever for {@link LotlService}, they can pass it using {@link LotlService#withCustomResourceRetriever} + * method. + * + * @param resourceRetrieverFactory the resource retriever factory method to use + * + * @return the current {@link ValidatorChainBuilder} + */ + public ValidatorChainBuilder withAdvancedResourceRetriever( + Supplier resourceRetrieverFactory) { + this.advancedResourceRetrieverFactory = resourceRetrieverFactory; return this; } @@ -247,7 +287,8 @@ public ValidatorChainBuilder withResourceRetriever(Supplier * Use this factory method to create instances of {@link OCSPValidator} for use in the validation chain. * * @param ocspValidatorFactory the OCSPValidatorFactory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withOCSPValidatorFactory(Supplier ocspValidatorFactory) { this.ocspValidatorFactory = ocspValidatorFactory; @@ -258,7 +299,8 @@ public ValidatorChainBuilder withOCSPValidatorFactory(Supplier oc * Use this factory method to create instances of {@link RevocationDataValidator} for use in the validation chain. * * @param revocationDataValidatorFactory the RevocationDataValidator factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withRevocationDataValidatorFactory( Supplier revocationDataValidatorFactory) { @@ -270,7 +312,8 @@ public ValidatorChainBuilder withRevocationDataValidatorFactory( * Use this factory method to create instances of {@link CertificateChainValidator} for use in the validation chain. * * @param certificateChainValidatorFactory the CertificateChainValidator factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withCertificateChainValidatorFactory( Supplier certificateChainValidatorFactory) { @@ -282,7 +325,8 @@ public ValidatorChainBuilder withCertificateChainValidatorFactory( * Use this instance of a {@link SignatureValidationProperties} in the validation chain. * * @param properties the SignatureValidationProperties instance to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withSignatureValidationProperties(SignatureValidationProperties properties) { this.properties = properties; @@ -294,7 +338,8 @@ public ValidatorChainBuilder withSignatureValidationProperties(SignatureValidati * for use in the validation chain. * * @param certificateRetrieverFactory the IssuingCertificateRetriever factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withIssuingCertificateRetrieverFactory( Supplier certificateRetrieverFactory) { @@ -306,7 +351,8 @@ public ValidatorChainBuilder withIssuingCertificateRetrieverFactory( * Use this factory to create instances of {@link IOcspClientBouncyCastle} for use in the validation chain. * * @param ocspClientFactory the IOcspClient factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withOcspClient(Supplier ocspClientFactory) { this.ocspClientFactory = ocspClientFactory; @@ -317,7 +363,8 @@ public ValidatorChainBuilder withOcspClient(Supplier oc * Use this factory to create instances of {@link ICrlClient} for use in the validation chain. * * @param crlClientFactory the ICrlClient factory method to use - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withCrlClient(Supplier crlClientFactory) { this.crlClientFactory = crlClientFactory; @@ -328,7 +375,8 @@ public ValidatorChainBuilder withCrlClient(Supplier crlClientFactory * Adds known certificates to the {@link IssuingCertificateRetriever}. * * @param knownCertificates the list of known certificates to add - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withKnownCertificates(Collection knownCertificates) { this.knownCertificates = new ArrayList<>(knownCertificates); @@ -339,7 +387,8 @@ public ValidatorChainBuilder withKnownCertificates(Collection known * Sets the trusted certificates to the {@link IssuingCertificateRetriever}. * * @param trustedCertificates the list of trusted certificates to set - * @return the current ValidatorChainBuilder. + * + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withTrustedCertificates(Collection trustedCertificates) { this.trustedCertificates = new ArrayList<>(trustedCertificates); @@ -354,7 +403,8 @@ public ValidatorChainBuilder withTrustedCertificates(Collection tru * {@link com.itextpdf.signatures.validation.report.xml.XmlReportGenerator#generate(PadesValidationReport, Writer)}. * * @param adESReportAggregator the report aggregator to use - * @return the current ValidatorChainBuilder + * + * @return the current {@link ValidatorChainBuilder} * * @deprecated This method will be removed in a later version, use {@link #withAdESLevelReportGenerator} instead. */ @@ -375,7 +425,7 @@ public ValidatorChainBuilder withAdESReportAggregator(AdESReportAggregator adESR * * @param reportEventListener the AdESReportEventListener to use * - * @return the current ValidatorChainBuilder + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withAdESLevelReportGenerator(XmlReportAggregator reportEventListener) { eventManager.register(reportEventListener); @@ -389,7 +439,7 @@ public ValidatorChainBuilder withAdESLevelReportGenerator(XmlReportAggregator re * * @param reportGenerator the PAdESLevelReportGenerator to use * - * @return current ValidatorChainBuilder + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withPAdESLevelReportGenerator(PAdESLevelReportGenerator reportGenerator) { padesValidationRequested = true; @@ -416,9 +466,9 @@ public boolean padesValidationRequested() { *

* If no instance is provided, the qualification validation is not executed. * - * @param qualifiedValidator {@link QualifiedValidator} instance which performs the validation. + * @param qualifiedValidator {@link QualifiedValidator} instance which performs the validation * - * @return current ValidatorChainBuilder + * @return the current {@link ValidatorChainBuilder} */ public ValidatorChainBuilder withQualifiedValidator(QualifiedValidator qualifiedValidator) { this.qualifiedValidator = qualifiedValidator; @@ -465,11 +515,16 @@ public AdESReportAggregator getAdESReportAggregator() { } /** - * Retrieves the explicitly added or automatically created {@link IResourceRetriever} instance. + * Retrieves the explicitly added or automatically created + * {@link com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever} instance. * - * @return the explicitly added or automatically created {@link IResourceRetriever} instance. + * @return the explicitly added or automatically created + * {@link com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever} instance + * + * @deprecated as user should not normally need this getter */ - public IResourceRetriever getResourceRetriever() { + @Deprecated + public com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever getResourceRetriever() { return resourceRetrieverFactory.get(); } @@ -603,16 +658,23 @@ private static LotlService buildLotlService() { } private IssuingCertificateRetriever buildIssuingCertificateRetriever() { - IssuingCertificateRetriever result = new IssuingCertificateRetriever(this.resourceRetrieverFactory.get()); + IssuingCertificateRetriever certRetriever; + if (deprecatedResourceRetrieverToUse) { + certRetriever = new IssuingCertificateRetriever(this.resourceRetrieverFactory.get()); + } else { + certRetriever = new IssuingCertificateRetriever() + .withResourceRetriever(advancedResourceRetrieverFactory.get()); + } + if (trustedCertificates != null) { - result.setTrustedCertificates(trustedCertificates); + certRetriever.setTrustedCertificates(trustedCertificates); } if (knownCertificates != null) { - result.addKnownCertificates(knownCertificates, CertificateOrigin.OTHER); + certRetriever.addKnownCertificates(knownCertificates, CertificateOrigin.OTHER); } - result.addKnownCertificates(lotlTrustedStoreFactory.get().getCertificates(), CertificateOrigin.OTHER); - return result; + certRetriever.addKnownCertificates(lotlTrustedStoreFactory.get().getCertificates(), CertificateOrigin.OTHER); + return certRetriever; } private LotlTrustedStore buildLotlTrustedStore() { diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSource.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSource.java index d27d8c5267..f04f4f45f3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSource.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSource.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSources.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSources.java index 33f4390731..1fa6cc948c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSources.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/CertificateSources.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContext.java index fed6119041..5639107330 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -34,4 +34,4 @@ public enum TimeBasedContext { * The date used lies in the present or there is no date. */ PRESENT -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContexts.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContexts.java index e66825ff56..4c090d1c4a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContexts.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/TimeBasedContexts.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidationContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidationContext.java index 36dfce815b..a713c73152 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidationContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidationContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContext.java index 9ba96b1449..4d0f64bc00 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContexts.java b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContexts.java index 4a676d5507..75852a8a68 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContexts.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/context/ValidatorContexts.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/CertificateOrigin.java b/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/CertificateOrigin.java index 47e2bef8bd..2a0855c3ef 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/CertificateOrigin.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/CertificateOrigin.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/RevocationDataOrigin.java b/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/RevocationDataOrigin.java index 60006531d4..10eccbbb71 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/RevocationDataOrigin.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/dataorigin/RevocationDataOrigin.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/AbstractCertificateChainEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/AbstractCertificateChainEvent.java index 7fb680ad0c..6353a51da1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/AbstractCertificateChainEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/AbstractCertificateChainEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEvent.java index 9c1f9474f7..2e43d971ae 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationFailureEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationFailureEvent.java index 27bfbbe8fd..a8144ca3e4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationFailureEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationFailureEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationSuccessEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationSuccessEvent.java index 8d54b8dfdb..f8863ad8b1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationSuccessEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateChainValidationSuccessEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerExternalRetrievalEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerExternalRetrievalEvent.java index 8e595a78eb..b7c04ff827 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerExternalRetrievalEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerExternalRetrievalEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerRetrievedOutsideDSSEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerRetrievedOutsideDSSEvent.java index 864d445fef..56a4fe7619 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerRetrievedOutsideDSSEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/CertificateIssuerRetrievedOutsideDSSEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/DSSProcessedEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/DSSProcessedEvent.java index efa1d23c95..1d5f4486c1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/DSSProcessedEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/DSSProcessedEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/DssNotTimestampedEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/DssNotTimestampedEvent.java index 19e57300e5..8a1d8e9703 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/DssNotTimestampedEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/DssNotTimestampedEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/EventType.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/EventType.java index 5390e48f15..b1a9befeb7 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/EventType.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/EventType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -92,4 +92,4 @@ public enum EventType { * Event triggered for every algorithm being used during signature validation. */ ALGORITHM_USAGE -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/IValidationEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/IValidationEvent.java index 74417bea2b..669dd0ffa6 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/IValidationEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/IValidationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/ProofOfExistenceFoundEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/ProofOfExistenceFoundEvent.java index ef5599a89e..67a80321e9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/ProofOfExistenceFoundEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/ProofOfExistenceFoundEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/RevocationNotFromDssEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/RevocationNotFromDssEvent.java index 5a93c9065a..0b74209187 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/RevocationNotFromDssEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/RevocationNotFromDssEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationFailureEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationFailureEvent.java index 1c6c1ea20a..19e0540aba 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationFailureEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationFailureEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationSuccessEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationSuccessEvent.java index 73f133be06..0e660652e1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationSuccessEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/SignatureValidationSuccessEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/events/StartSignatureValidationEvent.java b/sign/src/main/java/com/itextpdf/signatures/validation/events/StartSignatureValidationEvent.java index 6e1ff650e1..fd8b6066c1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/events/StartSignatureValidationEvent.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/events/StartSignatureValidationEvent.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/CertificateExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/CertificateExtension.java index cfb000f42e..6c2250e46a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/CertificateExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/CertificateExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicBasicConstraintsExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicBasicConstraintsExtension.java index dd014e1496..b131d22fce 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicBasicConstraintsExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicBasicConstraintsExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicCertificateExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicCertificateExtension.java index 5528769c0b..cb4f9401e5 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicCertificateExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/DynamicCertificateExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtension.java index 47ef5c9e3a..1a1f122b98 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsage.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsage.java index 2349ce0493..3a3f338c07 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsage.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtension.java index 6a904e5c67..f56af448cb 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AbstractXmlCertificateHandler.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AbstractXmlCertificateHandler.java index 16d610c922..0313cab18b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AbstractXmlCertificateHandler.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AbstractXmlCertificateHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AdditionalServiceInformationExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AdditionalServiceInformationExtension.java index aa63a876e9..b1d044714d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AdditionalServiceInformationExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/AdditionalServiceInformationExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,16 +22,22 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; + import java.util.HashSet; import java.util.Set; /** * Wrapper class for additional service information extension. */ -public class AdditionalServiceInformationExtension { +public class AdditionalServiceInformationExtension implements IJsonSerializable { static final String FOR_E_SIGNATURES = "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures"; static final String FOR_E_SEALS = "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals"; static final String FOR_WSA = "http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForWebSiteAuthentication"; + private static final String JSON_KEY_URI = "uri"; private static final Set INVALID_SCOPES = new HashSet<>(); private String uri; @@ -66,4 +72,28 @@ void setUri(String uri) { boolean isScopeValid() { return !INVALID_SCOPES.contains(uri); } + + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject extensionJson = new JsonObject(); + extensionJson.add(JSON_KEY_URI, new JsonString(getUri())); + return extensionJson; + } + + /** + * Deserializes {@link JsonValue} into {@link AdditionalServiceInformationExtension}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link AdditionalServiceInformationExtension} + */ + public static AdditionalServiceInformationExtension fromJson(JsonValue jsonValue) { + return new AdditionalServiceInformationExtension( + ((JsonString) ((JsonObject) jsonValue).getField(JSON_KEY_URI)).getValue()); + } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CertificateSelector.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CertificateSelector.java index 9c3044a2a8..5366cb8164 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CertificateSelector.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CertificateSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountryServiceContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountryServiceContext.java index 76b0dd35c4..b83b2bc00e 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountryServiceContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountryServiceContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,20 +22,31 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; import com.itextpdf.commons.utils.DateTimeUtil; +import com.itextpdf.signatures.SignJsonSerializerHelper; import java.security.cert.Certificate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Class representing TSPService entry in a country specific Trusted List. */ -public class CountryServiceContext implements IServiceContext { - private final List certificates = new ArrayList<>(); +public class CountryServiceContext implements IServiceContext, IJsonSerializable { + private static final String JSON_KEY_CERTIFICATES = "certificates"; + private static final String JSON_KEY_SERVICE_TYPE = "serviceType"; + private static final String JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS = "serviceChronologicalInfos"; + + private List certificates = new ArrayList<>(); //It is expected that service statuses are ordered starting from the newest one. - private final List serviceChronologicalInfos = new ArrayList<>(); + private List serviceChronologicalInfos = new ArrayList<>(); private String serviceType; CountryServiceContext() { @@ -113,6 +124,58 @@ public ServiceChronologicalInfo getCurrentChronologicalInfo() { return serviceChronologicalInfos.get(0); } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + + JsonArray certificatesJson = new JsonArray(); + for (Certificate certificate : certificates) { + certificatesJson.add(SignJsonSerializerHelper.serializeCertificate(certificate)); + } + jsonObject.add(JSON_KEY_CERTIFICATES, certificatesJson); + jsonObject.add(JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS, + new JsonArray(serviceChronologicalInfos.stream().map( + serviceChronologicalInfo -> serviceChronologicalInfo.toJson()) + .collect(Collectors.toList()))); + jsonObject.add(JSON_KEY_SERVICE_TYPE, new JsonString(serviceType)); + + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link CountryServiceContext}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link CountryServiceContext} + */ + public static CountryServiceContext fromJson(JsonValue jsonValue) { + JsonObject countryServiceContextJson = (JsonObject) jsonValue; + JsonArray certificatesJson = + (JsonArray) countryServiceContextJson.getField(JSON_KEY_CERTIFICATES); + List certificatesFromJson = certificatesJson.getValues().stream().map(certificateJson -> + SignJsonSerializerHelper.deserializeCertificate(certificateJson)).collect(Collectors.toList()); + CountryServiceContext countryServiceContextFromJson = new CountryServiceContext(); + countryServiceContextFromJson.certificates = certificatesFromJson; + + JsonArray serviceChronologicalInfosJson = + (JsonArray) countryServiceContextJson.getField(JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS); + countryServiceContextFromJson.serviceChronologicalInfos = + serviceChronologicalInfosJson.getValues().stream().map( + serviceChronologicalInfoJson -> + ServiceChronologicalInfo.fromJson(serviceChronologicalInfoJson)) + .collect(Collectors.toList()); + + countryServiceContextFromJson.serviceType = + ((JsonString) countryServiceContextJson.getField(JSON_KEY_SERVICE_TYPE)).getValue(); + return countryServiceContextFromJson; + } + void setServiceType(String serviceType) { this.serviceType = serviceType; } @@ -124,4 +187,4 @@ void addServiceChronologicalInfo(ServiceChronologicalInfo serviceChronologicalIn int getServiceChronologicalInfosSize() { return serviceChronologicalInfos.size(); } -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotl.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotl.java index 2b31aba3c3..da09edf964 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotl.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotl.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,17 +22,28 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; + /** * This class represents a country-specific TSL (Trusted List) location. - * It contains the scheme territory and the TSL location URL. + * It contains the scheme territory, the TSL location URL and MIME type. */ -public final class CountrySpecificLotl { +public final class CountrySpecificLotl implements IJsonSerializable { private final String schemeTerritory; private final String tslLocation; private final String mimeType; - - CountrySpecificLotl(String schemeTerritory, String tslLocation, String mimeType) { + /** + * Creates an instance of country specific LOTL location representation. + * + * @param schemeTerritory scheme territory of this country-specific TSL + * @param tslLocation TSL location URL of this country-specific TSL + * @param mimeType MIME type of the TSL location + */ + public CountrySpecificLotl(String schemeTerritory, String tslLocation, String mimeType) { this.schemeTerritory = schemeTerritory; this.tslLocation = tslLocation; this.mimeType = mimeType; @@ -51,7 +62,7 @@ public final class CountrySpecificLotl { /** * Returns the scheme territory of this country-specific TSL. * - * @return The scheme territory + * @return the scheme territory */ public String getSchemeTerritory() { return schemeTerritory; @@ -60,7 +71,7 @@ public String getSchemeTerritory() { /** * Returns the TSL location URL of this country-specific TSL. * - * @return The TSL location URL + * @return the TSL location URL */ public String getTslLocation() { return tslLocation; @@ -69,12 +80,41 @@ public String getTslLocation() { /** * Returns the MIME type of the TSL location. * - * @return The MIME type of the TSL location + * @return the MIME type of the TSL location */ public String getMimeType() { return mimeType; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add("schemeTerritory", new JsonString(schemeTerritory)); + jsonObject.add("tslLocation", new JsonString(tslLocation)); + jsonObject.add("mimeType", new JsonString(mimeType)); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link CountrySpecificLotl}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link CountrySpecificLotl} + */ + public static CountrySpecificLotl fromJson(JsonValue jsonValue) { + JsonObject countrySpecificLotlJson = (JsonObject) jsonValue; + return new CountrySpecificLotl( + ((JsonString) countrySpecificLotlJson.getField("schemeTerritory")).getValue(), + ((JsonString) countrySpecificLotlJson.getField("tslLocation")).getValue(), + ((JsonString) countrySpecificLotlJson.getField("mimeType")).getValue()); + } + @Override public String toString() { return "CountrySpecificLotl{" + "schemeTerritory='" + diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotlFetcher.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotlFetcher.java index e01bb339c1..38a3c58014 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotlFetcher.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/CountrySpecificLotlFetcher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,10 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.commons.utils.MultiThreadingUtil; import com.itextpdf.io.resolver.resource.IResourceRetriever; @@ -43,7 +47,7 @@ This file is part of the iText (R) project. import static com.itextpdf.signatures.validation.lotl.LotlValidator.LOTL_VALIDATION; /** - * This class fetches and validates country-specific List of Trusted Lists (Lotls). + * This class fetches and validates country-specific List of Trusted Lists (LOTLs). */ public class CountrySpecificLotlFetcher { private final LotlService service; @@ -51,7 +55,7 @@ public class CountrySpecificLotlFetcher { /** * Creates a new instance of {@link CountrySpecificLotlFetcher}. * - * @param service the LotlService used to retrieve resources + * @param service the {@link LotlService} used to retrieve resources */ public CountrySpecificLotlFetcher(LotlService service) { this.service = service; @@ -59,13 +63,14 @@ public CountrySpecificLotlFetcher(LotlService service) { /** - * Fetches and validates country-specific Lotls from the provided Lotl XML. + * Fetches and validates country-specific LOTLs from the provided LOTL XML. * - * @param lotlXml the byte array of the Lotl XML + * @param lotlXml the byte array of the LOTL XML * @param lotlService the {@link LotlService} used to build this fetcher * - * @return a map of results containing validated country-specific Lotls and their contexts + * @return a map of results containing validated country-specific LOTLs and their contexts */ + // TODO DEVSIX-9710: remove lotlService parameter when LotlService will be accessible from this.service public Map getAndValidateCountrySpecificLotlFiles(byte[] lotlXml, LotlService lotlService) { XmlCertificateRetriever certificateRetriever = new XmlCertificateRetriever(new XmlDefaultCertificateHandler()); List lotlTrustedCertificates = certificateRetriever.getCertificates( @@ -75,34 +80,48 @@ public Map getAndValidateCountrySpecificLotlFiles(byte[] lotlXml .getAllCountriesLotlFilesLocation(new ByteArrayInputStream(lotlXml), lotlService.getLotlFetchingProperties()); - final TrustedCertificatesStore certificatesStore = new TrustedCertificatesStore(); - certificatesStore.addGenerallyTrustedCertificates(lotlTrustedCertificates); - final XmlSignatureValidator validator = lotlService.getXmlSignatureValidator(certificatesStore); - - final List> tasks = getTasks(lotlService, countrySpecificLotl, validator); - - HashMap countrySpecificCacheEntries = new HashMap<>(); - for (Result result : executeTasks(tasks)) { - countrySpecificCacheEntries.put(result.createUniqueIdentifier(), result); - } - return countrySpecificCacheEntries; + return validateCountrySpecificFiles(lotlTrustedCertificates, countrySpecificLotl, lotlService) ; } - /** - * Creates an ExecutorService for downloading country-specific Lotls. + * Creates an ExecutorService for downloading country-specific LOTLs. * By default, it creates a fixed thread pool with a number of threads equal to the number of available * processors or the number of files to download, whichever is smaller. * If you require a different configuration with other executor services, you can override this method. * * @param tasks the list of tasks to be executed * - * @return an ExecutorService instance configured for downloading Lotls + * @return an ExecutorService instance configured for downloading LOTLs */ protected List executeTasks(List> tasks) { return MultiThreadingUtil.runActionsParallel(tasks, tasks.size()); } + /** + * Fetches and validates country-specific LOTLs from the provided {@link CountrySpecificLotl}. + * + * @param certificates certificates used for validation + * @param countrySpecificInfo a list of {@link CountrySpecificLotl} to retrieve + * @param lotlService the {@link LotlService} used to build this fetcher + * + * @return a map of results containing validated country-specific LOTLs and their contexts + */ + // TODO DEVSIX-9710: remove lotlService parameter when LotlService will be accessible from this.service + Map validateCountrySpecificFiles(List certificates, + List countrySpecificInfo, LotlService lotlService) { + final TrustedCertificatesStore certificatesStore = new TrustedCertificatesStore(); + certificatesStore.addGenerallyTrustedCertificates(certificates); + final XmlSignatureValidator validator = lotlService.getXmlSignatureValidator(certificatesStore); + + final List> tasks = getTasks(lotlService, countrySpecificInfo, validator); + + HashMap countrySpecificCacheEntries = new HashMap<>(); + for (Result result : executeTasks(tasks)) { + countrySpecificCacheEntries.put(result.createUniqueIdentifier(), result); + } + return countrySpecificCacheEntries; + } + private List> getTasks(LotlService lotlService, List countrySpecificLotl, XmlSignatureValidator validator) { final List> tasks = new ArrayList<>(countrySpecificLotl.size()); @@ -127,9 +146,14 @@ private List> getTasks(LotlService lotlService, List contexts; private CountrySpecificLotl countrySpecificLotl; @@ -163,7 +187,7 @@ public void setLocalReport(ValidationReport localReport) { } /** - * Gets the list of service contexts associated with the country-specific Lotl. + * Gets the list of service contexts associated with the country-specific LOTL. * * @return a list of IServiceContext objects representing the service contexts */ @@ -172,7 +196,7 @@ public List getContexts() { } /** - * Sets the list of service contexts associated with the country-specific Lotl. + * Sets the list of service contexts associated with the country-specific LOTL. * * @param contexts a list of IServiceContext objects to set */ @@ -181,16 +205,16 @@ public void setContexts(List contexts) { } /** - * Gets the country-specific Lotl that was fetched and validated. + * Gets the country-specific LOTL that was fetched and validated. * - * @return the CountrySpecificLotl object representing the country-specific Lotl + * @return the CountrySpecificLotl object representing the country-specific LOTL */ public CountrySpecificLotl getCountrySpecificLotl() { return countrySpecificLotl; } /** - * Sets the country-specific Lotl that was fetched and validated. + * Sets the country-specific LOTL that was fetched and validated. * * @param countrySpecificLotl the CountrySpecificLotl object to set * @@ -202,17 +226,76 @@ public Result setCountrySpecificLotl(CountrySpecificLotl countrySpecificLotl) { } /** - * Creates a unique identifier for the country-specific Lotl based on its scheme territory and TSL location. + * Creates a unique identifier for the country-specific LOTL based on its scheme territory and TSL location. * - * @return a string representing the unique identifier for the country-specific Lotl + * @return a string representing the unique identifier for the country-specific LOTL */ public String createUniqueIdentifier() { return countrySpecificLotl.getSchemeTerritory() + "_" + countrySpecificLotl.getTslLocation(); } + + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_LOCAL_REPORT, localReport.toJson()); + + JsonArray contextsJson = new JsonArray(); + for (IServiceContext serviceContext : contexts) { + if (serviceContext instanceof SimpleServiceContext) { + contextsJson.add(((SimpleServiceContext) serviceContext).toJson()); + } else if (serviceContext instanceof CountryServiceContext) { + contextsJson.add(((CountryServiceContext) serviceContext).toJson()); + } + } + jsonObject.add(JSON_KEY_CONTEXTS, contextsJson); + + jsonObject.add(JSON_KEY_COUNTRY_SPECIFIC_LOTL, countrySpecificLotl.toJson()); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link CountrySpecificLotlFetcher.Result}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link CountrySpecificLotlFetcher.Result} + */ + public static CountrySpecificLotlFetcher.Result fromJson(JsonValue jsonValue) { + JsonObject countrySpecificLotlFetcherResultJson = (JsonObject) jsonValue; + JsonObject localReportJson = + (JsonObject) countrySpecificLotlFetcherResultJson.getField(JSON_KEY_LOCAL_REPORT); + ValidationReport validationReportFromJson = ValidationReport.fromJson(localReportJson); + + JsonArray contextsJson = (JsonArray) countrySpecificLotlFetcherResultJson.getField(JSON_KEY_CONTEXTS); + List serviceContextsFromJson = new ArrayList<>(); + for (JsonValue contextJson : contextsJson.getValues()) { + JsonObject contextJsonObject = (JsonObject) contextJson; + if (contextJsonObject.getField(JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS) != null || + contextJsonObject.getField(JSON_KEY_SERVICE_TYPE) != null) { + serviceContextsFromJson.add(CountryServiceContext.fromJson(contextJson)); + } else { + serviceContextsFromJson.add(SimpleServiceContext.fromJson(contextJson)); + } + } + + CountrySpecificLotl countrySpecificLotlFromJson = CountrySpecificLotl.fromJson( + countrySpecificLotlFetcherResultJson.getField(JSON_KEY_COUNTRY_SPECIFIC_LOTL)); + + CountrySpecificLotlFetcher.Result resultFromJson = new Result(); + resultFromJson.localReport = validationReportFromJson; + resultFromJson.contexts = serviceContextsFromJson; + resultFromJson.countrySpecificLotl = countrySpecificLotlFromJson; + return resultFromJson; + } } private static final class CountryFetcher { - static final String COUNTRY_SPECIFIC_LOTL_NOT_VALIDATED = "Country specific Lotl file: {0}, {1} wasn't " + + static final String COUNTRY_SPECIFIC_LOTL_NOT_VALIDATED = "Country specific LOTL file: {0}, {1} wasn't " + "successfully validated. It will be ignored."; static final String COULD_NOT_RESOLVE_URL = "Couldn't resolve {0} url. This TSL Location will be ignored."; diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcher.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcher.java index 69ea16ebb8..127d9471f4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcher.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,11 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.commons.utils.EncodingUtil; import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.io.util.UrlUtil; import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; @@ -85,8 +90,10 @@ public Result fetch() { /** * Represents the result of fetching the List of Trusted Lists (Lotl). */ - public static class Result { - private final ValidationReport localReport = new ValidationReport(); + public static class Result implements IJsonSerializable { + private static final String JSON_KEY_LOCAL_REPORT = "localReport"; + private static final String JSON_KEY_LOTL_XML = "lotlXml"; + private ValidationReport localReport = new ValidationReport(); private byte[] lotlXml; /** @@ -137,6 +144,39 @@ public ValidationReport getLocalReport() { return localReport; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_LOCAL_REPORT, localReport.toJson()); + String base64Encoded = EncodingUtil.toBase64(lotlXml); + jsonObject.add(JSON_KEY_LOTL_XML, new JsonString(base64Encoded)); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link EuropeanLotlFetcher.Result}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link EuropeanLotlFetcher.Result} + */ + public static Result fromJson(JsonValue jsonValue) { + JsonObject europeanLotlFetcherResultJson = (JsonObject) jsonValue; + JsonObject localReportJson = + (JsonObject) europeanLotlFetcherResultJson.getField(JSON_KEY_LOCAL_REPORT); + ValidationReport validationReportFromJson = ValidationReport.fromJson(localReportJson); + String base64Encoded = ((JsonString) europeanLotlFetcherResultJson.getField(JSON_KEY_LOTL_XML)).getValue(); + byte[] lotlXmlFromJson = EncodingUtil.fromBase64(base64Encoded); + Result resultFromJson = new Result(lotlXmlFromJson); + resultFromJson.localReport = validationReportFromJson; + return resultFromJson; + } + boolean hasValidXml() { return lotlXml != null && lotlXml.length > 0; } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlService.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlService.java new file mode 100644 index 0000000000..2859e1c772 --- /dev/null +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlService.java @@ -0,0 +1,495 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures.validation.lotl; + +import com.itextpdf.commons.datastructures.ConcurrentHashSet; +import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; +import com.itextpdf.signatures.logs.SignLogMessageConstant; +import com.itextpdf.signatures.validation.lotl.CountrySpecificLotlFetcher.Result; +import com.itextpdf.signatures.validation.report.ReportItem; +import com.itextpdf.signatures.validation.report.ReportItem.ReportItemStatus; +import com.itextpdf.signatures.validation.report.ValidationReport; +import com.itextpdf.signatures.validation.report.ValidationReport.ValidationResult; + +import java.io.InputStream; +import java.io.OutputStream; +import java.security.cert.Certificate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import org.slf4j.Logger; + +/** + * This class provides services for managing the Europian List of Trusted Lists (LOTL) and related resources. + * It includes methods for fetching, validating, and caching LOTL data, as well as managing the European Resource + * Fetcher and Country-Specific LOTL Fetcher. + * It also allows for setting custom resource retrievers and cache timeouts. + */ +public class EuropeanLotlService extends LotlService { + + private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(EuropeanLotlService.class); + private EuropeanLotlFetcher lotlByteFetcher; + private PivotFetcher pivotFetcher; + private CountrySpecificLotlFetcher countrySpecificLotlFetcher; + // Services + private LotlServiceCache cache; + private EuropeanResourceFetcher europeanResourceFetcher = new EuropeanResourceFetcher(); + private final ConcurrentHashSet nationalTrustedCertificates = new ConcurrentHashSet<>(); + + /** + * Creates a new instance of {@link EuropeanLotlService}. + * + * @param lotlFetchingProperties {@link LotlFetchingProperties} to configure the way in which LOTL will be fetched + */ + public EuropeanLotlService(LotlFetchingProperties lotlFetchingProperties) { + super(lotlFetchingProperties); + this.cache = new InMemoryLotlServiceCache(lotlFetchingProperties.getCacheStalenessInMilliseconds(), + lotlFetchingProperties.getOnCountryFetchFailureStrategy()); + this.lotlByteFetcher = new EuropeanLotlFetcher(this); + this.pivotFetcher = new PivotFetcher(this); + this.countrySpecificLotlFetcher = new CountrySpecificLotlFetcher(this); + + } + + /** + * {@inheritDoc} + */ + @Override + public LotlService withLotlServiceCache(LotlServiceCache cache) { + this.cache = cache; + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public void loadFromCache(InputStream stream) { + try { + LotlCacheDataV1 container = LotlCacheDataV1.deserialize(stream); + if (cache instanceof InMemoryLotlServiceCache) { + // Check if the data we have in the cache is older than the new one + Map newTimeStamps = container.getTimeStamps(); + InMemoryLotlServiceCache inMemoryCache = (InMemoryLotlServiceCache) this.cache; + Map currentTimeStamps = inMemoryCache.getTimeStamps(); + + for (Entry entry : newTimeStamps.entrySet()) { + Long newTimeStamp = entry.getValue(); + Long timeStampFromCache = currentTimeStamps.get(entry.getKey()); + if (timeStampFromCache != null && newTimeStamp <= timeStampFromCache) { + throw new PdfException(SignExceptionMessageConstant.CACHE_INCOMING_DATA_IS_STALER); + } + } + inMemoryCache.setTimeStamps(container.getTimeStamps()); + } + + EuropeanLotlFetcher.Result mainLotlResult = container.getLotlCache(); + EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates = + container.getEuropeanResourceFetcherCache(); + PivotFetcher.Result pivotsResult = container.getPivotCache(); + Map resultToAddToCache = container.getCountrySpecificLotlCache(); + if (mainLotlResult == null || europeanResourceFetcherEUJournalCertificates == null + || pivotsResult == null || resultToAddToCache == null) { + throw new PdfException(SignExceptionMessageConstant.COULD_NOT_INITIALIZE_FROM_FILE); + } + + Set countriesInCache = new HashSet<>(); + for (String key : new ArrayList<>(resultToAddToCache.keySet())) { + Result value = resultToAddToCache.get(key); + String countryCode = value.getCountrySpecificLotl().getSchemeTerritory(); + if (lotlFetchingProperties.getSchemaNames().contains(countryCode) || + lotlFetchingProperties.getSchemaNames().isEmpty()) { + countriesInCache.add(countryCode); + } else { + resultToAddToCache.remove(key); + LOGGER.warn(MessageFormatUtil.format( + SignLogMessageConstant.COUNTRY_NOT_REQUIRED_BY_CONFIGURATION, + countryCode)); + } + } + + for (String schemaName : lotlFetchingProperties.getSchemaNames()) { + if (countriesInCache.contains(schemaName)) { + continue; + } + throw new PdfException(MessageFormatUtil.format( + SignExceptionMessageConstant.INITIALIZED_CACHE_DOES_NOT_CONTAIN_REQUIRED_COUNTRY, + schemaName)); + } + this.cache.setAllValues(mainLotlResult, europeanResourceFetcherEUJournalCertificates, pivotsResult, + resultToAddToCache); + } catch (PdfException e) { + throw e; + } catch (Exception e) { + throw new PdfException(SignExceptionMessageConstant.COULD_NOT_INITIALIZE_FROM_FILE, e); + } + } + + /** + * {@inheritDoc} + */ + @Override + public ValidationReport getValidationResult() { + ValidationReport report = new ValidationReport(); + EuropeanLotlFetcher.Result lotl = getLotlBytes(); + if (!lotl.getLocalReport().getLogs().isEmpty()) { + report.merge(lotl.getLocalReport()); + return report; + } + + EuropeanResourceFetcher.Result europeanResult = getEUJournalCertificates(); + report.merge(europeanResult.getLocalReport()); + + // get all the data from cache, if it is stale, exception will be thrown + // locked and pass to methods + PivotFetcher.Result result = getAndValidatePivotFiles(lotl.getLotlXml(), + europeanResult.getCertificates(), europeanResult.getCurrentlySupportedPublication()); + + report.merge(result.getLocalReport()); + if (result.getLocalReport().getValidationResult() != ValidationResult.VALID) { + return report; + } + + List entries = getCountrySpecificLotlFiles(lotl.getLotlXml()); + + this.nationalTrustedCertificates.clear(); + for (CountrySpecificLotlFetcher.Result countrySpecificResult : entries) { + // When cache was loaded without config it still contains all country specific LOTL files. + // So we need to filter them out if schema names were provided. + if (!this.getLotlFetchingProperties() + .shouldProcessCountry(countrySpecificResult.getCountrySpecificLotl().getSchemeTerritory())) { + continue; + } + report.merge(countrySpecificResult.getLocalReport()); + this.nationalTrustedCertificates.addAll( + LotlTrustedStore.mapIServiceContextToCountry(countrySpecificResult.getContexts())); + } + + return report; + } + + /** + * {@inheritDoc} + */ + @Override + public List getNationalTrustedCertificates() { + // Add all values to a new list + return new ArrayList<>(this.nationalTrustedCertificates); + } + + /** + * Sets the pivot fetcher for the LOTL service. + * + * @param pivotFetcher the pivot fetcher to be used for fetching and validating pivot files + * + * @return the current instance of {@link LotlService} for method chaining + */ + @Override + public LotlService withPivotFetcher(PivotFetcher pivotFetcher) { + this.pivotFetcher = pivotFetcher; + return this; + } + + /** + * Sets the country-specific LOTL fetcher for the LOTL service. + * + * @param countrySpecificLotlFetcher the country-specific LOTL fetcher to be used for fetching and validating + * country-specific LOTLs + * + * @return the current instance of {@link LotlService} for method chaining + */ + @Override + public LotlService withCountrySpecificLotlFetcher(CountrySpecificLotlFetcher countrySpecificLotlFetcher) { + this.countrySpecificLotlFetcher = countrySpecificLotlFetcher; + return this; + } + + /** + * Sets the European List of Trusted Lists (LOTL) byte fetcher for the LOTL service. + * + * @param fetcher the fetcher to be used for fetching the LOTL XML data + * + * @return the current instance of {@link LotlService} for method chaining + */ + @Override + public LotlService withEuropeanLotlFetcher(EuropeanLotlFetcher fetcher) { + this.lotlByteFetcher = fetcher; + return this; + } + + /** + * Sets the European Resource Fetcher for the {@link LotlService}. + * + * @param europeanResourceFetcher the European Resource Fetcher to be used for fetching EU journal certificates + * + * @return the current instance of {@link LotlService} for method chaining + */ + @Override + public LotlService withEuropeanResourceFetcher(EuropeanResourceFetcher europeanResourceFetcher) { + this.europeanResourceFetcher = europeanResourceFetcher; + return this; + } + + /** + * Serializes the current state of the cache to the provided output stream. + * + * @param outputStream the output stream to which the cache will be serialized. + */ + @Override + public void serializeCache(OutputStream outputStream) { + try { + InMemoryLotlServiceCache inMemoryCache = (InMemoryLotlServiceCache) cache; + inMemoryCache.getAllData().serialize(outputStream); + } catch (Exception e) { + throw new PdfException(SignExceptionMessageConstant.CACHE_CANNOT_BE_SERIALIZED, e); + } + } + + /** + * Loads the cache from the network by fetching the latest LOTL data and related resources. + *

+ * This method fetches the main LOTL file, EU journal certificates, pivot files, and country-specific LOTLs, + * validates them, and stores them in the cache. + *

+ * If the main LOTL fetch fails, the method will throw a {@link PdfException} and will not proceed to fetch + * pivot files or country-specific LOTLs. If a country-specific LOTL fetch fails, the + * {@link LotlFetchingProperties#getOnCountryFetchFailureStrategy()} will be used to handle the failure. + *

+ * Note: This method is called during cache initialization and should not be called directly in normal + * operation. + */ + @Override + protected void loadFromNetwork() { + EuropeanLotlFetcher.Result mainLotlResult = lotlByteFetcher.fetch(); + if (!mainLotlResult.getLocalReport().getFailures().isEmpty()) { + // We throw on main LOTL fetch failure, so we don't proceed to pivot and country specific LOTL fetches + final ReportItem reportItem = mainLotlResult.getLocalReport().getFailures().get(0); + throw new PdfException(reportItem.getMessage(), reportItem.getExceptionCause()); + } + + EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates = + europeanResourceFetcher.getEUJournalCertificates(); + pivotFetcher.setCurrentJournalUri( + europeanResourceFetcherEUJournalCertificates.getCurrentlySupportedPublication()); + PivotFetcher.Result pivotsResult = pivotFetcher.downloadAndValidatePivotFiles(mainLotlResult.getLotlXml(), + europeanResourceFetcherEUJournalCertificates.getCertificates()); + + if (!pivotsResult.getLocalReport().getFailures().isEmpty()) { + ReportItem failure = pivotsResult.getLocalReport().getFailures().get(0); + throw new PdfException(failure.getMessage(), failure.getExceptionCause()); + } + + Map countrySpecificResults = + countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( + mainLotlResult.getLotlXml(), this); + + Map resultToAddToCache + = new HashMap<>(countrySpecificResults.size()); + for (Entry entry : countrySpecificResults.entrySet()) { + final Result countrySpecificResult = entry.getValue(); + if (countrySpecificResult.getLocalReport().getValidationResult() != ValidationResult.VALID) { + for (ReportItem log : countrySpecificResult.getLocalReport().getLogs()) { + log.setStatus(ReportItemStatus.INFO); + } + lotlFetchingProperties.getOnCountryFetchFailureStrategy().onCountryFailure(countrySpecificResult); + } + resultToAddToCache.put(entry.getKey(), countrySpecificResult); + } + + this.cache.setAllValues(mainLotlResult, europeanResourceFetcherEUJournalCertificates, pivotsResult, + resultToAddToCache); + } + + /** + * This method is intended to refresh the cache, it will try to download the latest LOTL data and update the + * cache accordingly. + *

+ * The rules taken into account are: + * Country specific LOTL files will be fetched, validated and updated per country. If country fails to fetch, + * {@link LotlFetchingProperties#getOnCountryFetchFailureStrategy()} will be used to perform corresponding action. + *

+ * For the main LOTL file, if the fetch fails, the cache will not be updated. Also, we will NOT proceed to update + * the pivot files. + * If the main LOTL file is fetched successfully, the pivot files will be fetched, validated and stored in the + * cache. + */ + @Override + protected void tryAndRefreshCache() { + String currentJournalUri; + + EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificatesToUse; + try { + EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates = + europeanResourceFetcher.getEUJournalCertificates(); + currentJournalUri = europeanResourceFetcherEUJournalCertificates.getCurrentlySupportedPublication(); + if (europeanResourceFetcherEUJournalCertificates.getLocalReport().getValidationResult() + != ValidationResult.VALID) { + LOGGER.warn(MessageFormatUtil.format( + SignLogMessageConstant.FAILED_TO_FETCH_EU_JOURNAL_CERTIFICATES, + europeanResourceFetcherEUJournalCertificates.getLocalReport().getFailures().get(0) + .getMessage())); + return; + } + europeanResourceFetcherEUJournalCertificatesToUse = europeanResourceFetcherEUJournalCertificates; + } catch (Exception e) { + LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.FAILED_TO_FETCH_EU_JOURNAL_CERTIFICATES, + e.getMessage())); + return; + } + + boolean mainLotlFetchSuccessful = false; + Exception mainLotlFetchException = null; + EuropeanLotlFetcher.Result mainLotlResultToUse = null; + try { + mainLotlResultToUse = lotlByteFetcher.fetch(); + mainLotlFetchSuccessful = + mainLotlResultToUse.hasValidXml() && mainLotlResultToUse.getLocalReport().getFailures().isEmpty(); + } catch (Exception e) { + mainLotlFetchException = e; + } + + boolean fetchPivotFilesSuccessful = false; + Exception pivotFetchException = null; + PivotFetcher.Result pivotResultToUse = null; + if (mainLotlFetchSuccessful) { + // Only if the main LOTL was fetched successfully, we proceed to re-fetch the new pivot files. + try { + pivotFetcher.setCurrentJournalUri(currentJournalUri); + pivotResultToUse = pivotFetcher.downloadAndValidatePivotFiles(mainLotlResultToUse.getLotlXml(), + europeanResourceFetcher.getEUJournalCertificates().getCertificates()); + fetchPivotFilesSuccessful = + pivotResultToUse.getLocalReport().getValidationResult() == ValidationResult.VALID; + } catch (Exception e) { + pivotFetchException = e; + } + } else { + LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.UPDATING_MAIN_LOTL_TO_CACHE_FAILED, + mainLotlFetchException == null ? "" : mainLotlFetchException.getMessage())); + } + + // Only update main LOTL and pivot result if both are successful. + if (!fetchPivotFilesSuccessful) { + LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.UPDATING_PIVOT_TO_CACHE_FAILED, + pivotFetchException == null ? "" : pivotFetchException.getMessage())); + } + if (!mainLotlFetchSuccessful) { + // if main LOTL is null we do not proceed with country specific LOTL fetch because it depends on main LOTL + return; + } + + Map allCountries; + try { + //Try updating the country specific LOTL files. + allCountries = countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( + mainLotlResultToUse.getLotlXml(), this); + } catch (Exception e) { + LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.FAILED_TO_FETCH_COUNTRY_SPECIFIC_LOTL, + e.getMessage())); + return; + } + // If an error happened don't update the cache value, if the warning is too stale we will throw an exception + if (allCountries == null || allCountries.isEmpty()) { + LOGGER.warn(SignLogMessageConstant.NO_COUNTRY_SPECIFIC_LOTL_FETCHED); + return; + } + Map countrySpecificLotlResultsToUse = + new HashMap<>(allCountries.size()); + for (Result countrySpecificResult : allCountries.values()) { + boolean wasCountryFetchedSuccessfully = countrySpecificResult.getLocalReport().getFailures().isEmpty(); + if (!wasCountryFetchedSuccessfully) { + LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.COUNTRY_SPECIFIC_FETCHING_FAILED, + countrySpecificResult.getCountrySpecificLotl().getSchemeTerritory(), + countrySpecificResult.getLocalReport())); + continue; + } + countrySpecificLotlResultsToUse.put(countrySpecificResult.createUniqueIdentifier(), countrySpecificResult); + } + if (pivotResultToUse == null) { + // nothing to update + return; + } + cache.setAllValues(mainLotlResultToUse, europeanResourceFetcherEUJournalCertificatesToUse, + pivotResultToUse, countrySpecificLotlResultsToUse); + + } + + EuropeanLotlFetcher.Result getLotlBytes() { + EuropeanLotlFetcher.Result cachedData = cache.getLotlResult(); + if (cachedData != null) { + return cachedData; + } + EuropeanLotlFetcher.Result data = lotlByteFetcher.fetch(); + cache.setLotlResult(data); + return data; + } + + HashMap getCachedCountrySpecificLotls() { + return new HashMap<>(cache.getCountrySpecificLotls()); + } + + EuropeanResourceFetcher.Result getEUJournalCertificates() { + EuropeanResourceFetcher.Result cachedResult = cache.getEUJournalCertificates(); + if (cachedResult != null) { + return cachedResult; + } + + EuropeanResourceFetcher.Result result = europeanResourceFetcher.getEUJournalCertificates(); + cache.setEuropeanResourceFetcherResult(result); + return result; + } + + PivotFetcher.Result getAndValidatePivotFiles(byte[] lotlXml, List certificates, + String currentJournalUri) { + PivotFetcher.Result result = cache.getPivotResult(); + if (result != null) { + return result; + } + pivotFetcher.setCurrentJournalUri(currentJournalUri); + PivotFetcher.Result newResult = pivotFetcher.downloadAndValidatePivotFiles(lotlXml, certificates); + cache.setPivotResult(newResult); + return newResult; + } + + List getCountrySpecificLotlFiles(byte[] lotlXml) { + final Map result = cache.getCountrySpecificLotls(); + if (result != null) { + return new ArrayList<>(result.values()); + } + final Map countrySpecificLotlResults = + countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( + lotlXml, this); + for (Map.Entry s : countrySpecificLotlResults.entrySet()) { + boolean successful = s.getValue().getLocalReport().getValidationResult() == ValidationResult.VALID; + if (successful || s.getValue().getLocalReport().getLogs().isEmpty()) { + cache.setCountrySpecificLotlResult(s.getValue()); + } + } + return new ArrayList<>(countrySpecificLotlResults.values()); + } +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanResourceFetcher.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanResourceFetcher.java index 068fe5b85b..860126068d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanResourceFetcher.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/EuropeanResourceFetcher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,12 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.signatures.SignJsonSerializerHelper; import com.itextpdf.signatures.validation.EuropeanTrustedListConfigurationFactory; import com.itextpdf.signatures.validation.SafeCalling; import com.itextpdf.signatures.validation.report.ReportItem; @@ -30,16 +36,20 @@ This file is part of the iText (R) project. import java.security.cert.Certificate; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import static com.itextpdf.signatures.validation.lotl.LotlValidator.JOURNAL_CERT_NOT_PARSABLE; import static com.itextpdf.signatures.validation.lotl.LotlValidator.LOTL_VALIDATION; - /** * This class fetches the European Union Journal certificates from the trusted list configuration. * It reads the PEM certificates and returns them in a structured result. */ public class EuropeanResourceFetcher { + private static final String JSON_KEY_CERTIFICATES = "certificates"; + private static final String JSON_KEY_LOCAL_REPORT = "localReport"; + private static final String JSON_KEY_CURRENTLY_SUPPORTED_PUBLICATION = "currentlySupportedPublication"; + /** * Default constructor for EuropeanResourceFetcher. * Initializes the fetcher without any specific configuration. @@ -70,8 +80,8 @@ public Result getEUJournalCertificates() { * Represents the result of fetching European Union Journal certificates. * Contains a list of report items and a list of certificates. */ - public static class Result { - private final ValidationReport localReport; + public static class Result implements IJsonSerializable { + private ValidationReport localReport; private List certificates; private String currentlySupportedPublication; @@ -128,6 +138,49 @@ public void setCertificates(List certificates) { public void setCurrentlySupportedPublication(String currentlySuppostedPublication) { this.currentlySupportedPublication = currentlySuppostedPublication; } - } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_LOCAL_REPORT, localReport.toJson()); + + JsonArray certificatesJson = new JsonArray(certificates.stream().map(certificate -> + SignJsonSerializerHelper.serializeCertificate(certificate)).collect(Collectors.toList())); + jsonObject.add(JSON_KEY_CERTIFICATES, certificatesJson); + + jsonObject.add(JSON_KEY_CURRENTLY_SUPPORTED_PUBLICATION, new JsonString(currentlySupportedPublication)); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link EuropeanResourceFetcher.Result}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link EuropeanResourceFetcher.Result} + */ + public static EuropeanResourceFetcher.Result fromJson(JsonValue jsonValue) { + JsonObject europeanResourceFetcherResultJson = (JsonObject) jsonValue; + JsonObject localReportJson = + (JsonObject) europeanResourceFetcherResultJson.getField(JSON_KEY_LOCAL_REPORT); + ValidationReport validationReportFromJson = ValidationReport.fromJson(localReportJson); + + JsonArray certificatesJson = + (JsonArray) europeanResourceFetcherResultJson.getField(JSON_KEY_CERTIFICATES); + List certificatesFromJson = certificatesJson.getValues().stream().map(certificateJson -> + SignJsonSerializerHelper.deserializeCertificate(certificateJson)).collect(Collectors.toList()); + String currentlySupportedPublicationFromJson = ((JsonString) europeanResourceFetcherResultJson.getField( + JSON_KEY_CURRENTLY_SUPPORTED_PUBLICATION)).getValue(); + EuropeanResourceFetcher.Result resultFromJson = new Result(); + resultFromJson.localReport = validationReportFromJson; + resultFromJson.certificates = certificatesFromJson; + resultFromJson.currentlySupportedPublication = currentlySupportedPublicationFromJson; + return resultFromJson; + } + } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnCountryFetchFailureStrategy.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnCountryFetchFailureStrategy.java index 275d110842..ae0a1ddac3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnCountryFetchFailureStrategy.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnCountryFetchFailureStrategy.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnFailingCountryLotlData.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnFailingCountryLotlData.java index df11824129..8376cdf267 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnFailingCountryLotlData.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IOnFailingCountryLotlData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IServiceContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IServiceContext.java index 21bf129fb4..93e5c89ffe 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IServiceContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/IServiceContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCache.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCache.java index c85f2b7277..5b55a9f483 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCache.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCache.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InvalidLotlDataException.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InvalidLotlDataException.java index 19ccf4d53c..153179977d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InvalidLotlDataException.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/InvalidLotlDataException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1.java index e58351ec60..f957cedd93 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,44 +22,20 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.itextpdf.signatures.CertificateUtil; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonNull; +import com.itextpdf.commons.json.JsonNumber; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.kernel.exceptions.PdfException; +import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; import com.itextpdf.signatures.validation.lotl.PivotFetcher.Result; -import com.itextpdf.signatures.validation.lotl.criteria.CertSubjectDNAttributeCriteria; -import com.itextpdf.signatures.validation.lotl.criteria.Criteria; -import com.itextpdf.signatures.validation.lotl.criteria.CriteriaList; -import com.itextpdf.signatures.validation.lotl.criteria.ExtendedKeyUsageCriteria; -import com.itextpdf.signatures.validation.lotl.criteria.KeyUsageCriteria; -import com.itextpdf.signatures.validation.lotl.criteria.PolicySetCriteria; -import com.itextpdf.signatures.validation.report.CertificateReportItem; -import com.itextpdf.signatures.validation.report.ReportItem; -import com.itextpdf.signatures.validation.report.ValidationReport; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonGenerator.Feature; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.core.util.MinimalPrettyPrinter; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleModule; -import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.security.cert.Certificate; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Base64; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -69,44 +45,12 @@ This file is part of the iText (R) project. // Future changes to the class that are not backward compatible should result in a new version of the // class (e.g., LotlCacheDataV2) so that older cache files can still be read. // Note that the version suffix is only for the class name; it does not affect the serialization format. -class LotlCacheDataV1 { - - private static final String JSON_KEY_BASE64_ENCODED = "base64Encoded"; - private static final String JSON_KEY_REPORT_ITEMS = "reportItems"; - private static final String JSON_KEY_REPORT_ITEM_CHECKNAME = "checkName"; - private static final String JSON_KEY_REPORT_ITEM_MESSAGE = "message"; - private static final String JSON_KEY_REPORT_CAUSE = "exceptionCause"; - private static final String JSON_KEY_REPORT_STATUS = "status"; - private static final String JSON_KEY_CERTIFICATE = "certificate"; - private static final String JSON_KEY_CERTIFICATES = "certificates"; - private static final String JSON_KEY_QUALIFIER_EXTENSIONS = "qualifierExtensions"; - private static final String JSON_KEY_QUALIFIERS = "qualifiers"; - private static final String JSON_KEY_CRITERIA_LIST = "criteriaList"; - private static final String JSON_KEY_CRITERIAS = "criterias"; - private static final String JSON_KEY_CRITERIA_ASSERT_VALUE = "criteriaAssertValue"; - private static final String JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA = "certSubjectDNAttributeCriteria"; - private static final String JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS = "requiredAttributeIDs"; - private static final String JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA = "extendedKeyUsageCriteria"; - private static final String JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES = "requiredExtendedKeyUsages"; - private static final String JSON_KEY_CRITERIA_POLICY_SET_CRITERIA = "policySetCriteria"; - private static final String JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS = "requiredPolicyIDs"; - private static final String JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA = "keyUsageCriteria"; - private static final String JSON_KEY_CRITERIA_KEY_USAGE_BITS = "requiredKeyUsageBits"; - private static final String JSON_KEY_SERVICE_TYPE = "serviceType"; - private static final String JSON_KEY_SERVICE_EXTENSIONS = "serviceExtensions"; - private static final String JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS = "serviceChronologicalInfos"; - private static final String JSON_KEY_SERVICE_STATUS = "serviceStatus"; - private static final String JSON_KEY_SERVICE_STATUS_STARTING_TIME = "serviceStatusStartingTime"; - private static final String JSON_KEY_URI = "uri"; +class LotlCacheDataV1 implements IJsonSerializable { private static final String JSON_KEY_LOTL_CACHE = "lotlCache"; private static final String JSON_KEY_EUROPEAN_RESOURCE_FETCHER_CACHE = "europeanResourceFetcherCache"; private static final String JSON_KEY_PIVOT_CACHE = "pivotCache"; private static final String JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE = "countrySpecificLotlCache"; private static final String JSON_KEY_TIME_STAMPS = "timeStamps"; - private static final String JSON_KEY_LOCAL_REPORT = "localReport"; - private static final String JSON_KEY_CURRENTLY_SUPPORTED_PUBLICATION = "currentlySupportedPublication"; - - private static final String DATE_TIME_FORMATTER_PATTERN = "yyyy-MM-dd'T'HH:mm:ss"; private EuropeanLotlFetcher.Result lotlCache; private EuropeanResourceFetcher.Result europeanResourceFetcherCache; @@ -130,15 +74,25 @@ public LotlCacheDataV1() { } public static LotlCacheDataV1 deserialize(InputStream inputStream) { - try { - return createObjectMapper().readValue(inputStream, LotlCacheDataV1.class); - } catch (IOException e) { - throw new RuntimeException(e); + try (InputStream is = inputStream; + ByteArrayOutputStream buffer = new ByteArrayOutputStream()) { + + byte[] data = new byte[4096]; + int bytesRead; + + while ((bytesRead = is.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, bytesRead); + } + + byte[] json = buffer.toByteArray(); + return LotlCacheDataV1.fromJson(JsonValue.fromJson(new String(json, StandardCharsets.UTF_8))); + } catch (Exception e) { + throw new PdfException(SignExceptionMessageConstant.COULD_NOT_INITIALIZE_FROM_FILE, e); } } public void serialize(OutputStream os) throws IOException { - createObjectMapper().writer().writeValue(os, this); + os.write(toJson().toJson().getBytes(StandardCharsets.UTF_8)); } public EuropeanResourceFetcher.Result getEuropeanResourceFetcherCache() { @@ -161,543 +115,109 @@ public EuropeanLotlFetcher.Result getLotlCache() { return lotlCache; } - private static ObjectMapper createObjectMapper() { - final ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.disable(Feature.AUTO_CLOSE_TARGET); - objectMapper.writer(new MinimalPrettyPrinter()); - - SimpleModule module = new SimpleModule(); - module.addSerializer(X509Certificate.class, new X509CertificateSerializer()); - module.addSerializer(ValidationReport.class, new ValidationReportSerializer()); - module.addSerializer(EuropeanResourceFetcher.Result.class, new EuropeanResultFetcherSerializer()); - module.addSerializer(LotlCacheDataV1.class, new LotlCacheDataV1Serializer()); - module.addSerializer(ServiceChronologicalInfo.class, new ServiceChronologicalInfoSerializer()); - - objectMapper.configOverride(CountryServiceContext.class) - .setIgnorals(JsonIgnoreProperties.Value.forIgnoredProperties("currentChronologicalInfo")); - - module.addDeserializer(Certificate.class, new X509CertificateDeserializer()); - module.addDeserializer(X509Certificate.class, new X509CertificateDeserializer()); - module.addDeserializer(ValidationReport.class, new ValidationReportDeserializer()); - module.addDeserializer(ReportItem.class, new ReportItemDeserializer()); - module.addDeserializer(IServiceContext.class, new IServiceContextDeserializer()); - module.addDeserializer(ServiceChronologicalInfo.class, new ServiceChronologicalInfoDeserializer()); - - objectMapper.registerModule(module); - - objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); - return objectMapper; - } - - static class LotlCacheDataV1Serializer extends JsonSerializer { - public LotlCacheDataV1Serializer() { - //empty constructor - } - - @Override - public void serialize(LotlCacheDataV1 lotlCacheData, JsonGenerator jsonGenerator, - SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeStartObject(); - - jsonGenerator.writeObjectField(JSON_KEY_LOTL_CACHE, lotlCacheData.getLotlCache()); - jsonGenerator.writeObjectField(JSON_KEY_EUROPEAN_RESOURCE_FETCHER_CACHE, - lotlCacheData.getEuropeanResourceFetcherCache()); - jsonGenerator.writeObjectField(JSON_KEY_PIVOT_CACHE, lotlCacheData.getPivotCache()); - - if (lotlCacheData.getCountrySpecificLotlCache() != null) { - jsonGenerator.writeObjectFieldStart(JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE); - List keys = new ArrayList<>(lotlCacheData.getCountrySpecificLotlCache().keySet()); - //sort the keys - Collections.sort(keys); - for (String key : keys) { - CountrySpecificLotlFetcher.Result entry = lotlCacheData.getCountrySpecificLotlCache().get(key); - jsonGenerator.writeObjectField(key, entry); - } - jsonGenerator.writeEndObject(); - } else { - jsonGenerator.writeNullField(JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE); - } - - if (lotlCacheData.getTimeStamps() != null) { - jsonGenerator.writeObjectFieldStart(JSON_KEY_TIME_STAMPS); - for (Map.Entry entry : lotlCacheData.getTimeStamps().entrySet()) { - jsonGenerator.writeNumberField(entry.getKey(), entry.getValue()); - } - jsonGenerator.writeEndObject(); - } else { - jsonGenerator.writeNullField(JSON_KEY_TIME_STAMPS); - } - jsonGenerator.writeEndObject(); - } - } - - static class X509CertificateDeserializer extends com.fasterxml.jackson.databind.JsonDeserializer { - public X509CertificateDeserializer() { - //empty constructor - } - - @Override - public X509Certificate deserialize(com.fasterxml.jackson.core.JsonParser p, - com.fasterxml.jackson.databind.DeserializationContext ctxt) throws IOException { - ObjectCodec codec = p.getCodec(); - JsonNode node = codec.readTree(p); - String base64Encoded = node.get(JSON_KEY_BASE64_ENCODED).asText(); - byte[] decoded = Base64.getDecoder().decode(base64Encoded); - try { - return (X509Certificate) CertificateUtil.generateCertificate(new ByteArrayInputStream(decoded)); - } catch (CertificateException e) { - throw new RuntimeException(e); - } - } - } - - static class ValidationReportDeserializer extends JsonDeserializer { - public ValidationReportDeserializer() { - //empty constructor - } - - @Override - public ValidationReport deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - ObjectCodec codec = p.getCodec(); - JsonNode node = codec.readTree(p); - - ValidationReport report = new ValidationReport(); - - JsonNode itemsNode = node.get(JSON_KEY_REPORT_ITEMS); - if (itemsNode != null && itemsNode.isArray()) { - for (JsonNode itemNode : itemsNode) { - ReportItem item = codec.treeToValue(itemNode, ReportItem.class); - report.addReportItem(item); - } - } - return report; - } - } - - static class ReportItemDeserializer extends JsonDeserializer { - public ReportItemDeserializer() { - //empty constructor - } - - @Override - public ReportItem deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - ObjectCodec codec = p.getCodec(); - JsonNode node = codec.readTree(p); - - String checkName = - node.has(JSON_KEY_REPORT_ITEM_CHECKNAME) ? node.get(JSON_KEY_REPORT_ITEM_CHECKNAME).asText() : null; - String message = - node.has(JSON_KEY_REPORT_ITEM_MESSAGE) ? node.get(JSON_KEY_REPORT_ITEM_MESSAGE).asText() : null; - ReportItem.ReportItemStatus status = node.has(JSON_KEY_REPORT_STATUS) ? ReportItem.ReportItemStatus.valueOf( - node.get(JSON_KEY_REPORT_STATUS).asText()) : null; - - Exception cause = null; - if (node.has(JSON_KEY_REPORT_CAUSE) && !node.get(JSON_KEY_REPORT_CAUSE).isNull()) { - JsonNode causeNode = node.get(JSON_KEY_REPORT_CAUSE); - cause = codec.treeToValue(causeNode, Exception.class); - } - - ReportItem item; - if (node.has(JSON_KEY_CERTIFICATE) && !node.get(JSON_KEY_CERTIFICATE).isNull()) { - X509Certificate certificate = codec.treeToValue(node.get(JSON_KEY_CERTIFICATE), X509Certificate.class); - item = new CertificateReportItem(certificate, checkName, message, cause, status); - } else { - item = new ReportItem(checkName, message, cause, status); - } - - return item; - } - } - - static class ServiceChronologicalInfoSerializer extends JsonSerializer { - public ServiceChronologicalInfoSerializer() { - //empty constructor - } - - @Override - public void serialize(ServiceChronologicalInfo info, JsonGenerator jsonGenerator, - SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeStartObject(); - jsonGenerator.writeStringField(JSON_KEY_SERVICE_STATUS, info.getServiceStatus()); - if (info.getServiceStatusStartingTime() != null) { - jsonGenerator.writeStringField(JSON_KEY_SERVICE_STATUS_STARTING_TIME, - info.getServiceStatusStartingTime() - .format(DateTimeFormatter.ofPattern(DATE_TIME_FORMATTER_PATTERN))); - } else { - jsonGenerator.writeNullField(JSON_KEY_SERVICE_STATUS_STARTING_TIME); - } - - if (info.getServiceExtensions() != null) { - jsonGenerator.writeArrayFieldStart(JSON_KEY_SERVICE_EXTENSIONS); - for (AdditionalServiceInformationExtension extension : info.getServiceExtensions()) { - jsonGenerator.writeStartObject(); - jsonGenerator.writeStringField(JSON_KEY_URI, extension.getUri()); - jsonGenerator.writeEndObject(); - } - jsonGenerator.writeEndArray(); - } else { - jsonGenerator.writeNullField(JSON_KEY_SERVICE_EXTENSIONS); - } - - // Qualifier extensions - jsonGenerator.writeArrayFieldStart(JSON_KEY_QUALIFIER_EXTENSIONS); - for (QualifierExtension extension : info.getQualifierExtensions()) { - jsonGenerator.writeStartObject(); - - jsonGenerator.writeArrayFieldStart(JSON_KEY_QUALIFIERS); - for (String qualifier : extension.getQualifiers()) { - jsonGenerator.writeString(qualifier); - } - jsonGenerator.writeEndArray(); - - serializeCriteriaList(extension.getCriteriaList(), jsonGenerator); - - jsonGenerator.writeEndObject(); - } - jsonGenerator.writeEndArray(); - - jsonGenerator.writeEndObject(); - } - - private static void serializeCriteriaList(CriteriaList criteriaList, JsonGenerator jsonGenerator) - throws IOException { - if (criteriaList == null) { - return; - } - jsonGenerator.writeFieldName(JSON_KEY_CRITERIA_LIST); - - jsonGenerator.writeStartObject(); - jsonGenerator.writeStringField(JSON_KEY_CRITERIA_ASSERT_VALUE, criteriaList.getAssertValue()); - - jsonGenerator.writeArrayFieldStart(JSON_KEY_CRITERIAS); - for (Criteria criteria : criteriaList.getCriteriaList()) { - jsonGenerator.writeStartObject(); - - if (criteria instanceof CriteriaList) { - serializeCriteriaList((CriteriaList) criteria, jsonGenerator); - } else if (criteria instanceof CertSubjectDNAttributeCriteria) { - writeStringList(JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA, - JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS, - ((CertSubjectDNAttributeCriteria) criteria).getRequiredAttributeIds(), jsonGenerator); - } else if (criteria instanceof ExtendedKeyUsageCriteria) { - writeStringList(JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA, - JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES, - ((ExtendedKeyUsageCriteria) criteria).getRequiredExtendedKeyUsages(), jsonGenerator); - } else if (criteria instanceof KeyUsageCriteria) { - List keyUsages = new ArrayList<>(); - for (Boolean keyUsage : ((KeyUsageCriteria) criteria).getKeyUsageBits()) { - if (keyUsage == null) { - keyUsages.add("null"); - } else { - keyUsages.add(keyUsage ? "true" : "false"); - } - } - - writeStringList(JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA, - JSON_KEY_CRITERIA_KEY_USAGE_BITS, keyUsages, jsonGenerator); - - } else if (criteria instanceof PolicySetCriteria) { - writeStringList(JSON_KEY_CRITERIA_POLICY_SET_CRITERIA, - JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS, - ((PolicySetCriteria) criteria).getRequiredPolicyIds(), jsonGenerator); - } - - jsonGenerator.writeEndObject(); - } - - jsonGenerator.writeEndArray(); - - jsonGenerator.writeEndObject(); - } - - private static void writeStringList(String parentFieldName, String arrayFieldName, List stringList, - JsonGenerator jsonGenerator) - throws IOException { - jsonGenerator.writeFieldName(parentFieldName); - jsonGenerator.writeStartObject(); - - jsonGenerator.writeArrayFieldStart(arrayFieldName); - for (String keyUsage : stringList) { - jsonGenerator.writeString(keyUsage); - } - jsonGenerator.writeEndArray(); - - jsonGenerator.writeEndObject(); - } - } - - static class EuropeanResultFetcherSerializer extends JsonSerializer { - public EuropeanResultFetcherSerializer() { - //empty constructor - } - - @Override - public void serialize(EuropeanResourceFetcher.Result result, JsonGenerator jsonGenerator, - SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeStartObject(); - - jsonGenerator.writeObjectField(JSON_KEY_LOCAL_REPORT, result.getLocalReport()); - - jsonGenerator.writeArrayFieldStart(JSON_KEY_CERTIFICATES); - - for (Certificate certificate : result.getCertificates()) { - jsonGenerator.writeObject(certificate); - } - jsonGenerator.writeEndArray(); - - jsonGenerator.writeStringField(JSON_KEY_CURRENTLY_SUPPORTED_PUBLICATION, - result.getCurrentlySupportedPublication()); - jsonGenerator.writeEndObject(); - } - } - - static class ValidationReportSerializer extends JsonSerializer { - public ValidationReportSerializer() { - //empty constructor - } - - @Override - public void serialize(ValidationReport report, JsonGenerator gen, SerializerProvider serializers) - throws IOException { - gen.writeStartObject(); - gen.writeArrayFieldStart(JSON_KEY_REPORT_ITEMS); - - List sortedItems = new ArrayList<>(report.getLogs()); - // Sort the items by check name to ensure consistent order - sortedItems.sort((item1, item2) -> { - if (item1.getCheckName() == null && item2.getCheckName() == null) { - return 0; - } else if (item1.getCheckName() == null) { - return -1; - } else if (item2.getCheckName() == null) { - return 1; - } else { - return item1.getCheckName().compareTo(item2.getCheckName()); - } - }); - - for (ReportItem item : sortedItems) { - gen.writeObject(item); - } - gen.writeEndArray(); - gen.writeEndObject(); - } - } - - static class X509CertificateSerializer extends JsonSerializer { - public X509CertificateSerializer() { - //empty constructor - } - - @Override - public void serialize(X509Certificate cert, JsonGenerator gen, SerializerProvider serializers) - throws IOException { - gen.writeStartObject(); - byte[] encoded; - try { - encoded = cert.getEncoded(); - } catch (CertificateEncodingException e) { - throw new RuntimeException(e); - } - String base64Encoded = Base64.getEncoder().encodeToString(encoded); - gen.writeStringField(JSON_KEY_BASE64_ENCODED, base64Encoded); - gen.writeEndObject(); - } - } - - static class IServiceContextDeserializer extends JsonDeserializer { - public IServiceContextDeserializer() { - //empty constructor - } - - @Override - public IServiceContext deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - ObjectCodec codec = p.getCodec(); - JsonNode node = codec.readTree(p); - List certificates = new ArrayList<>(); - JsonNode certsNode = node.get(JSON_KEY_CERTIFICATES); - if (certsNode != null && certsNode.isArray()) { - for (JsonNode certNode : certsNode) { - X509Certificate cert = codec.treeToValue(certNode, X509Certificate.class); - certificates.add(cert); - } - } - //if it contains a JSON_KEY_SERVICE_TYPE field, it is a CountryServiceContext - if (node.has(JSON_KEY_SERVICE_TYPE)) { - CountryServiceContext context = new CountryServiceContext(); - ArrayList infos = new ArrayList<>(); - JsonNode infosNode = node.get(JSON_KEY_SERVICE_CHRONOLOGICAL_INFOS); - if (infosNode != null && infosNode.isArray()) { - for (JsonNode infoNode : infosNode) { - ServiceChronologicalInfo info = codec.treeToValue(infoNode, ServiceChronologicalInfo.class); - infos.add(info); - } - } - for (Certificate certificate : certificates) { - context.addCertificate(certificate); - } - context.getServiceChronologicalInfos().addAll(infos); - context.setServiceType(node.get(JSON_KEY_SERVICE_TYPE).asText()); - - return context; - - } - SimpleServiceContext context = new SimpleServiceContext(); - for (Certificate certificate : certificates) { - context.addCertificate(certificate); - } - return context; - } - } - - static class ServiceChronologicalInfoDeserializer extends JsonDeserializer { - public ServiceChronologicalInfoDeserializer() { - //empty constructor - } - - @Override - public ServiceChronologicalInfo deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - ObjectCodec codec = p.getCodec(); - JsonNode node = codec.readTree(p); - - String serviceStatus = - node.has(JSON_KEY_SERVICE_STATUS) ? node.get(JSON_KEY_SERVICE_STATUS).asText() : null; - LocalDateTime serviceStatusStartingTime = - node.has(JSON_KEY_SERVICE_STATUS_STARTING_TIME) ? LocalDateTime.parse( - node.get(JSON_KEY_SERVICE_STATUS_STARTING_TIME).asText().split("\\.")[0], - DateTimeFormatter.ofPattern(DATE_TIME_FORMATTER_PATTERN)) : null; - ServiceChronologicalInfo info = new ServiceChronologicalInfo(); - info.setServiceStatus(serviceStatus); - info.setServiceStatusStartingTime(serviceStatusStartingTime); - - if (node.has(JSON_KEY_SERVICE_EXTENSIONS)) { - JsonNode extensionsNode = node.get(JSON_KEY_SERVICE_EXTENSIONS); - if (extensionsNode != null && extensionsNode.isArray()) { - for (JsonNode extensionNode : extensionsNode) { - AdditionalServiceInformationExtension extension = codec.treeToValue(extensionNode, - AdditionalServiceInformationExtension.class); - info.getServiceExtensions().add(extension); - } - } - } - - if (node.has(JSON_KEY_QUALIFIER_EXTENSIONS)) { - JsonNode extensionsNode = node.get(JSON_KEY_QUALIFIER_EXTENSIONS); - if (extensionsNode != null && extensionsNode.isArray()) { - for (JsonNode extensionNode : extensionsNode) { - JsonNode qualifiersNode = extensionNode.get(JSON_KEY_QUALIFIERS); - if (qualifiersNode == null || !qualifiersNode.isArray()) { - continue; - } - - QualifierExtension qualifierExtension = new QualifierExtension(); - for (JsonNode qualifierNode : qualifiersNode) { - if (qualifierNode != null && qualifierNode.isTextual()) { - qualifierExtension.addQualifier(qualifierNode.asText()); - } - } - - JsonNode criteriaListNode = extensionNode.get(JSON_KEY_CRITERIA_LIST); - if (criteriaListNode == null) { - continue; - } - - CriteriaList criteriaList = readCriteriaListNode(criteriaListNode); - if (criteriaList == null) { - continue; - } - - qualifierExtension.setCriteriaList(criteriaList); - info.addQualifierExtension(qualifierExtension); - } - } - } - - return info; - } - - private static CriteriaList readCriteriaListNode(JsonNode criteriaListNode) { - JsonNode assertValueNode = criteriaListNode.get(JSON_KEY_CRITERIA_ASSERT_VALUE); - if (assertValueNode == null || !assertValueNode.isTextual()) { - return null; - } - - CriteriaList criteriaList = new CriteriaList(assertValueNode.asText()); - - JsonNode criteriasNode = criteriaListNode.get(JSON_KEY_CRITERIAS); - if (criteriasNode == null || !criteriasNode.isArray()) { - return null; - } - - for (JsonNode criteriaNode : criteriasNode) { - JsonNode citeriaNode = criteriaNode.get(JSON_KEY_CRITERIA_LIST); - if (citeriaNode != null ) { - Criteria innerCriteriaList = readCriteriaListNode(citeriaNode); - if (innerCriteriaList != null) { - criteriaList.addCriteria(innerCriteriaList); - } - continue; - } - - citeriaNode = criteriaNode.get(JSON_KEY_CRITERIA_CERT_SUBJECT_DN_ATTRIBUTE_CRITERIA); - if (citeriaNode != null) { - CertSubjectDNAttributeCriteria criteria = new CertSubjectDNAttributeCriteria(); - JsonNode requiredAttributeIDsNode = citeriaNode.get(JSON_KEY_CRITERIA_REQUIRED_ATTRIBUTE_IDS); - if (requiredAttributeIDsNode != null && requiredAttributeIDsNode.isArray()) { - for (JsonNode attributeIDNode : requiredAttributeIDsNode) { - criteria.addRequiredAttributeId(attributeIDNode.asText()); - } - } - criteriaList.addCriteria(criteria); - continue; - } - citeriaNode = criteriaNode.get(JSON_KEY_CRITERIA_EXTENDED_KEY_USAGE_CRITERIA); - if (citeriaNode != null) { - ExtendedKeyUsageCriteria criteria = new ExtendedKeyUsageCriteria(); - JsonNode requiredExtendedKeyUsagesNode = citeriaNode.get( - JSON_KEY_CRITERIA_REQUIRED_EXTENDED_KEY_USAGES); - if (requiredExtendedKeyUsagesNode != null && requiredExtendedKeyUsagesNode.isArray()) { - for (JsonNode extendedKeyUsageNode : requiredExtendedKeyUsagesNode) { - criteria.addRequiredExtendedKeyUsage(extendedKeyUsageNode.asText()); - } - } - criteriaList.addCriteria(criteria); - continue; - } - - citeriaNode = criteriaNode.get(JSON_KEY_CRITERIA_POLICY_SET_CRITERIA); - if (citeriaNode != null) { - PolicySetCriteria criteria = new PolicySetCriteria(); - JsonNode requiredPolicyIDsNode = citeriaNode.get(JSON_KEY_CRITERIA_REQUIRED_POLICY_IDS); - if (requiredPolicyIDsNode != null && requiredPolicyIDsNode.isArray()) { - for (JsonNode policyIDNode : requiredPolicyIDsNode) { - criteria.addRequiredPolicyId(policyIDNode.asText()); - } - } - criteriaList.addCriteria(criteria); - continue; - } - - citeriaNode = criteriaNode.get(JSON_KEY_CRITERIA_KEY_USAGE_CRITERIA); - if (citeriaNode != null) { - KeyUsageCriteria criteria = new KeyUsageCriteria(); - JsonNode requiredKeyUsageBitsNode = citeriaNode.get(JSON_KEY_CRITERIA_KEY_USAGE_BITS); - if (requiredKeyUsageBitsNode != null && requiredKeyUsageBitsNode.isArray()) { - int counter = 0; - for (JsonNode keyUsageBitNode : requiredKeyUsageBitsNode) { - String text = keyUsageBitNode.asText(); - criteria.getKeyUsageBits()[counter] = - "null".equals(text) ? null : Boolean.parseBoolean(text); - counter++; - } - } - criteriaList.addCriteria(criteria); - continue; - } - throw new RuntimeException("Unknown criteria type in JSON"); - - } - return criteriaList; - } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject lotlCacheDataJson = new JsonObject(); + if (lotlCache != null) { + lotlCacheDataJson.add(JSON_KEY_LOTL_CACHE, lotlCache.toJson()); + } else { + lotlCacheDataJson.add(JSON_KEY_LOTL_CACHE, JsonNull.JSON_NULL); + } + if (europeanResourceFetcherCache != null) { + lotlCacheDataJson.add(JSON_KEY_EUROPEAN_RESOURCE_FETCHER_CACHE, + europeanResourceFetcherCache.toJson()); + } else { + lotlCacheDataJson.add(JSON_KEY_EUROPEAN_RESOURCE_FETCHER_CACHE, JsonNull.JSON_NULL); + } + if (pivotCache != null) { + lotlCacheDataJson.add(JSON_KEY_PIVOT_CACHE, pivotCache.toJson()); + } else { + lotlCacheDataJson.add(JSON_KEY_PIVOT_CACHE, JsonNull.JSON_NULL); + } + + if (getCountrySpecificLotlCache() != null) { + List keys = new ArrayList<>(getCountrySpecificLotlCache().keySet()); + //sort the keys + Collections.sort(keys); + JsonObject countrySpecificLotlCacheJson = new JsonObject(); + for (String key : keys) { + CountrySpecificLotlFetcher.Result entry = getCountrySpecificLotlCache().get(key); + countrySpecificLotlCacheJson.add(key, entry.toJson()); + } + lotlCacheDataJson.add(JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE, + countrySpecificLotlCacheJson); + } else { + lotlCacheDataJson.add(JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE, JsonNull.JSON_NULL); + } + + if (getTimeStamps() != null) { + JsonObject timestampsJson = new JsonObject(); + for (Map.Entry entry : getTimeStamps().entrySet()) { + timestampsJson.add(entry.getKey(), new JsonNumber((double) entry.getValue())); + } + lotlCacheDataJson.add(JSON_KEY_TIME_STAMPS, timestampsJson); + } else { + lotlCacheDataJson.add(JSON_KEY_TIME_STAMPS, JsonNull.JSON_NULL); + } + return lotlCacheDataJson; + } + + /** + * Deserializes {@link JsonValue} into {@link LotlCacheDataV1}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link LotlCacheDataV1} + */ + private static LotlCacheDataV1 fromJson(JsonValue jsonValue) { + LotlCacheDataV1 lotlCacheDataFromJson = new LotlCacheDataV1(); + JsonObject lotlCacheDataJson = (JsonObject) jsonValue; + + JsonValue lotlCacheJson = lotlCacheDataJson.getField(JSON_KEY_LOTL_CACHE); + if (JsonNull.JSON_NULL != lotlCacheJson) { + lotlCacheDataFromJson.lotlCache = EuropeanLotlFetcher.Result.fromJson(lotlCacheJson); + } + + JsonValue europeanResourceFetcherCacheJson = + lotlCacheDataJson.getField(JSON_KEY_EUROPEAN_RESOURCE_FETCHER_CACHE); + if (JsonNull.JSON_NULL != europeanResourceFetcherCacheJson) { + lotlCacheDataFromJson.europeanResourceFetcherCache = + EuropeanResourceFetcher.Result.fromJson(europeanResourceFetcherCacheJson); + } + + JsonValue pivotFetcherJson = lotlCacheDataJson.getField(JSON_KEY_PIVOT_CACHE); + if (JsonNull.JSON_NULL != pivotFetcherJson) { + lotlCacheDataFromJson.pivotCache = PivotFetcher.Result.fromJson(pivotFetcherJson); + } + + JsonValue countrySpecificLotlCacheJson = + lotlCacheDataJson.getField(JSON_KEY_COUNTRY_SPECIFIC_LOTL_CACHE); + Map countrySpecificLotlCacheFromJson = new HashMap<>(); + if (JsonNull.JSON_NULL != countrySpecificLotlCacheJson) { + JsonObject countrySpecificLotlCacheJsonObject = (JsonObject) countrySpecificLotlCacheJson; + for (Map.Entry countrySpecificLotlFetcherResultJson : + countrySpecificLotlCacheJsonObject.getFields().entrySet()) { + countrySpecificLotlCacheFromJson.put(countrySpecificLotlFetcherResultJson.getKey(), + CountrySpecificLotlFetcher.Result.fromJson(countrySpecificLotlFetcherResultJson.getValue())); + } + } + lotlCacheDataFromJson.countrySpecificLotlCache = countrySpecificLotlCacheFromJson; + + JsonValue timestampsJson = lotlCacheDataJson.getField(JSON_KEY_TIME_STAMPS); + Map timestampsFromJson = new HashMap<>(); + if (JsonNull.JSON_NULL != timestampsJson) { + JsonObject timestampsJsonObject = (JsonObject) timestampsJson; + for (Map.Entry timestampJson : timestampsJsonObject.getFields().entrySet()) { + timestampsFromJson.put(timestampJson.getKey(), + (long) ((JsonNumber) timestampJson.getValue()).getValue()); + } + } + lotlCacheDataFromJson.timeStamps = timestampsFromJson; + return lotlCacheDataFromJson; } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCountryCodeConstants.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCountryCodeConstants.java index 675515c7d4..332a83384b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCountryCodeConstants.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlCountryCodeConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlFetchingProperties.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlFetchingProperties.java index 9e7a3f7dc9..0476e7cf52 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlFetchingProperties.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlFetchingProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -231,6 +231,4 @@ boolean shouldProcessCountry(String countryName) { List getSchemaNames() { return Collections.unmodifiableList(Arrays.asList(schemaNames.toArray(new String[0]))); } - - } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlService.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlService.java index 63f6c64999..e5620b2d2d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlService.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlService.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -28,58 +28,50 @@ This file is part of the iText (R) project. import com.itextpdf.io.resolver.resource.IResourceRetriever; import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; -import com.itextpdf.signatures.logs.SignLogMessageConstant; import com.itextpdf.signatures.validation.TrustedCertificatesStore; -import com.itextpdf.signatures.validation.lotl.CountrySpecificLotlFetcher.Result; -import com.itextpdf.signatures.validation.report.ReportItem; -import com.itextpdf.signatures.validation.report.ReportItem.ReportItemStatus; -import com.itextpdf.signatures.validation.report.ValidationReport.ValidationResult; +import com.itextpdf.signatures.validation.report.ValidationReport; import java.io.InputStream; import java.io.OutputStream; -import java.util.HashSet; -import java.util.Set; +import java.util.Collections; import java.util.function.Function; import java.util.function.Supplier; import org.slf4j.Logger; import java.io.IOException; import java.net.URL; -import java.security.cert.Certificate; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import java.util.Timer; import java.util.function.LongUnaryOperator; - /** - * This class provides services for managing the List of Trusted Lists (Lotl) and related resources. - * It includes methods for fetching, validating, and caching Lotl data, as well as managing the European Resource - * Fetcher and Country-Specific Lotl Fetcher. + * This class provides API for managing the List of Trusted Lists (LOTL) and related resources. + * It includes API for fetching, validating, and caching LOTL data, as well as managing the European Resource + * Fetcher and Country-Specific LOTL Fetcher. * It also allows for setting custom resource retrievers and cache timeouts. */ +// TODO DEVSIX-9710: Make this class abstract and remove EuropeanLotlService specific methods to EuropeanLotlService public class LotlService implements AutoCloseable { - private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(LotlService.class); private static final Object GLOBAL_SERVICE_LOCK = new Object(); + private static final String DEFAULT_USER_AGENT = "iText-lotl-retriever/1.0"; + protected final LotlFetchingProperties lotlFetchingProperties; + // Global service static LotlService GLOBAL_SERVICE; - private final LotlFetchingProperties lotlFetchingProperties; - //Services - private LotlServiceCache cache; - private EuropeanResourceFetcher europeanResourceFetcher = new EuropeanResourceFetcher(); - private EuropeanLotlFetcher lotlByteFetcher; - private PivotFetcher pivotFetcher; - private CountrySpecificLotlFetcher countrySpecificLotlFetcher; + + private static final String ABSTRACT_CLASS_EXCEPTION = "Treat this method as abstract so you need to implement " + + "it on your own. It will become abstract in the next major release."; + private static final String NOT_USABLE_METHOD_EXCEPTION = "You are using the method which will be removed " + + "in the next major release. You probably need to extend EuropeanLotlService but not LotlService."; + private boolean cacheInitialized = false; private Timer cacheTimer = null; - private IResourceRetriever resourceRetriever = new LoggableResourceRetriever(); + private IResourceRetriever resourceRetriever; private Function xmlSignatureValidatorFactory; private Supplier lotlValidatorFactory; + private EuropeanLotlService defaultImpl; /** * Creates a new instance of {@link LotlService}. @@ -88,28 +80,31 @@ public class LotlService implements AutoCloseable { */ public LotlService(LotlFetchingProperties lotlFetchingProperties) { this.lotlFetchingProperties = lotlFetchingProperties; - this.cache = new InMemoryLotlServiceCache(lotlFetchingProperties.getCacheStalenessInMilliseconds(), - lotlFetchingProperties.getOnCountryFetchFailureStrategy()); - this.lotlByteFetcher = new EuropeanLotlFetcher(this); - this.pivotFetcher = new PivotFetcher(this); - this.countrySpecificLotlFetcher = new CountrySpecificLotlFetcher(this); - this.xmlSignatureValidatorFactory = trustedCertificatesStore -> buildXmlSignatureValidator( - trustedCertificatesStore); - this.lotlValidatorFactory = () -> buildLotlValidator(); + + if (this.getClass() == LotlService.class) { + defaultImpl = new EuropeanLotlService(lotlFetchingProperties); + } else { + this.xmlSignatureValidatorFactory = trustedCertificatesStore -> buildXmlSignatureValidator( + trustedCertificatesStore); + this.lotlValidatorFactory = () -> buildLotlValidator(); + this.resourceRetriever = new LoggableResourceRetriever(); + ((LoggableResourceRetriever) this.resourceRetriever).setRequestHeaders( + Collections.singletonMap("User-Agent",DEFAULT_USER_AGENT)); + } } /** - * Initializes the global cache with the provided LotlFetchingProperties. - * This method must be called before using the LotlService to ensure that the cache is set up. + * Initializes the global service with the provided {@link LotlFetchingProperties}. + * This method must be called before using the {@link LotlService} to ensure that the cache is set up. *

* If you are using a custom implementation of {@link LotlService} you can use the instance method. * - * @param lotlFetchingProperties the LotlFetchingProperties to use for initializing the cache + * @param lotlFetchingProperties the {@link LotlFetchingProperties} to use for initializing the cache */ public static void initializeGlobalCache(LotlFetchingProperties lotlFetchingProperties) { synchronized (GLOBAL_SERVICE_LOCK) { if (GLOBAL_SERVICE == null) { - GLOBAL_SERVICE = new LotlService(lotlFetchingProperties); + GLOBAL_SERVICE = new EuropeanLotlService(lotlFetchingProperties); GLOBAL_SERVICE.initializeCache(); } else { throw new PdfException(SignExceptionMessageConstant.CACHE_ALREADY_INITIALIZED); @@ -127,62 +122,56 @@ public static LotlService getGlobalService() { } /** - * Sets the cache for the LotlService. + * Sets the cache for the {@link LotlService}. *

* This method allows you to provide a custom implementation of {@link LotlServiceCache} to be used - * for caching Lotl data, pivot files, and country-specific Lotls. + * for caching LOTL data, pivot files, and country-specific LOTLs. * - * @param cache the custom cache to be used for caching Lotl data + * @param cache the custom cache to be used for caching LOTL data * * @return the current instance of {@link LotlService} for method chaining */ + // TODO DEVSIX-9710: Remove this method to EuropeanLotlService public LotlService withLotlServiceCache(LotlServiceCache cache) { - this.cache = cache; - return this; + if (defaultImpl != null) { + return defaultImpl.withLotlServiceCache(cache); + } + + throw new UnsupportedOperationException(NOT_USABLE_METHOD_EXCEPTION); } /** * Sets a custom resource retriever for fetching resources. *

* This method allows you to provide a custom implementation of {@link IResourceRetriever} to be used - * for fetching resources such as the Lotl XML, pivot files, and country-specific Lotls. + * for fetching resources such as the LOTL XML, pivot files, and country-specific LOTLs. + *

+ * Multiple LOTL endpoints require a userAgent header to be sent. This should be taken into account + * when providing a custom {@link IResourceRetriever}. * * @param resourceRetriever the custom resource retriever to be used for fetching resources * * @return the current instance of {@link LotlService} for method chaining */ public final LotlService withCustomResourceRetriever(IResourceRetriever resourceRetriever) { - this.resourceRetriever = resourceRetriever; + if (defaultImpl == null) { + this.resourceRetriever = resourceRetriever; + } else { + defaultImpl.withCustomResourceRetriever(resourceRetriever); + } + return this; } - /** - * Initializes the cache with the latest Lotl data and related resources. + * Initializes the cache with the latest LOTL data and related resources. */ public void initializeCache() { - initializeCache(null); - } - - - /** - * Initializes the cache with the latest Lotl data and related resources. - *

- * Important: By default when providing a stream, we will still set up a timer to refresh the cache periodically. - * If you don't want this behavior, please set - * {@link LotlFetchingProperties#setRefreshIntervalCalculator(LongUnaryOperator)} to int.Max. - * - * @param stream InputStream to read the cached data from. If null, the data will be fetched from the network. - * The data can be serialized using {@link #serializeCache(OutputStream)} method. - */ - public void initializeCache(InputStream stream) { - setupTimer(); - if (stream != null) { - loadFromCache(stream); + if (defaultImpl == null) { + initializeCache(null); } else { - loadFromNetwork(); + defaultImpl.initializeCache(); } - cacheInitialized = true; } /** @@ -191,108 +180,117 @@ public void initializeCache(InputStream stream) { * The input stream should contain serialized cache data, which can be created using the * {@link #serializeCache(OutputStream)} method. * - * @param stream the input stream to read the cached data from. + * @param stream the input stream to read the cached data from */ + // TODO DEVSIX-9710: Make this method abstract public void loadFromCache(InputStream stream) { - try { - EuropeanLotlFetcher.Result mainLotlResult; - EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates; - PivotFetcher.Result pivotsResult; - Map resultToAddToCache; - - LotlCacheDataV1 container = LotlCacheDataV1.deserialize(stream); - if (cache instanceof InMemoryLotlServiceCache) { - //Check if the data we have in the cache is older then the new one - Map newTimeStamps = container.getTimeStamps(); - InMemoryLotlServiceCache inMemoryCache = (InMemoryLotlServiceCache) this.cache; - Map currentTimeStamps = inMemoryCache.getTimeStamps(); - - for (Entry entry : newTimeStamps.entrySet()) { - Long newTimeStamp = entry.getValue(); - Long timeStampFromCache = currentTimeStamps.get(entry.getKey()); - if (timeStampFromCache != null && newTimeStamp <= timeStampFromCache) { - throw new PdfException(SignExceptionMessageConstant.CACHE_INCOMING_DATA_IS_STALER); - } - } - inMemoryCache.setTimeStamps(container.getTimeStamps()); - } + if (defaultImpl != null) { + defaultImpl.loadFromCache(stream); + return; + } - mainLotlResult = container.getLotlCache(); - europeanResourceFetcherEUJournalCertificates = container.getEuropeanResourceFetcherCache(); - pivotsResult = container.getPivotCache(); - resultToAddToCache = container.getCountrySpecificLotlCache(); - if (mainLotlResult == null || europeanResourceFetcherEUJournalCertificates == null - || pivotsResult == null || resultToAddToCache == null) { - throw new PdfException(SignExceptionMessageConstant.COULD_NOT_INITIALIZE_FROM_FILE); - } + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); + } - Set countriesInCache = new HashSet<>(); - for (String key : new ArrayList<>(resultToAddToCache.keySet())) { - Result value = resultToAddToCache.get(key); - String countryCode = value.getCountrySpecificLotl().getSchemeTerritory(); - if (lotlFetchingProperties.getSchemaNames().contains(countryCode) || - lotlFetchingProperties.getSchemaNames().isEmpty()) { - countriesInCache.add(countryCode); - } else { - resultToAddToCache.remove(key); - LOGGER.warn(MessageFormatUtil.format( - SignLogMessageConstant.COUNTRY_NOT_REQUIRED_BY_CONFIGURATION, - countryCode)); - } - } + /** + * Get the validation results for the List of Trusted Lists (LOTL). + * + * @return a {@link ValidationReport} containing the results of the LOTL validation + */ + // TODO DEVSIX-9710: Make this method abstract + public ValidationReport getValidationResult() { + if (defaultImpl != null) { + return defaultImpl.getValidationResult(); + } + + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); + } - for (String schemaName : lotlFetchingProperties.getSchemaNames()) { - if (countriesInCache.contains(schemaName)) { - continue; - } - throw new PdfException(MessageFormatUtil.format( - SignExceptionMessageConstant.INITIALIZED_CACHE_DOES_NOT_CONTAIN_REQUIRED_COUNTRY, - schemaName)); + /** + * Retrieves national trusted certificates. + * + * @return the list of the national trusted certificates + */ + // TODO DEVSIX-9710: Make this method abstract + public List getNationalTrustedCertificates() { + if (defaultImpl != null) { + return defaultImpl.getNationalTrustedCertificates(); + } + + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); + } + + /** + * Initializes the cache with the latest LOTL data and related resources. + *

+ * Important: By default when providing a stream, we will still set up a timer to refresh the cache periodically. + * If you don't want this behavior, please set + * {@link LotlFetchingProperties#setRefreshIntervalCalculator(LongUnaryOperator)} to int.Max. + * + * @param stream InputStream to read the cached data from. If null, the data will be fetched from the network. + * The data can be serialized using {@link #serializeCache(OutputStream)} method. + */ + public void initializeCache(InputStream stream) { + if (defaultImpl == null) { + setupTimer(); + if (stream != null) { + loadFromCache(stream); + } else { + loadFromNetwork(); } - this.cache.setAllValues(mainLotlResult, europeanResourceFetcherEUJournalCertificates, pivotsResult, - resultToAddToCache); - } catch (PdfException e) { - throw e; - } catch (Exception e) { - throw new PdfException(SignExceptionMessageConstant.COULD_NOT_INITIALIZE_FROM_FILE, e); + cacheInitialized = true; + } else { + defaultImpl.initializeCache(stream); } } /** - * Sets the pivot fetcher for the Lotl service. + * Sets the pivot fetcher for the LOTL service. * * @param pivotFetcher the pivot fetcher to be used for fetching and validating pivot files * * @return the current instance of {@link LotlService} for method chaining */ + // TODO DEVSIX-9710: Remove this method to EuropeanLotlService public LotlService withPivotFetcher(PivotFetcher pivotFetcher) { - this.pivotFetcher = pivotFetcher; - return this; + if (defaultImpl != null) { + return defaultImpl.withPivotFetcher(pivotFetcher); + } + + throw new UnsupportedOperationException(NOT_USABLE_METHOD_EXCEPTION); } /** - * Sets the country-specific Lotl fetcher for the Lotl service. + * Sets the country-specific LOTL fetcher for the LOTL service. * - * @param countrySpecificLotlFetcher the country-specific Lotl fetcher to be used for fetching and validating - * country-specific Lotls + * @param countrySpecificLotlFetcher the country-specific LOTL fetcher to be used for fetching and validating + * country-specific LOTLs * * @return the current instance of {@link LotlService} for method chaining */ + // TODO DEVSIX-9710: Remove this method to EuropeanLotlService public LotlService withCountrySpecificLotlFetcher(CountrySpecificLotlFetcher countrySpecificLotlFetcher) { - this.countrySpecificLotlFetcher = countrySpecificLotlFetcher; - return this; + if (defaultImpl != null) { + return defaultImpl.withCountrySpecificLotlFetcher(countrySpecificLotlFetcher); + } + + throw new UnsupportedOperationException(NOT_USABLE_METHOD_EXCEPTION); } /** - * Sets the European List of Trusted Lists (Lotl) byte fetcher for the Lotl service. + * Sets the European List of Trusted Lists (LOTL) byte fetcher for the LOTL service. * - * @param fetcher the fetcher to be used for fetching the Lotl XML data + * @param fetcher the fetcher to be used for fetching the LOTL XML data * * @return the current instance of {@link LotlService} for method chaining */ + // TODO DEVSIX-9710: Remove this method to EuropeanLotlService public LotlService withEuropeanLotlFetcher(EuropeanLotlFetcher fetcher) { - this.lotlByteFetcher = fetcher; - return this; + if (defaultImpl != null) { + return defaultImpl.withEuropeanLotlFetcher(fetcher); + } + + throw new UnsupportedOperationException(NOT_USABLE_METHOD_EXCEPTION); } /** @@ -304,7 +302,12 @@ public LotlService withEuropeanLotlFetcher(EuropeanLotlFetcher fetcher) { */ public LotlService withXmlSignatureValidator( Function xmlSignatureValidatorFactory) { - this.xmlSignatureValidatorFactory = xmlSignatureValidatorFactory; + if (defaultImpl == null) { + this.xmlSignatureValidatorFactory = xmlSignatureValidatorFactory; + } else { + defaultImpl.withXmlSignatureValidator(xmlSignatureValidatorFactory); + } + return this; } @@ -316,101 +319,91 @@ public LotlService withXmlSignatureValidator( * @return this same instance of {@link LotlService} */ public LotlService withLotlValidator(Supplier lotlValidatorFactory) { - this.lotlValidatorFactory = lotlValidatorFactory; + if (defaultImpl == null) { + this.lotlValidatorFactory = lotlValidatorFactory; + } else { + defaultImpl.withLotlValidator(lotlValidatorFactory); + } + return this; } /** - * Sets the European Resource Fetcher for the LotlService. + * Sets the European Resource Fetcher for the {@link LotlService}. * * @param europeanResourceFetcher the European Resource Fetcher to be used for fetching EU journal certificates * * @return the current instance of {@link LotlService} for method chaining */ + // TODO DEVSIX-9710: Remove this method to EuropeanLotlService public LotlService withEuropeanResourceFetcher(EuropeanResourceFetcher europeanResourceFetcher) { - this.europeanResourceFetcher = europeanResourceFetcher; - return this; + if (defaultImpl != null) { + return defaultImpl.withEuropeanResourceFetcher(europeanResourceFetcher); + } + + throw new UnsupportedOperationException(NOT_USABLE_METHOD_EXCEPTION); } /** - * {@inheritDoc}. + * {@inheritDoc} */ @Override public void close() { - cancelTimer(); + if (defaultImpl == null) { + cancelTimer(); + } else { + defaultImpl.close(); + } } /** * Serializes the current state of the cache to the provided output stream. * - * @param outputStream the output stream to which the cache will be serialized. + * @param outputStream the output stream to which the cache will be serialized * - * @throws IOException if an I/O error occurs during serialization. + * @throws IOException if an I/O error occurs during serialization */ + // TODO DEVSIX-9710: Make this method abstract public void serializeCache(OutputStream outputStream) throws IOException { - if (cache instanceof InMemoryLotlServiceCache) { - InMemoryLotlServiceCache inMemoryCache = (InMemoryLotlServiceCache) cache; - inMemoryCache.getAllData().serialize(outputStream); - } else { - throw new PdfException(SignExceptionMessageConstant.CACHE_CANNOT_BE_SERIALIZED); + if (defaultImpl != null) { + defaultImpl.serializeCache(outputStream); + return; } + + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); } /** - * Loads the cache from the network by fetching the latest Lotl data and related resources. + * Loads the cache from the network by fetching the latest LOTL data and related resources. *

- * This method fetches the main Lotl file, EU journal certificates, pivot files, and country-specific Lotls, + * This method fetches the main LOTL file, EU journal certificates, pivot files, and country-specific LOTLs, * validates them, and stores them in the cache. *

- * If the main Lotl fetch fails, the method will throw a {@link PdfException} and will not proceed to fetch - * pivot files or country-specific Lotls. If a country-specific Lotl fetch fails, the - * {@link LotlFetchingProperties#getOnCountryFetchFailureStrategy()} will be used to handle the failure. - *

* Note: This method is called during cache initialization and should not be called directly in normal * operation. */ + // TODO DEVSIX-9710: Make this method abstract protected void loadFromNetwork() { - EuropeanLotlFetcher.Result mainLotlResult; - EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates; - PivotFetcher.Result pivotsResult; - Map resultToAddToCache; - - mainLotlResult = lotlByteFetcher.fetch(); - if (!mainLotlResult.getLocalReport().getFailures().isEmpty()) { - // We throw on main LOTL fetch failure, so we don't proceed to pivot and country specific LOTL fetches - final ReportItem reportItem = mainLotlResult.getLocalReport().getFailures().get(0); - throw new PdfException(reportItem.getMessage(), reportItem.getExceptionCause()); + if (defaultImpl != null) { + defaultImpl.loadFromNetwork(); + return; } - europeanResourceFetcherEUJournalCertificates = europeanResourceFetcher.getEUJournalCertificates(); - pivotFetcher.setCurrentJournalUri( - europeanResourceFetcherEUJournalCertificates.getCurrentlySupportedPublication()); - pivotsResult = pivotFetcher.downloadAndValidatePivotFiles(mainLotlResult.getLotlXml(), - europeanResourceFetcherEUJournalCertificates.getCertificates()); - - if (!pivotsResult.getLocalReport().getFailures().isEmpty()) { - ReportItem failure = pivotsResult.getLocalReport().getFailures().get(0); - throw new PdfException(failure.getMessage(), failure.getExceptionCause()); - } + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); + } - Map countrySpecificResults = - countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( - mainLotlResult.getLotlXml(), this); - - resultToAddToCache = new HashMap<>(countrySpecificResults.size()); - for (Entry entry : countrySpecificResults.entrySet()) { - final Result countrySpecificResult = entry.getValue(); - if (countrySpecificResult.getLocalReport().getValidationResult() != ValidationResult.VALID) { - for (ReportItem log : countrySpecificResult.getLocalReport().getLogs()) { - log.setStatus(ReportItemStatus.INFO); - } - lotlFetchingProperties.getOnCountryFetchFailureStrategy().onCountryFailure(countrySpecificResult); - } - resultToAddToCache.put(entry.getKey(), countrySpecificResult); + /** + * This method is intended to refresh the cache, it will try to download the latest LOTL data and update the + * cache accordingly. + */ + // TODO DEVSIX-9710: Make this method abstract + protected void tryAndRefreshCache() { + if (defaultImpl != null) { + defaultImpl.tryAndRefreshCache(); + return; } - this.cache.setAllValues(mainLotlResult, europeanResourceFetcherEUJournalCertificates, pivotsResult, - resultToAddToCache); + throw new UnsupportedOperationException(ABSTRACT_CLASS_EXCEPTION); } /** @@ -420,205 +413,50 @@ protected void loadFromNetwork() { * If the cache is null, it will create a new instance of {@link InMemoryLotlServiceCache}. */ protected void setupTimer() { - long staleNessInMillis = lotlFetchingProperties.getCacheStalenessInMilliseconds(); - TimerUtil.stopTimer(cacheTimer); - LongUnaryOperator cacheRefreshTimer = lotlFetchingProperties.getRefreshIntervalCalculator(); - long refreshInterval = cacheRefreshTimer.applyAsLong(staleNessInMillis); - cacheTimer = TimerUtil.newTimerWithRecurringTask(() -> tryAndRefreshCache(), refreshInterval, refreshInterval); - } - - /** - * Cancels timer, if it was already set up. - */ - protected void cancelTimer() { - if (cacheTimer != null) { + if (defaultImpl == null) { + long staleNessInMillis = lotlFetchingProperties.getCacheStalenessInMilliseconds(); TimerUtil.stopTimer(cacheTimer); + LongUnaryOperator cacheRefreshTimer = lotlFetchingProperties.getRefreshIntervalCalculator(); + long refreshInterval = cacheRefreshTimer.applyAsLong(staleNessInMillis); + cacheTimer = TimerUtil.newTimerWithRecurringTask(() -> tryAndRefreshCache(), refreshInterval, + refreshInterval); + } else { + defaultImpl.setupTimer(); } } /** - * This method is intended to refresh the cache, it will try to download the latest LOTL data and update the - * cache accordingly. - *

- * The rules taken into account are: - * Country specific LOTL files will be fetched, validated and updated per country. If country fails to fetch, - * {@link LotlFetchingProperties#getOnCountryFetchFailureStrategy()} will be used to perform corresponding action. - *

- * For the main LOTL file, if the fetch fails, the cache will not be updated. Also, we will NOT proceed to update - * the pivot files. - * If the main LOTL file is fetched successfully, the pivot files will be fetched, validated and stored in the - * cache. + * Cancels timer, if it was already set up. */ - protected void tryAndRefreshCache() { - - String currentJournalUri; - - //Data to update if everything goes well - EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificatesToUse; - EuropeanLotlFetcher.Result mainLotlResultToUse = null; - PivotFetcher.Result pivotResultToUse = null; - Map countrySpecificLotlResultsToUse; - - try { - EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates = - europeanResourceFetcher.getEUJournalCertificates(); - currentJournalUri = europeanResourceFetcherEUJournalCertificates.getCurrentlySupportedPublication(); - if (europeanResourceFetcherEUJournalCertificates.getLocalReport().getValidationResult() - != ValidationResult.VALID) { - LOGGER.warn(MessageFormatUtil.format( - SignLogMessageConstant.FAILED_TO_FETCH_EU_JOURNAL_CERTIFICATES, - europeanResourceFetcherEUJournalCertificates.getLocalReport().getFailures().get(0) - .getMessage())); - return; - } - europeanResourceFetcherEUJournalCertificatesToUse = europeanResourceFetcherEUJournalCertificates; - } catch (Exception e) { - LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.FAILED_TO_FETCH_EU_JOURNAL_CERTIFICATES, - e.getMessage())); - return; - } - - boolean mainLotlFetchSuccessful = false; - Exception mainLotlFetchException = null; - - try { - mainLotlResultToUse = lotlByteFetcher.fetch(); - mainLotlFetchSuccessful = - mainLotlResultToUse.hasValidXml() && mainLotlResultToUse.getLocalReport().getFailures().isEmpty(); - } catch (Exception e) { - mainLotlFetchException = e; - } - - boolean fetchPivotFilesSuccessful = false; - Exception pivotFetchException = null; - - if (mainLotlFetchSuccessful) { - //Only if the main Lotl was fetched successfully, we proceed to re-fetch the new pivot files. - try { - pivotFetcher.setCurrentJournalUri(currentJournalUri); - pivotResultToUse = pivotFetcher.downloadAndValidatePivotFiles(mainLotlResultToUse.getLotlXml(), - europeanResourceFetcher.getEUJournalCertificates().getCertificates()); - fetchPivotFilesSuccessful = - pivotResultToUse.getLocalReport().getValidationResult() == ValidationResult.VALID; - } catch (Exception e) { - pivotFetchException = e; + protected void cancelTimer() { + if (defaultImpl == null) { + if (cacheTimer != null) { + TimerUtil.stopTimer(cacheTimer); } } else { - LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.UPDATING_MAIN_LOTL_TO_CACHE_FAILED, - mainLotlFetchException == null ? "" : mainLotlFetchException.getMessage())); + defaultImpl.cancelTimer(); } - - //Only update main Lotl and pivot result if both are successful. - if (!fetchPivotFilesSuccessful) { - LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.UPDATING_PIVOT_TO_CACHE_FAILED, - pivotFetchException == null ? "" : pivotFetchException.getMessage())); - } - if (!mainLotlFetchSuccessful) { - // if main lotl is null we do not proceed with country specific lotl fetch because it depends on main lotl - return; - } - - Map allCountries; - try { - //Try updating the country specific Lotl files. - allCountries = countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( - mainLotlResultToUse.getLotlXml(), this); - } catch (Exception e) { - LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.FAILED_TO_FETCH_COUNTRY_SPECIFIC_LOTL, - e.getMessage())); - return; - } - //If an error happened don't update the cache value, if the warn is too stale we will throw an exception - if (allCountries == null || allCountries.isEmpty()) { - LOGGER.warn(SignLogMessageConstant.NO_COUNTRY_SPECIFIC_LOTL_FETCHED); - return; - } - countrySpecificLotlResultsToUse = new HashMap<>(allCountries.size()); - for (Result countrySpecificResult : allCountries.values()) { - boolean wasCountryFetchedSuccessfully = countrySpecificResult.getLocalReport().getFailures().isEmpty(); - if (!wasCountryFetchedSuccessfully) { - LOGGER.warn(MessageFormatUtil.format(SignLogMessageConstant.COUNTRY_SPECIFIC_FETCHING_FAILED, - countrySpecificResult.getCountrySpecificLotl().getSchemeTerritory(), - countrySpecificResult.getLocalReport())); - continue; - } - countrySpecificLotlResultsToUse.put(countrySpecificResult.createUniqueIdentifier(), countrySpecificResult); - } - if (pivotResultToUse == null) { - // nothing to update - return; - } - cache.setAllValues(mainLotlResultToUse, europeanResourceFetcherEUJournalCertificatesToUse, - pivotResultToUse, countrySpecificLotlResultsToUse); - - } - - PivotFetcher.Result getAndValidatePivotFiles(byte[] lotlXml, List certificates, - String currentJournalUri) { - PivotFetcher.Result result = cache.getPivotResult(); - if (result != null) { - return result; - } - pivotFetcher.setCurrentJournalUri(currentJournalUri); - PivotFetcher.Result newResult = pivotFetcher.downloadAndValidatePivotFiles(lotlXml, certificates); - cache.setPivotResult(newResult); - return newResult; - } - - List getCountrySpecificLotlFiles(byte[] lotlXml) { - final Map result = cache.getCountrySpecificLotls(); - if (result != null) { - return new ArrayList<>(result.values()); - } - final Map countrySpecificLotlResults = - countrySpecificLotlFetcher.getAndValidateCountrySpecificLotlFiles( - lotlXml, this); - for (Map.Entry s : countrySpecificLotlResults.entrySet()) { - boolean successful = s.getValue().getLocalReport().getValidationResult() == ValidationResult.VALID; - if (successful || s.getValue().getLocalReport().getLogs().isEmpty()) { - cache.setCountrySpecificLotlResult(s.getValue()); - } - } - return new ArrayList<>(countrySpecificLotlResults.values()); } boolean isCacheInitialized() { - return cacheInitialized; - } - - HashMap getCachedCountrySpecificLotls() { - return new HashMap<>(cache.getCountrySpecificLotls()); - } - - EuropeanLotlFetcher.Result getLotlBytes() { - EuropeanLotlFetcher.Result cachedData = cache.getLotlResult(); - if (cachedData != null) { - return cachedData; - } - EuropeanLotlFetcher.Result data = lotlByteFetcher.fetch(); - cache.setLotlResult(data); - return data; - } - - - EuropeanResourceFetcher.Result getEUJournalCertificates() { - EuropeanResourceFetcher.Result cachedResult = cache.getEUJournalCertificates(); - if (cachedResult != null) { - return cachedResult; + if (defaultImpl == null) { + return cacheInitialized; + } else { + return defaultImpl.isCacheInitialized(); } - - EuropeanResourceFetcher.Result result = europeanResourceFetcher.getEUJournalCertificates(); - cache.setEuropeanResourceFetcherResult(result); - return result; } /** - * Gets the resource retriever used by the Lotl service. + * Gets the resource retriever used by the LOTL service. * * @return the {@link IResourceRetriever} instance used for fetching resources */ IResourceRetriever getResourceRetriever() { - return resourceRetriever; + if (defaultImpl == null) { + return resourceRetriever; + } else { + return defaultImpl.getResourceRetriever(); + } } /** @@ -627,11 +465,19 @@ IResourceRetriever getResourceRetriever() { * @return explicitly added or automatically created {@link XmlSignatureValidator} instance. */ XmlSignatureValidator getXmlSignatureValidator(TrustedCertificatesStore trustedCertificatesStore) { - return xmlSignatureValidatorFactory.apply(trustedCertificatesStore); + if (defaultImpl == null) { + return xmlSignatureValidatorFactory.apply(trustedCertificatesStore); + } else { + return defaultImpl.getXmlSignatureValidator(trustedCertificatesStore); + } } LotlFetchingProperties getLotlFetchingProperties() { - return lotlFetchingProperties; + if (defaultImpl == null) { + return lotlFetchingProperties; + } else { + return defaultImpl.getLotlFetchingProperties(); + } } /** @@ -640,7 +486,11 @@ LotlFetchingProperties getLotlFetchingProperties() { * @return explicitly added or automatically created {@link LotlValidator} instance */ LotlValidator getLotlValidator() { - return lotlValidatorFactory.get(); + if (defaultImpl == null) { + return lotlValidatorFactory.get(); + } else { + return defaultImpl.getLotlValidator(); + } } private LotlValidator buildLotlValidator() { @@ -651,6 +501,7 @@ private static XmlSignatureValidator buildXmlSignatureValidator(TrustedCertifica return new XmlSignatureValidator(trustedCertificatesStore); } + private static final class LoggableResourceRetriever extends DefaultResourceRetriever { private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(LotlService.class); @@ -665,4 +516,3 @@ public byte[] getByteArrayByUrl(URL url) throws IOException { } } } - diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlServiceCache.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlServiceCache.java index 96833d237a..7a2dbcb54b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlServiceCache.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlServiceCache.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -25,39 +25,39 @@ This file is part of the iText (R) project. import java.util.Map; /** - * Interface for caching Lotl (List of Trusted Lists) service results. - * It provides methods to set and get various Lotl-related data, including - * European Lotl, country-specific Lotls, and pivot results. + * Interface for caching LOTL (List of Trusted Lists) service results. + * It provides methods to set and get various LOTL-related data, including + * European LOTL, country-specific LOTLs, and pivot results. *

* Notice: If you do your own implementation of this interface, * you should ensure that the cache is thread-safe and can handle concurrent access. - * This is important because Lotl data can be accessed and modified by multiple threads + * This is important because LOTL data can be accessed and modified by multiple threads * simultaneously. * You should also ensure that all the values are set atomically using {@link #setAllValues} method - * to maintain consistency, So that you are not using outdated pivot results or country-specific Lotls with a changed - * European Lotl. + * to maintain consistency, So that you are not using outdated pivot results or country-specific LOTLs with a changed + * European LOTL. */ public interface LotlServiceCache { /** - * Sets all values related to Lotl, including European Lotl, EU Journal certificates, - * pivot results, and country-specific Lotls. This extra method is used for syncronized + * Sets all values related to LOTL, including European LOTL, EU Journal certificates, + * pivot results, and country-specific LOTLs. This extra method is used for syncronized * updates to the cache, ensuring that all related data is set at once. This is useful * in multithreaded environments where you want to ensure that all related data is consistent. * - * @param lotlXml the European Lotl result + * @param lotlXml the European LOTL result * @param europeanResourceFetcherEUJournalCertificates the EU Journal certificates * @param result the pivot fetcher result - * @param countrySpecificResult a map of country-specific Lotl results + * @param countrySpecificResult a map of country-specific LOTL results */ void setAllValues(EuropeanLotlFetcher.Result lotlXml, EuropeanResourceFetcher.Result europeanResourceFetcherEUJournalCertificates, PivotFetcher.Result result, Map countrySpecificResult); /** - * Gets the European Lotl result. + * Gets the European LOTL result. * - * @return the European Lotl result + * @return the European LOTL result */ PivotFetcher.Result getPivotResult(); @@ -69,30 +69,30 @@ void setAllValues(EuropeanLotlFetcher.Result lotlXml, void setPivotResult(PivotFetcher.Result newResult); /** - * Gets the country-specific Lotl results. + * Gets the country-specific LOTL results. * - * @return a map of country-specific Lotl results + * @return a map of country-specific LOTL results */ Map getCountrySpecificLotls(); /** - * Sets the country-specific Lotl result for a specific country. + * Sets the country-specific LOTL result for a specific country. * - * @param countrySpecificLotlResult the country-specific Lotl result to set + * @param countrySpecificLotlResult the country-specific LOTL result to set */ void setCountrySpecificLotlResult(CountrySpecificLotlFetcher.Result countrySpecificLotlResult); /** - * Gets the European Lotl result. + * Gets the European LOTL result. * - * @return the European Lotl result + * @return the European LOTL result */ EuropeanLotlFetcher.Result getLotlResult(); /** - * Sets the European Lotl result. + * Sets the European LOTL result. * - * @param data the European Lotl result to set + * @param data the European LOTL result to set */ void setLotlResult(EuropeanLotlFetcher.Result data); diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStore.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStore.java index 70c8529092..873f44e2fa 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStore.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlValidator.java index 22185be95e..7737fadc33 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/LotlValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,12 +22,8 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; -import com.itextpdf.signatures.validation.report.ReportItem; -import com.itextpdf.signatures.validation.report.ReportItem.ReportItemStatus; import com.itextpdf.signatures.validation.report.ValidationReport; -import com.itextpdf.signatures.validation.report.ValidationReport.ValidationResult; -import java.util.ArrayList; import java.util.List; /** @@ -46,7 +42,6 @@ public class LotlValidator { "isn't" + " successful."; static final String UNABLE_TO_RETRIEVE_LOTL = "Unable to retrieve main Lotl file. Lotl validation isn't " + "successful."; - private final List nationalTrustedCertificates = new ArrayList<>(); private final LotlService service; /** @@ -61,53 +56,19 @@ public LotlValidator(LotlService service) { /** * Validates the List of Trusted Lists (Lotl) and retrieves national trusted certificates. * - * @return a ValidationReport containing the results of the validation + * @return a {@link ValidationReport} containing the results of the LOTL validation */ public ValidationReport validate() { - ValidationReport report = new ValidationReport(); - EuropeanLotlFetcher.Result lotl = service.getLotlBytes(); - if (!lotl.getLocalReport().getLogs().isEmpty()) { - report.merge(lotl.getLocalReport()); - return report; - } - - EuropeanResourceFetcher.Result europeanResult = service.getEUJournalCertificates(); - report.merge(europeanResult.getLocalReport()); - - // get all the data from cache, if it is stale, exception will be thrown - // locked and pass to methods - PivotFetcher.Result result = service.getAndValidatePivotFiles(lotl.getLotlXml(), - europeanResult.getCertificates(), europeanResult.getCurrentlySupportedPublication()); - - report.merge(result.getLocalReport()); - if (result.getLocalReport().getValidationResult() != ValidationResult.VALID) { - return report; - } - - List entries = service.getCountrySpecificLotlFiles(lotl.getLotlXml()); - - for (CountrySpecificLotlFetcher.Result countrySpecificResult : entries) { - // When cache was loaded without config it still contains all country specific Lotl files. - // So we need to filter them out if schema names were provided. - if (!this.service.getLotlFetchingProperties() - .shouldProcessCountry(countrySpecificResult.getCountrySpecificLotl().getSchemeTerritory())) { - continue; - } - report.merge(countrySpecificResult.getLocalReport()); - this.nationalTrustedCertificates.addAll( - LotlTrustedStore.mapIServiceContextToCountry(countrySpecificResult.getContexts())); - } - - return report; + return this.service.getValidationResult(); } /** * Retrieves national trusted certificates. * - * @return the list of national trusted certificates + * @return the list of the national trusted certificates */ List getNationalTrustedCertificates() { - return new ArrayList<>(nationalTrustedCertificates); + return this.service.getNationalTrustedCertificates(); } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/PivotFetcher.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/PivotFetcher.java index 582da519e1..fca130c8a7 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/PivotFetcher.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/PivotFetcher.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,11 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; import com.itextpdf.commons.utils.MessageFormatUtil; import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; @@ -163,7 +168,9 @@ protected List getPivotsUrlList(byte[] lotlXml) { /** * Result class encapsulates the result of the pivot fetching and validation process. */ - public static class Result { + public static class Result implements IJsonSerializable { + private static final String JSON_KEY_LOCAL_REPORT = "localReport"; + private static final String JSON_KEY_PIVOT_URLS = "pivotUrls"; private ValidationReport localReport = new ValidationReport(); private List pivotsUrlList = new ArrayList<>(); @@ -218,5 +225,42 @@ public void setPivotUrls(List pivotsUrlList) { public String generateUniqueIdentifier() { return String.join("_", pivotsUrlList); } + + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_LOCAL_REPORT, localReport.toJson()); + jsonObject.add(JSON_KEY_PIVOT_URLS, new JsonArray(pivotsUrlList.stream().map( + pivotUrl -> (JsonValue) new JsonString(pivotUrl)).collect(Collectors.toList()))); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link PivotFetcher.Result}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link PivotFetcher.Result} + */ + public static PivotFetcher.Result fromJson(JsonValue jsonValue) { + JsonObject pivotFetcherResultJson = (JsonObject) jsonValue; + JsonObject localReportJson = (JsonObject) pivotFetcherResultJson.getField(JSON_KEY_LOCAL_REPORT); + ValidationReport validationReportFromJson = ValidationReport.fromJson(localReportJson); + + JsonArray urlsJson = (JsonArray) pivotFetcherResultJson.getField(JSON_KEY_PIVOT_URLS); + List pivotsUrlListFromJson = urlsJson.getValues().stream().map( + urlJson -> ((JsonString) urlJson).getValue()).collect(Collectors.toList()); + + PivotFetcher.Result resultFromJson = new Result(); + resultFromJson.localReport = validationReportFromJson; + resultFromJson.pivotsUrlList = pivotsUrlListFromJson; + + return resultFromJson; + } } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifiedValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifiedValidator.java index 986a6195b3..1ce0f0cfdb 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifiedValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifiedValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifierExtension.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifierExtension.java index 1279a0a733..79a1019238 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifierExtension.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/QualifierExtension.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,17 +22,26 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; import com.itextpdf.signatures.validation.lotl.criteria.CriteriaList; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * Class representing Qualifications entry from a country specific Trusted List. */ -public class QualifierExtension { +public class QualifierExtension implements IJsonSerializable { + private static final String JSON_KEY_QUALIFIERS = "qualifiers"; + private static final String JSON_KEY_CRITERIA_LIST = "criteriaList"; + private final List qualifiers = new ArrayList<>(); private CriteriaList criteriaList; @@ -70,4 +79,45 @@ CriteriaList getCriteriaList() { void addQualifier(String qualifier) { this.qualifiers.add(qualifier); } + + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject qualifiersJson = new JsonObject(); + qualifiersJson.add(JSON_KEY_QUALIFIERS, new JsonArray(getQualifiers().stream().map( + qualifier -> (JsonValue) new JsonString(qualifier)).collect(Collectors.toList()))); + + if (getCriteriaList() != null) { + qualifiersJson.add(JSON_KEY_CRITERIA_LIST, getCriteriaList().toJson()); + } + return qualifiersJson; + } + + /** + * Deserializes {@link JsonValue} into {@link QualifierExtension}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link QualifierExtension} + */ + public static QualifierExtension fromJson(JsonValue jsonValue) { + QualifierExtension qualifierExtensionFromJson = new QualifierExtension(); + JsonObject qualifierExtensionJsonObject = (JsonObject) jsonValue; + JsonArray qualifiersArray = (JsonArray) qualifierExtensionJsonObject.getField(JSON_KEY_QUALIFIERS); + List qualifiersFromJson = qualifiersArray.getValues().stream().map( + qualifierJson -> ((JsonString) qualifierJson).getValue()).collect(Collectors.toList()); + for (String qualifierFromJson : qualifiersFromJson) { + qualifierExtensionFromJson.addQualifier(qualifierFromJson); + } + + JsonObject criteriaListJson = (JsonObject) qualifierExtensionJsonObject.getField(JSON_KEY_CRITERIA_LIST); + if (criteriaListJson != null) { + qualifierExtensionFromJson.setCriteriaList(CriteriaList.fromJson(criteriaListJson)); + } + return qualifierExtensionFromJson; + } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/RemoveOnFailingCountryData.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/RemoveOnFailingCountryData.java index 4b3c88c865..1b3b020a66 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/RemoveOnFailingCountryData.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/RemoveOnFailingCountryData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceChronologicalInfo.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceChronologicalInfo.java index 1770059dd3..a8f9c800b4 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceChronologicalInfo.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceChronologicalInfo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,17 +22,27 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonNull; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.commons.utils.DateTimeUtil; +import com.itextpdf.signatures.TimestampConstants; + import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; /** * Class representing ServiceHistory entry in a country specific Trusted List. */ -public class ServiceChronologicalInfo { +public class ServiceChronologicalInfo implements IJsonSerializable { static final String GRANTED = "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted"; static final String GRANTED_NATIONALLY = "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel"; @@ -42,9 +52,17 @@ public class ServiceChronologicalInfo { static final String SUPERVISION_IN_CESSATION = "http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/supervisionincessation"; private static final Set VALID_STATUSES = new HashSet<>(); + private static final String JSON_KEY_QUALIFIER_EXTENSIONS = "qualifierExtensions"; + private static final String JSON_KEY_SERVICE_EXTENSIONS = "serviceExtensions"; + private static final String JSON_KEY_SERVICE_STATUS = "serviceStatus"; + private static final String JSON_KEY_SERVICE_STATUS_STARTING_TIME = "serviceStatusStartingTime"; + private final List serviceExtensions = new ArrayList<>(); private final List qualifierExtensions = new ArrayList<>(); - private final DateTimeFormatter statusStartDateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); + + private static final List statusDateFormats = Arrays.asList( + "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd'T'HH:mm:ss" + ); private String serviceStatus; //Local time is used here because it is required to use UTC in a trusted lists, so no offset shall be presented. private LocalDateTime serviceStatusStartingTime; @@ -103,6 +121,93 @@ public List getQualifierExtensions() { return qualifierExtensions; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_SERVICE_STATUS, new JsonString(getServiceStatus())); + if (getServiceStatusStartingTime() != TimestampConstants.UNDEFINED_TIMESTAMP_DATE) { + for (String formattingPattern : statusDateFormats) { + try { + jsonObject.add(JSON_KEY_SERVICE_STATUS_STARTING_TIME, new JsonString( + DateTimeUtil.parseLocalDateTime(getServiceStatusStartingTime(), formattingPattern))); + } catch (Exception ignored) { + // Try other format + } + } + } else { + jsonObject.add(JSON_KEY_SERVICE_STATUS_STARTING_TIME, JsonNull.JSON_NULL); + } + + if (getServiceExtensions() != null) { + List jsonExtensionValues = getServiceExtensions().stream().map(extension -> extension.toJson()) + .collect(Collectors.toList()); + jsonObject.add(JSON_KEY_SERVICE_EXTENSIONS, new JsonArray(jsonExtensionValues)); + } else { + jsonObject.add(JSON_KEY_SERVICE_EXTENSIONS, JsonNull.JSON_NULL); + } + + JsonArray qualifierExtensionsJson = new JsonArray(getQualifierExtensions().stream().map( + qualifierExtension -> qualifierExtension.toJson()).collect(Collectors.toList())); + jsonObject.add(JSON_KEY_QUALIFIER_EXTENSIONS, qualifierExtensionsJson); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link ServiceChronologicalInfo}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link ServiceChronologicalInfo} + */ + public static ServiceChronologicalInfo fromJson(JsonValue jsonValue) { + JsonObject serviceChronologicalInfoJson = (JsonObject) jsonValue; + String serviceStatusFromJson = + ((JsonString) serviceChronologicalInfoJson.getField(JSON_KEY_SERVICE_STATUS)).getValue(); + + JsonValue serviceStatusStartingTimeJson = + serviceChronologicalInfoJson.getField(JSON_KEY_SERVICE_STATUS_STARTING_TIME); + LocalDateTime serviceStatusStartingTimeFromJson = (LocalDateTime) TimestampConstants.UNDEFINED_TIMESTAMP_DATE; + if (JsonNull.JSON_NULL != serviceStatusStartingTimeJson) { + for (String formattingPattern : statusDateFormats) { + try { + serviceStatusStartingTimeFromJson = DateTimeUtil.parseToLocalDateTime( + ((JsonString) serviceStatusStartingTimeJson).getValue(), formattingPattern); + } catch (Exception ignored) { + // Try other format + } + } + } + ServiceChronologicalInfo serviceChronologicalInfoFromJson = + new ServiceChronologicalInfo(serviceStatusFromJson, serviceStatusStartingTimeFromJson); + + JsonValue serviceExtensionsJson = + serviceChronologicalInfoJson.getField(JSON_KEY_SERVICE_EXTENSIONS); + if (JsonNull.JSON_NULL != serviceExtensionsJson) { + List serviceExtensionsFromJson = + ((JsonArray) serviceExtensionsJson).getValues().stream().map(serviceExtensionJson -> + AdditionalServiceInformationExtension.fromJson(serviceExtensionJson)) + .collect(Collectors.toList()); + for (AdditionalServiceInformationExtension informationExtensionFromJson : serviceExtensionsFromJson) { + serviceChronologicalInfoFromJson.addServiceExtension(informationExtensionFromJson); + } + } + + JsonArray qualifierExtensionsJson = + (JsonArray) serviceChronologicalInfoJson.getField(JSON_KEY_QUALIFIER_EXTENSIONS); + List qualifierExtensionsFromJson = qualifierExtensionsJson.getValues().stream().map( + qualifierExtensionJson -> QualifierExtension.fromJson(qualifierExtensionJson)) + .collect(Collectors.toList()); + for (QualifierExtension qualifierExtensionFromJson : qualifierExtensionsFromJson) { + serviceChronologicalInfoFromJson.addQualifierExtension(qualifierExtensionFromJson); + } + return serviceChronologicalInfoFromJson; + } + static boolean isStatusValid(String status) { return VALID_STATUSES.contains(status); } @@ -112,7 +217,14 @@ void setServiceStatus(String serviceStatus) { } void setServiceStatusStartingTime(String timeString) { - this.serviceStatusStartingTime = statusStartDateFormat.parse(timeString, LocalDateTime::from); + for (String statusDateFormat : statusDateFormats) { + try { + this.serviceStatusStartingTime = DateTimeUtil.parseToLocalDateTime(timeString, statusDateFormat); + return; + } catch (Exception e) { + //try next format + } + } } void setServiceStatusStartingTime(LocalDateTime serviceStatusStartingTime) { diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceTypeIdentifiersConstants.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceTypeIdentifiersConstants.java index bcbff42407..2c0320f4a9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceTypeIdentifiersConstants.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ServiceTypeIdentifiersConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SimpleServiceContext.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SimpleServiceContext.java index 2661aaa52f..220e50c436 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SimpleServiceContext.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SimpleServiceContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,11 +22,20 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.signatures.SignJsonSerializerHelper; + import java.security.cert.Certificate; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; + +class SimpleServiceContext implements IServiceContext, IJsonSerializable { + private static final String JSON_KEY_CERTIFICATES = "certificates"; -class SimpleServiceContext implements IServiceContext { private List certificates; SimpleServiceContext() { @@ -39,6 +48,42 @@ class SimpleServiceContext implements IServiceContext { certificates.add(certificate); } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + + JsonArray certificatesJson = new JsonArray(); + for (Certificate certificate : certificates) { + certificatesJson.add(SignJsonSerializerHelper.serializeCertificate(certificate)); + } + jsonObject.add(JSON_KEY_CERTIFICATES, certificatesJson); + + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link SimpleServiceContext}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link SimpleServiceContext} + */ + public static SimpleServiceContext fromJson(JsonValue jsonValue) { + JsonObject simpleServiceContextJson = (JsonObject) jsonValue; + JsonArray certificatesJson = + (JsonArray) simpleServiceContextJson.getField(JSON_KEY_CERTIFICATES); + List certificatesFromJson = certificatesJson.getValues().stream().map(certificateJson -> + SignJsonSerializerHelper.deserializeCertificate(certificateJson)).collect(Collectors.toList()); + SimpleServiceContext simpleServiceContextFromJson = new SimpleServiceContext(); + simpleServiceContextFromJson.certificates = certificatesFromJson; + return simpleServiceContextFromJson; + } + @Override public List getCertificates() { return new ArrayList<>(certificates); diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlService.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlService.java new file mode 100644 index 0000000000..1d4473ee9a --- /dev/null +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlService.java @@ -0,0 +1,179 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures.validation.lotl; + +import com.itextpdf.commons.datastructures.ConcurrentHashSet; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.signatures.CertificateUtil; +import com.itextpdf.signatures.logs.SignLogMessageConstant; +import com.itextpdf.signatures.validation.lotl.CountrySpecificLotlFetcher.Result; +import com.itextpdf.signatures.validation.report.ValidationReport; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.security.cert.Certificate; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This class provides services for managing the single country List of Trusted Lists (LOTL) and related resources. + * It includes methods for fetching, validating, and caching LOTL data. + * + *

+ * You should use this service if you have only a country specific LOTL file with certificates you trust. + * First, you create an instance of {@link CountrySpecificLotl} and then pass it to the constructor of + * {@link SingleFileLotlService} together with fetching properties and the certificates to validate LOTL file. + * Then this instance can be passed to {@link com.itextpdf.signatures.validation.ValidatorChainBuilder#withLotlService} + * so that the certificates from the LOTL file are used for signature validation. + */ +public class SingleFileLotlService extends LotlService { + + private static final Logger LOGGER = LoggerFactory.getLogger(SingleFileLotlService.class); + + private final CountrySpecificLotl countrySpecificLotl; + private final List certificates; + private final ConcurrentHashSet contexts = new ConcurrentHashSet<>(); + private ValidationReport report; + + /** + * Creates a new instance of {@link SingleFileLotlService}. + * + * @param lotlFetchingProperties {@link LotlFetchingProperties} to configure the way in which LOTL will be fetched + * @param countrySpecificLotl {@link CountrySpecificLotl} for a LOTL file to serve + * @param certificates a list of certificates to validate LOTL file + */ + public SingleFileLotlService(LotlFetchingProperties lotlFetchingProperties, + CountrySpecificLotl countrySpecificLotl, List certificates) { + super(lotlFetchingProperties); + this.countrySpecificLotl = countrySpecificLotl; + this.certificates = getGenerallyTrustedCertificates(certificates); + + // TODO DEVSIX-9710: Split LotlFetchingProperties onto classes relevant for specific services + if (!lotlFetchingProperties.getSchemaNames().isEmpty()) { + LOGGER.warn(SignLogMessageConstant.SCHEMA_NAMES_CONFIGURATION_PROPERTY_IGNORED); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void loadFromCache(InputStream in) { + byte[] buffer = new byte[1024]; + StringBuilder sb = new StringBuilder(); + try { + int bytesRead; + while ((bytesRead = in.read(buffer)) != -1) { + sb.append(new String(buffer, 0, bytesRead, StandardCharsets.UTF_8)); + } + } catch (Exception e) { + throw new RuntimeException("Error reading from cache input stream", e); + } + + String jsonString = sb.toString(); + JsonValue json = JsonValue.fromJson(jsonString); + if (json instanceof JsonObject) { + JsonObject jsonObject = (JsonObject) json; + this.report = convertJsonToReport((JsonObject) jsonObject.getFields().get("report")); + List cachedContexts = convertJsonToServiceContexts( + (JsonObject) jsonObject.getFields().get("serviceContexts")); + this.contexts.clear(); + this.contexts.addAll(cachedContexts); + } else { + throw new IllegalArgumentException("Invalid JSON format in cache input stream"); + } + } + + /** + * {@inheritDoc} + */ + @Override + public void serializeCache(OutputStream outputStream) throws IOException { + // TODO: DEVSIX-9720 - Implement cache serialization/deserialization + } + + /** + * {@inheritDoc} + */ + @Override + public ValidationReport getValidationResult() { + return this.report; + } + + /** + * {@inheritDoc} + */ + @Override + public List getNationalTrustedCertificates() { + return new ArrayList<>(contexts); + } + + /** + * {@inheritDoc} + */ + @Override + protected void loadFromNetwork() { + CountrySpecificLotlFetcher lotlr = new CountrySpecificLotlFetcher(this); + ValidationReport localReport = new ValidationReport(); + Map f = lotlr.validateCountrySpecificFiles(certificates, + Collections.singletonList(countrySpecificLotl), this); + contexts.clear(); + for (Result value : f.values()) { + localReport.merge(value.getLocalReport()); + contexts.addAll(value.getContexts()); + } + this.report = localReport; + } + + private static ValidationReport convertJsonToReport(JsonObject jsonObject) { + ValidationReport cachedReport = new ValidationReport(); + // Implement the logic to convert JsonObject to ValidationReport + return cachedReport; + } + + private static List convertJsonToServiceContexts(JsonObject jsonObject) { + List cachedContexts = new ArrayList<>(); + // Implement the logic to convert JsonObject to List + return cachedContexts; + } + + private static List getGenerallyTrustedCertificates(List certificates) { + final ArrayList result = new ArrayList<>(); + for (String certificateString : certificates) { + Certificate certificate = CertificateUtil.readCertificatesFromPem( + new ByteArrayInputStream(certificateString.getBytes( + StandardCharsets.UTF_8)))[0]; + result.add(certificate); + } + + return result; + } +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ThrowExceptionOnFailingCountryData.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ThrowExceptionOnFailingCountryData.java index af910a4bb9..63b29cce64 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ThrowExceptionOnFailingCountryData.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/ThrowExceptionOnFailingCountryData.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetriever.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetriever.java index a9664a2c6c..dc86a49052 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetriever.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -47,4 +47,4 @@ List getCertificates(InputStream inputStream) { List getServiceContexts() { return handler.getServiceContexts(); } -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryCertificateHandler.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryCertificateHandler.java index 3e07dae466..88fcf20f33 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryCertificateHandler.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryCertificateHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetriever.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetriever.java index b345fe5ed6..1f46313bc3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetriever.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlDefaultCertificateHandler.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlDefaultCertificateHandler.java index 437d4cbe42..bc3c0b8125 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlDefaultCertificateHandler.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlDefaultCertificateHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -61,4 +61,4 @@ public void characters(char[] ch, int start, int length) { private static String removeWhitespacesAndBreakLines(String data) { return data.replace(" ", "").replace("\n", ""); } -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlPivotsHandler.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlPivotsHandler.java index 9d41a1aea5..71ee12ff7a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlPivotsHandler.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlPivotsHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidator.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidator.java index 4d5e35f257..77c9964d43 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlTagConstants.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlTagConstants.java index 0f6d899a21..be79ea2fa3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlTagConstants.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlTagConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -50,4 +50,4 @@ class XmlTagConstants { static final String KEY_USAGE = "KeyUsage"; static final String KEY_USAGE_BIT = "KeyUsageBit"; static final String NAME = "name"; -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlValidationUtils.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlValidationUtils.java index ac200dd1ff..ca67043398 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlValidationUtils.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/XmlValidationUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CertSubjectDNAttributeCriteria.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CertSubjectDNAttributeCriteria.java index c2a3c2c767..96a0b38476 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CertSubjectDNAttributeCriteria.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CertSubjectDNAttributeCriteria.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/Criteria.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/Criteria.java index 27a6460015..fa1fe71f47 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/Criteria.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/Criteria.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CriteriaList.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CriteriaList.java index 5d1d7f92d4..95dccf0e66 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CriteriaList.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/CriteriaList.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,11 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.lotl.criteria; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.signatures.SignJsonSerializerHelper; + import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; @@ -29,7 +34,7 @@ This file is part of the iText (R) project. /** * Criteria List which holds other Criteria or other Criteria Lists. */ -public class CriteriaList implements Criteria { +public class CriteriaList implements Criteria, IJsonSerializable { private final List criterias = new ArrayList<>(); private final String assertValue; @@ -102,4 +107,25 @@ public boolean checkCriteria(X509Certificate certificate) { return false; } } + + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + return SignJsonSerializerHelper.serializeCriteriaList(this); + } + + /** + * Deserializes {@link JsonValue} into {@link CriteriaList}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link CriteriaList} + */ + public static CriteriaList fromJson(JsonValue jsonValue) { + return SignJsonSerializerHelper.deserializeCriteriaList((JsonObject) jsonValue); + } } diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/ExtendedKeyUsageCriteria.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/ExtendedKeyUsageCriteria.java index 053cda3c70..f63f643850 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/ExtendedKeyUsageCriteria.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/ExtendedKeyUsageCriteria.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/KeyUsageCriteria.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/KeyUsageCriteria.java index 79d78f242b..f7dddece5d 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/KeyUsageCriteria.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/KeyUsageCriteria.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/PolicySetCriteria.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/PolicySetCriteria.java index 5e16ed7522..73d3f4ea54 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/PolicySetCriteria.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/criteria/PolicySetCriteria.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/IDefaultXmlHandler.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/IDefaultXmlHandler.java index 03b8779aa7..13a8135cd2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/IDefaultXmlHandler.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/IDefaultXmlHandler.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/XmlSaxProcessor.java b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/XmlSaxProcessor.java index 68c13b1512..b5c1ce10c2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/XmlSaxProcessor.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/lotl/xml/XmlSaxProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/CertificateReportItem.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/CertificateReportItem.java index 3675a2d82a..4724e6d9cd 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/CertificateReportItem.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/CertificateReportItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,10 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.report; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; +import com.itextpdf.signatures.SignJsonSerializerHelper; + import java.security.cert.X509Certificate; /** @@ -67,6 +71,36 @@ public X509Certificate getCertificate() { return certificate; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject reportItemJson = (JsonObject) super.toJson(); + reportItemJson.add("certificate", SignJsonSerializerHelper.serializeCertificate(certificate)); + return reportItemJson; + } + + /** + * Deserializes {@link JsonValue} into {@link CertificateReportItem}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link CertificateReportItem} + */ + public static CertificateReportItem fromJson(JsonValue jsonValue) { + ReportItem reportItemFromJson = ReportItem.fromJson(jsonValue); + JsonObject certificateReportItemJson = (JsonObject) jsonValue; + JsonObject certificateJson = (JsonObject) certificateReportItemJson.getField("certificate"); + X509Certificate certificateFromJson = SignJsonSerializerHelper.deserializeCertificate(certificateJson); + + return new CertificateReportItem(certificateFromJson, reportItemFromJson.getCheckName(), + reportItemFromJson.getMessage(), reportItemFromJson.getExceptionCause(), + reportItemFromJson.getStatus()); + } + /** * {@inheritDoc} * diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/ReportItem.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/ReportItem.java index 9c579eb221..9547553304 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/ReportItem.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/ReportItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,10 +22,21 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.report; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonNull; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonString; +import com.itextpdf.commons.json.JsonValue; + /** * Report item to be used for single failure or log message. */ -public class ReportItem { +public class ReportItem implements IJsonSerializable { + private static final String JSON_KEY_REPORT_ITEM_CHECKNAME = "checkName"; + private static final String JSON_KEY_REPORT_ITEM_MESSAGE = "message"; + private static final String JSON_KEY_REPORT_CAUSE = "exceptionCause"; + private static final String JSON_KEY_REPORT_STATUS = "status"; + private final String checkName; private final String message; private final Exception cause; @@ -124,6 +135,60 @@ public ReportItem setStatus(ReportItemStatus status) { return this; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + JsonObject jsonObject = new JsonObject(); + jsonObject.add(JSON_KEY_REPORT_ITEM_CHECKNAME, new JsonString(checkName)); + jsonObject.add(JSON_KEY_REPORT_ITEM_MESSAGE, new JsonString(message)); + jsonObject.add(JSON_KEY_REPORT_CAUSE, + cause == null ? (JsonValue) JsonNull.JSON_NULL : new JsonString(cause.getMessage())); + jsonObject.add(JSON_KEY_REPORT_STATUS, new JsonString(status.toString())); + return jsonObject; + } + + /** + * Deserializes {@link JsonValue} into {@link ReportItem}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link ReportItem} + */ + public static ReportItem fromJson(JsonValue jsonValue) { + JsonObject reportItemJson = (JsonObject) jsonValue; + JsonString checkNameJson = + (JsonString) reportItemJson.getField(JSON_KEY_REPORT_ITEM_CHECKNAME); + JsonString messageJson = + (JsonString) reportItemJson.getField(JSON_KEY_REPORT_ITEM_MESSAGE); + JsonValue exceptionCauseJson = reportItemJson.getField(JSON_KEY_REPORT_CAUSE); + Exception exceptionCauseFromJson = null; + if (exceptionCauseJson instanceof JsonString) { + exceptionCauseFromJson = new Exception(((JsonString) exceptionCauseJson).getValue()); + } else if (exceptionCauseJson instanceof JsonObject) { + JsonValue exceptionMessage = + ((JsonObject) exceptionCauseJson).getField(JSON_KEY_REPORT_ITEM_MESSAGE); + if (exceptionMessage instanceof JsonString) { + exceptionCauseFromJson = new Exception(((JsonString) exceptionMessage).getValue()); + } + } + JsonString statusJson = + (JsonString) reportItemJson.getField(JSON_KEY_REPORT_STATUS); + ReportItemStatus statusFromJson = ReportItemStatus.INVALID; + switch (statusJson.getValue()) { + case "INFO": + statusFromJson = ReportItemStatus.INFO; + break; + case "INDETERMINATE": + statusFromJson = ReportItemStatus.INDETERMINATE; + break; + } + return new ReportItem(checkNameJson.getValue(), messageJson.getValue(), exceptionCauseFromJson, statusFromJson); + } + /** * {@inheritDoc} * diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/ValidationReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/ValidationReport.java index c2147ae059..f3d7e7d8ad 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/ValidationReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/ValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,6 +22,10 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures.validation.report; +import com.itextpdf.commons.json.IJsonSerializable; +import com.itextpdf.commons.json.JsonArray; +import com.itextpdf.commons.json.JsonObject; +import com.itextpdf.commons.json.JsonValue; import com.itextpdf.signatures.validation.report.ReportItem.ReportItemStatus; import java.util.ArrayList; @@ -32,7 +36,9 @@ This file is part of the iText (R) project. /** * Validation report, which contains detailed validation results. */ -public class ValidationReport { +public class ValidationReport implements IJsonSerializable { + private static final String JSON_KEY_REPORT_ITEMS = "reportItems"; + private final List reportItems = new ArrayList<>(); /** @@ -148,6 +154,54 @@ public ValidationReport merge(ValidationReport subReport) { return this; } + /** + * {@inheritDoc}. + * + * @return {@inheritDoc} + */ + @Override + public JsonValue toJson() { + // Sort the items by check name to ensure consistent order + List sortedItems = getLogs().stream().sorted((item1, item2) -> { + if (item1.getCheckName() == null && item2.getCheckName() == null) { + return 0; + } else if (item1.getCheckName() == null) { + return -1; + } else if (item2.getCheckName() == null) { + return 1; + } else { + return item1.getCheckName().compareTo(item2.getCheckName()); + } + }).collect(Collectors.toList()); + + JsonArray reportItemsJson = new JsonArray(); + for (ReportItem reportItem : sortedItems) { + reportItemsJson.add(reportItem.toJson()); + } + JsonObject validationReportJson = new JsonObject(); + validationReportJson.add(JSON_KEY_REPORT_ITEMS, reportItemsJson); + return validationReportJson; + } + + /** + * Deserializes {@link JsonValue} into {@link ValidationReport}. + * + * @param jsonValue {@link JsonValue} to deserialize + * + * @return deserialized {@link ValidationReport} + */ + public static ValidationReport fromJson(JsonValue jsonValue) { + JsonObject validationReportJson = (JsonObject) jsonValue; + JsonArray reportItemsJson = + (JsonArray) validationReportJson.getField(JSON_KEY_REPORT_ITEMS); + ValidationReport validationReportFromJson = new ValidationReport(); + for (ReportItem reportItem : reportItemsJson.getValues().stream().map( + reportItemJson -> ReportItem.fromJson(reportItemJson)).collect(Collectors.toList())) { + validationReportFromJson.addReportItem(reportItem); + } + return validationReportFromJson; + } + /** * Merge all {@link ReportItem} objects from sub report into this one with different status. * diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/AbstractPadesLevelRequirements.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/AbstractPadesLevelRequirements.java index 7b9d25e674..1c6b954809 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/AbstractPadesLevelRequirements.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/AbstractPadesLevelRequirements.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentPAdESLevelReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentPAdESLevelReport.java index 981f029eab..3020390a2c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentPAdESLevelReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentPAdESLevelReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentTimestampRequirements.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentTimestampRequirements.java index 91e2e2016f..908c1f2036 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentTimestampRequirements.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/DocumentTimestampRequirements.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevel.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevel.java index 6c9a53a9c6..50dac7b335 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevel.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevel.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReport.java index f030afa1c2..a6d4d4604c 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGenerator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGenerator.java index fa5189cdec..508596cf99 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGenerator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -285,4 +285,4 @@ private void getCmsInfo(PdfSignature sig, AbstractPadesLevelRequirements reqs) { // cms entries cannot be read but that is no reason to stop here } } -} \ No newline at end of file +} diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/SignatureRequirements.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/SignatureRequirements.java index 32e5ef71a0..95fa37650a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/SignatureRequirements.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/pades/SignatureRequirements.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObject.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObject.java index 94e19ac530..cae1ae2f72 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObject.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObject.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObject.java index c28016d256..51501ad4cd 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObject.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AdESReportAggregator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AdESReportAggregator.java index 040193b11f..c8617e4250 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AdESReportAggregator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/AdESReportAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapper.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapper.java index 4dced0b1e8..ba15f97ded 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapper.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObject.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObject.java index c3075b1727..61b8a91b1b 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObject.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObjectVisitor.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObjectVisitor.java index 2b90dad955..0c03785ac2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObjectVisitor.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/CollectableObjectVisitor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/DefaultAdESReportAggregator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/DefaultAdESReportAggregator.java index 18743d54f9..13fab60f91 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/DefaultAdESReportAggregator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/DefaultAdESReportAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/EventsToAdESReportAggratorConvertor.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/EventsToAdESReportAggratorConvertor.java index c21b7d24eb..19edf38a78 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/EventsToAdESReportAggratorConvertor.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/EventsToAdESReportAggratorConvertor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/IdentifiableObject.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/IdentifiableObject.java index 47fdf1f1df..9647aa6685 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/IdentifiableObject.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/IdentifiableObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/Identifier.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/Identifier.java index b56a58e0c5..aefebc625f 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/Identifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/Identifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/NullAdESReportAggregator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/NullAdESReportAggregator.java index 817f6f9e98..943eea72b0 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/NullAdESReportAggregator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/NullAdESReportAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/POEValidationReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/POEValidationReport.java index 3a85003917..647fbd6801 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/POEValidationReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/POEValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReport.java index e4ff05e842..62f56d91c3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifier.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifier.java index 1dcef01a67..13e3991bf2 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifier.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifier.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReport.java index aa59dd8892..37c2cac00f 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatus.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatus.java index 0b73b2ef11..503d4d4e20 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatus.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatus.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SubValidationReport.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SubValidationReport.java index 33d89c3fee..dd0d51974a 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SubValidationReport.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/SubValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/ValidationObjects.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/ValidationObjects.java index 234a50293b..8edd6e84b3 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/ValidationObjects.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/ValidationObjects.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlGeneratorCollectableObjectVisitor.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlGeneratorCollectableObjectVisitor.java index 21fa5a0747..69450368e9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlGeneratorCollectableObjectVisitor.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlGeneratorCollectableObjectVisitor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportAggregator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportAggregator.java index 4e275ac59e..ce7903b2c1 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportAggregator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportAggregator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportGenerator.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportGenerator.java index 197bac437f..a0d2c968f9 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportGenerator.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportGenerator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportOptions.java b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportOptions.java index 4916a5eb6e..063cd8050f 100644 --- a/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportOptions.java +++ b/sign/src/main/java/com/itextpdf/signatures/validation/report/xml/XmlReportOptions.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/sharpenconfig/java/com/itextpdf/signatures/SharpenConfigMapping.java b/sign/src/sharpenconfig/java/com/itextpdf/signatures/SharpenConfigMapping.java index 4e11bfc92f..35c151a166 100644 --- a/sign/src/sharpenconfig/java/com/itextpdf/signatures/SharpenConfigMapping.java +++ b/sign/src/sharpenconfig/java/com/itextpdf/signatures/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -166,6 +166,9 @@ public void applyMappingConfiguration(MappingConfigurator configurator) { configurator.mapType("com.itextpdf.signatures.validation.lotl.QualifiedValidator.QualificationConclusion", "QualificationConclusion?"); configurator.mapType("com.itextpdf.signatures.validation.dataorigin.CertificateOrigin", "iText.Signatures.Validation.Dataorigin.CertificateOrigin?"); configurator.mapType("com.itextpdf.signatures.validation.dataorigin.RevocationDataOrigin", "iText.Signatures.Validation.Dataorigin.RevocationDataOrigin?"); + + configurator.addFullName("iText.StyledXmlParser.Resolver.Resource.IResourceRetriever"); + configurator.addFullName("iText.StyledXmlParser.Resolver.Resource.DefaultResourceRetriever"); } @Override diff --git a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleContractTest.java b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleContractTest.java index 7ca7f2fa6b..ebe49952b5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleContractTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleContractTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java index acca4d14e1..77e89a3836 100644 --- a/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/BouncyCastleDigestUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java index e86f2f8fae..905f9046bd 100644 --- a/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/CertificateInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java index 78d7cd3ee0..0455860bd8 100644 --- a/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/CertificateSupportedCriticalExtensionsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java b/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java index 38d742e9f5..7aa6c2820d 100644 --- a/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/CertificateUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java b/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java index f2d4c1a5df..0288a1c05f 100644 --- a/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/CrlClientOfflineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java index 1212528dfa..d17bb6e9f6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsManualTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java index 79222f8e39..9246a1f8b5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/DigestAlgorithmsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java index a080af447f..deef29e5cc 100644 --- a/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/ExternalBlankSignatureContainerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/IssuingCertificateRetrieverTest.java b/sign/src/test/java/com/itextpdf/signatures/IssuingCertificateRetrieverTest.java index 77ada6440a..245002a993 100644 --- a/sign/src/test/java/com/itextpdf/signatures/IssuingCertificateRetrieverTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/IssuingCertificateRetrieverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,26 +22,71 @@ This file is part of the iText (R) project. */ package com.itextpdf.signatures; +import com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator; +import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; +import com.itextpdf.commons.bouncycastle.cert.ocsp.AbstractOCSPException; +import com.itextpdf.commons.bouncycastle.cert.ocsp.IBasicOCSPResp; +import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; +import com.itextpdf.commons.bouncycastle.pkcs.AbstractPKCSException; import com.itextpdf.commons.utils.FileUtil; import com.itextpdf.signatures.testutils.PemFileHelper; +import com.itextpdf.signatures.testutils.builder.TestOcspResponseBuilder; +import com.itextpdf.signatures.testutils.client.TestOcspClient; import com.itextpdf.signatures.validation.ValidatorChainBuilder; import com.itextpdf.signatures.validation.mocks.MockResourceRetriever; import com.itextpdf.test.ExtendedITextTest; import java.io.IOException; import java.net.URL; +import java.security.PrivateKey; import java.security.cert.Certificate; import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Set; + +import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; +import org.junit.jupiter.api.Timeout.ThreadMode; -@Tag("IntegrationTest") +@Tag("BouncyCastleIntegrationTest") class IssuingCertificateRetrieverTest extends ExtendedITextTest { - private static final String CERTS_SRC = "./src/test/resources/com/itextpdf/signatures/certs/"; + private static final IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator.getFactory(); + + private static final char[] PASSWORD = "testpassphrase".toCharArray(); + + @Test + @Timeout(value = 10000, unit = TimeUnit.MILLISECONDS, threadMode = ThreadMode.SEPARATE_THREAD) + public void infiniteloopTest() + throws CertificateException, IOException { + IssuingCertificateRetriever issuingCertificateRetriever = + new IssuingCertificateRetriever(); + Certificate[] cert = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/sign.cert.pem"); + // the order of the known certificates is important, + // changing it can make the test succeed without fix + // the cross signed certificates that create the loop + // must come first + Certificate[] knownCerts = new Certificate[6]; + knownCerts[0] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/sign.cert.pem")[0]; + knownCerts[5] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/ca1.cert.pem")[0]; + knownCerts[4] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/ca2a.cert.pem")[0]; + knownCerts[3] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/ca2b.cert.pem")[0]; + knownCerts[2] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/ca3a.cert.pem")[0]; + knownCerts[1] = PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/ca3b.cert.pem")[0]; + issuingCertificateRetriever.addKnownCertificates(Arrays.asList(knownCerts)); + + // An endless loop does not throw an exception, but it is caught the @Timeout annotation + Certificate[] result = issuingCertificateRetriever.retrieveMissingCertificates(cert); + Assertions.assertNotNull(result); + Assertions.assertTrue(result.length>1); + } + @Test public void testResourceRetrieverUsage() throws CertificateException, IOException { @@ -63,6 +108,23 @@ public void testResourceRetrieverUsage() throws CertificateException, IOExceptio Assertions.assertEquals(1, urlsCalled.size()); Assertions.assertEquals("http://test.example.com/example-ca/certs/ca/ca.crt", urlsCalled.get(0).toString()); + } + + @Test + public void ocspWithKeyHashTest() throws CertificateException, IOException, AbstractOperatorCreationException, AbstractPKCSException, AbstractOCSPException { + X509Certificate cert = (X509Certificate) PemFileHelper.readFirstChain(CERTS_SRC + "rootRsa.pem")[0]; + PrivateKey signRsaPrivateKey = PemFileHelper.readFirstKey(CERTS_SRC + "rootRsa.pem", PASSWORD); + + TestOcspClient testOcspClient = new TestOcspClient(); + TestOcspResponseBuilder responseBuilder = new TestOcspResponseBuilder(cert, signRsaPrivateKey); + responseBuilder.setResponseBuilder(FACTORY.createBasicOCSPRespBuilder(FACTORY.createRespID(cert))); + testOcspClient.addBuilderForCertIssuer(cert, responseBuilder); + + IBasicOCSPResp ocspResponse = testOcspClient.getBasicOcspResp(cert, cert); + IssuingCertificateRetriever issuingCertificateRetriever = new IssuingCertificateRetriever(); + Set retrievers = issuingCertificateRetriever.retrieveOCSPResponderByNameCertificate(ocspResponse); + Assertions.assertEquals(1, retrievers.size()); + Assertions.assertTrue(retrievers.contains(cert)); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java index e0670cd922..7d93955b18 100644 --- a/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/KeyStoreUtilUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java index 9dc24fd6e9..a9e3eae046 100644 --- a/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerificationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -26,6 +26,8 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.pkcs.AbstractPKCSException; +import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.kernel.pdf.PdfArray; import com.itextpdf.kernel.pdf.PdfDictionary; import com.itextpdf.kernel.pdf.PdfDocument; @@ -184,20 +186,25 @@ public void validateSigNameWithNullCrlOcspCertTest() throws IOException, General } @Test - //TODO DEVSIX-5696 Sign: NPE is thrown because no such a signature public void exceptionWhenValidateNonExistentSigNameTest() throws IOException { LtvVerification testVerification = setup(); - Assertions.assertThrows(NullPointerException.class, - () -> testVerification.addVerification("nonExistentSigName", null, null, null)); + String signatureName = "nonExistentSigName"; + Exception exception = Assertions.assertThrows(PdfException.class, + () -> testVerification.addVerification(signatureName, null, null, null)); + Assertions.assertEquals(MessageFormatUtil.format( + SignExceptionMessageConstant.NO_SIGNATURE_WITH_THAT_NAME, signatureName), exception.getMessage()); + } @Test - //TODO DEVSIX-5696 Sign: NPE is thrown because no such a signature public void exceptionWhenValidateParticularNonExistentSigNameTest() throws IOException { LtvVerification testVerification = setup(); - Assertions.assertThrows(NullPointerException.class, - () -> testVerification.addVerification("nonExistentSigName", null, null, + String signatureName = "nonExistentSigName"; + Exception exception = Assertions.assertThrows(PdfException.class, + () -> testVerification.addVerification(signatureName, null, null, CertificateOption.SIGNING_CERTIFICATE, Level.OCSP_CRL, CertificateInclusion.YES)); + Assertions.assertEquals(MessageFormatUtil.format( + SignExceptionMessageConstant.NO_SIGNATURE_WITH_THAT_NAME, signatureName), exception.getMessage()); } @Test diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java index 149619b776..b4783a8e44 100644 --- a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java index b7148805e9..028fefe9b8 100644 --- a/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/LtvVerifierUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java b/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java index b09095f6e4..82a395a6fb 100644 --- a/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/OcspClientBouncyCastleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainerTest.java b/sign/src/test/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainerTest.java index bab25cb681..85756d6328 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainerTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PKCS7ExternalSignatureContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7BasicTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7BasicTest.java index c47a90826e..70d72924fa 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7BasicTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7BasicTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7ManuallyPortedTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7ManuallyPortedTest.java index 74ac67c52b..54b7134972 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7ManuallyPortedTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7ManuallyPortedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java index 5dc75629bf..77fb774771 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfPKCS7Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java index cc6969fe79..fd4d279284 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfSignatureBuildPropertiesUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java index f184a78a76..36d129051c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfSignerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfTwoPhaseSignerUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfTwoPhaseSignerUnitTest.java index b767054afb..41f52325f8 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfTwoPhaseSignerUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfTwoPhaseSignerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PdfUASignerTest.java b/sign/src/test/java/com/itextpdf/signatures/PdfUASignerTest.java index 79982ee5ac..60c5ca5c25 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PdfUASignerTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PdfUASignerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PostQuantumAlgorithmsTest.java b/sign/src/test/java/com/itextpdf/signatures/PostQuantumAlgorithmsTest.java index 59141d1d27..25c1f51714 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PostQuantumAlgorithmsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PostQuantumAlgorithmsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/PostQuantumExperimentalAlgorithmsTest.java b/sign/src/test/java/com/itextpdf/signatures/PostQuantumExperimentalAlgorithmsTest.java index 27ede41376..db48cadc27 100644 --- a/sign/src/test/java/com/itextpdf/signatures/PostQuantumExperimentalAlgorithmsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/PostQuantumExperimentalAlgorithmsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java index 0e0479c771..98edd17cf8 100644 --- a/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/ProviderDigestUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignMetaInfoHandlingTest.java b/sign/src/test/java/com/itextpdf/signatures/SignMetaInfoHandlingTest.java index 2ab8919bcf..dc2689fb1a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignMetaInfoHandlingTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignMetaInfoHandlingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java index ca9971c9fd..839d1038cd 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignUtilsManualTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java index 214aacde63..608b3777ec 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignUtilsUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsManualTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsManualTest.java index 9df18a6da0..e682de183e 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsManualTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsManualTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsTest.java index c3781ba7c8..d946f19670 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignatureMechanismsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java b/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java index 966e6a4428..9e2553b99a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignaturePermissionsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java index e2937d0615..4fe880671a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignaturePolicyInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java index b6b398f004..211ee43add 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java index 265e684aa1..aedf7075cb 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignatureUtilUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java b/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java index e4446d734f..0b1d7b0608 100644 --- a/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java +++ b/sign/src/test/java/com/itextpdf/signatures/SignaturesTestUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java b/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java index f67bf9c437..80f1098db4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/TSAClientBouncyCastleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/TestSignUtils.java b/sign/src/test/java/com/itextpdf/signatures/TestSignUtils.java index dbe5ef66a9..e5c357e53b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/TestSignUtils.java +++ b/sign/src/test/java/com/itextpdf/signatures/TestSignUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/TrustedCertificatesStoreTest.java b/sign/src/test/java/com/itextpdf/signatures/TrustedCertificatesStoreTest.java index 0ead4c0731..842c66ffa5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/TrustedCertificatesStoreTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/TrustedCertificatesStoreTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java b/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java index ad4288e038..0c1a35498c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/VerificationOKTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/cms/CMSContainerTest.java b/sign/src/test/java/com/itextpdf/signatures/cms/CMSContainerTest.java index f43bf5eaf0..8c463afbe6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/cms/CMSContainerTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/cms/CMSContainerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/cms/CMSTestHelper.java b/sign/src/test/java/com/itextpdf/signatures/cms/CMSTestHelper.java index 185288f4a6..78e3fe089c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/cms/CMSTestHelper.java +++ b/sign/src/test/java/com/itextpdf/signatures/cms/CMSTestHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/cms/EncapsulatedContentInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/cms/EncapsulatedContentInfoTest.java index 8ce7fa251a..7498911303 100644 --- a/sign/src/test/java/com/itextpdf/signatures/cms/EncapsulatedContentInfoTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/cms/EncapsulatedContentInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/cms/SignerInfoTest.java b/sign/src/test/java/com/itextpdf/signatures/cms/SignerInfoTest.java index f78b128df5..53af05c2e3 100644 --- a/sign/src/test/java/com/itextpdf/signatures/cms/SignerInfoTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/cms/SignerInfoTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/mac/ReadSignedMacProtectedDocumentTest.java b/sign/src/test/java/com/itextpdf/signatures/mac/ReadSignedMacProtectedDocumentTest.java index 94dda29afd..25f44b40bc 100644 --- a/sign/src/test/java/com/itextpdf/signatures/mac/ReadSignedMacProtectedDocumentTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/mac/ReadSignedMacProtectedDocumentTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/mac/SignedDocumentWithMacTest.java b/sign/src/test/java/com/itextpdf/signatures/mac/SignedDocumentWithMacTest.java index 6b70eccb21..f0f63a5dfb 100644 --- a/sign/src/test/java/com/itextpdf/signatures/mac/SignedDocumentWithMacTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/mac/SignedDocumentWithMacTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/mac/TwoStepSigningWithMacTest.java b/sign/src/test/java/com/itextpdf/signatures/mac/TwoStepSigningWithMacTest.java index 276c33d19c..38cc6bfe1d 100644 --- a/sign/src/test/java/com/itextpdf/signatures/mac/TwoStepSigningWithMacTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/mac/TwoStepSigningWithMacTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java index 8d97c8cd80..b587e75e9a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/AnnotationsSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -27,10 +27,13 @@ This file is part of the iText (R) project. import com.itextpdf.commons.bouncycastle.operator.AbstractOperatorCreationException; import com.itextpdf.commons.bouncycastle.pkcs.AbstractPKCSException; import com.itextpdf.commons.utils.FileUtil; +import com.itextpdf.forms.fields.PdfFormCreator; import com.itextpdf.forms.fields.properties.SignedAppearanceText; import com.itextpdf.forms.form.element.SignatureFieldAppearance; import com.itextpdf.kernel.crypto.DigestAlgorithms; import com.itextpdf.kernel.geom.Rectangle; +import com.itextpdf.kernel.pdf.PdfDocument; +import com.itextpdf.kernel.pdf.PdfName; import com.itextpdf.kernel.pdf.PdfReader; import com.itextpdf.kernel.pdf.StampingProperties; import com.itextpdf.kernel.utils.CompareTool; @@ -43,7 +46,13 @@ This file is part of the iText (R) project. import com.itextpdf.signatures.testutils.PemFileHelper; import com.itextpdf.signatures.testutils.SignaturesCompareTool; import com.itextpdf.test.ExtendedITextTest; +import com.itextpdf.test.ITextTest; import com.itextpdf.test.TestUtil; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.security.GeneralSecurityException; @@ -55,15 +64,10 @@ This file is part of the iText (R) project. import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Tag; -import org.junit.jupiter.api.Test; @Tag("BouncyCastleIntegrationTest") public class AnnotationsSigningTest extends ExtendedITextTest { - + private static final IBouncyCastleFactory FACTORY = BouncyCastleFactoryCreator.getFactory(); private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/"; @@ -157,20 +161,63 @@ public void signingIntoExistingReuseAppearanceTest() Assertions.assertNull(SignaturesCompareTool.compareSignatures(outPdf, cmpPdf)); } + @Test + public void signFieldWithDAEntryTest() throws GeneralSecurityException, IOException { + String srcFile = SOURCE_FOLDER + "signatureFieldWithDAEntry.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp_signedFieldWithDAEntry.pdf"; + String outPdf = DESTINATION_FOLDER + "signedFieldWithDAEntry.pdf"; + String[] signatureFieldNames = {"signature1"}; + + sign(srcFile, signatureFieldNames[0], outPdf, chain, pk, DigestAlgorithms.SHA256, PdfSigner.CryptoStandard.CADES, "reason1", + "TestCity", null, false, true); + + compareDAEntry(outPdf, cmpPdf, signatureFieldNames); + } + + @Test + public void signTwiceDocWithDAEntryTest() throws GeneralSecurityException, IOException { + String srcFile = SOURCE_FOLDER + "signedOnceDocWithDAEntry.pdf"; + String cmpPdf = SOURCE_FOLDER + "cmp_signedTwiceDocWithDAEntry.pdf"; + String outPdf = DESTINATION_FOLDER + "signedTwiceDocWithDAEntry.pdf"; + String[] signatureFieldNames = {"signature1", "signature2"}; + + sign(srcFile, signatureFieldNames[1], outPdf, chain, pk, DigestAlgorithms.SHA256, PdfSigner.CryptoStandard.CADES, "reason2", + "TestCity", null, false, true); + + compareDAEntry(outPdf, cmpPdf, signatureFieldNames); + } + + private void compareDAEntry(String outPdf, String cmpPdf, String[] signatureFieldNames) throws IOException { + ITextTest.printOutCmpPdfNameAndDir(outPdf, cmpPdf); + try (PdfDocument outDoc = new PdfDocument(new PdfReader(outPdf))) { + try (PdfDocument cmpDoc = new PdfDocument(new PdfReader(cmpPdf))) { + for (String signatureFieldName : signatureFieldNames) { + String outDA = PdfFormCreator.getAcroForm(outDoc, false) + .getField(signatureFieldName).getPdfObject() + .getAsString(PdfName.DA).toString(); + String cmpDA = PdfFormCreator.getAcroForm(cmpDoc, false) + .getField(signatureFieldName).getPdfObject() + .getAsString(PdfName.DA).toString(); + Assertions.assertEquals(outDA, cmpDA); + } + } + } + } + protected void sign(String src, String name, String dest, - Certificate[] chain, PrivateKey pk, - String digestAlgorithm, PdfSigner.CryptoStandard subfilter, - String reason, String location, Rectangle rectangleForNewField, boolean setReuseAppearance, - boolean isAppendMode) throws GeneralSecurityException, IOException { + Certificate[] chain, PrivateKey pk, + String digestAlgorithm, PdfSigner.CryptoStandard subfilter, + String reason, String location, Rectangle rectangleForNewField, boolean setReuseAppearance, + boolean isAppendMode) throws GeneralSecurityException, IOException { sign(src, name, dest, chain, pk, digestAlgorithm, subfilter, reason, location, rectangleForNewField, setReuseAppearance, isAppendMode, AccessPermissions.UNSPECIFIED, null); } protected void sign(String src, String name, String dest, - Certificate[] chain, PrivateKey pk, - String digestAlgorithm, PdfSigner.CryptoStandard subfilter, - String reason, String location, Rectangle rectangleForNewField, boolean setReuseAppearance, - boolean isAppendMode, AccessPermissions certificationLevel, Float fontSize) + Certificate[] chain, PrivateKey pk, + String digestAlgorithm, PdfSigner.CryptoStandard subfilter, + String reason, String location, Rectangle rectangleForNewField, boolean setReuseAppearance, + boolean isAppendMode, AccessPermissions certificationLevel, Float fontSize) throws GeneralSecurityException, IOException { PdfReader reader = new PdfReader(src); diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java index 89d9d70744..e2327a6808 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/CrlClientOnlineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java index 89ef6114ab..42d81bab20 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/EncryptedSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/IsoSignatureExtensionsRoundtripTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/IsoSignatureExtensionsRoundtripTest.java index 989eee9596..2aa29757bc 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/IsoSignatureExtensionsRoundtripTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/IsoSignatureExtensionsRoundtripTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java index f93758a5f7..62b030e3ba 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/LtvSigTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java index c3250ae10a..96f07f0b42 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/LtvWithTwoSignaturesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java index e1f0026af1..6c58286b2a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSigTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java index 61bb352c8e..4b29a53f6b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesSignatureLevelTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningLevelsTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningLevelsTest.java index 423082b6aa..487767be0a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningLevelsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningLevelsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningTest.java index bb367a8072..a196f89472 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PadesTwoPhaseSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java index 0201e409e7..bf51dde875 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/Pdf20SigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java index b225cf4971..7c43a0a1d5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfASigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -104,8 +104,8 @@ public void simpleSigningTest() throws GeneralSecurityException, IOException, In int x = 36; int y = 548; - int w = 200; - int h = 100; + int w = 300; + int h = 200; Rectangle rect = new Rectangle(x, y, w, h); String fieldName = "Signature1"; @@ -116,7 +116,7 @@ public void simpleSigningTest() throws GeneralSecurityException, IOException, In Assertions.assertNull(new VeraPdfValidator().validate(dest)); // Android-Conversion-Skip-Line (TODO DEVSIX-7377 introduce pdf\a validation on Android) Assertions.assertNull(SignaturesCompareTool.compareSignatures(dest, sourceFolder + "cmp_" + fileName)); Assertions.assertNull(new CompareTool().compareVisually(dest, sourceFolder + "cmp_" + fileName, destinationFolder, - "diff_", getTestMap(new Rectangle(27, 550, 195, 40)))); + "diff_", getTestMap(new Rectangle(27, 620, 195, 40)))); } @Test @@ -160,7 +160,7 @@ public void signPdf2CadesTest() throws GeneralSecurityException, IOException, In String cmpPdf = sourceFolder + "cmp_signPdfCades.pdf"; String outPdf = destinationFolder + "signPdfCades.pdf"; - Rectangle rect = new Rectangle(30, 200, 200, 100); + Rectangle rect = new Rectangle(30, 200, 300, 200); String fieldName = "Signature1"; sign(srcFile, fieldName, outPdf, chain, pk, DigestAlgorithms.SHA256, PdfSigner.CryptoStandard.CADES, diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesAdvancedTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesAdvancedTest.java index 4f12acbedc..c3dd031ffc 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesAdvancedTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesAdvancedTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesMissingCertificatesTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesMissingCertificatesTest.java index bafa561cdb..88038975d3 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesMissingCertificatesTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesMissingCertificatesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLevelsTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLevelsTest.java index c2baf41b50..827f4fc45d 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLevelsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLevelsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLtvExtensionsTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLtvExtensionsTest.java index 5c511d9901..d9516d8a2d 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLtvExtensionsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerLtvExtensionsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerTest.java index 014eb98a48..bd23c194ec 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesSignerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithCrlCertificateTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithCrlCertificateTest.java index bbe40a729f..a08d7b1b86 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithCrlCertificateTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithCrlCertificateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithMissingCertTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithMissingCertTest.java index 1799442ed1..3f2c1d6ab5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithMissingCertTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithMissingCertTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithOcspCertificateTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithOcspCertificateTest.java index 7393ef8fc4..d8064b320f 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithOcspCertificateTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithOcspCertificateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithTimestampCertificateTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithTimestampCertificateTest.java index 1b8efd7cbd..f6297142a7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithTimestampCertificateTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfPadesWithTimestampCertificateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java index ff18a19dff..312af9b728 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/PdfSignatureTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/RSASSAPSSTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/RSASSAPSSTest.java index 16495e5e90..f13d7096cc 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/RSASSAPSSTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/RSASSAPSSTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java index 3ae271ee12..d717026003 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/SequentialSignaturesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java index 810501c7a2..1660f0affd 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/SignDeferredTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SignatureAppearanceTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SignatureAppearanceTest.java index 8ec560a87e..76359e11ad 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/SignatureAppearanceTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/SignatureAppearanceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SignedAppearanceTextTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SignedAppearanceTextTest.java index 5851c96003..190d09a989 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/SignedAppearanceTextTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/SignedAppearanceTextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java index 6604765001..fe2f75b288 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/SimpleSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java index 26f85af9ad..8aab52acc5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedPdfSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedSigningFieldTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedSigningFieldTest.java index d31ae08dd1..8555fde7a8 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/TaggedSigningFieldTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/TaggedSigningFieldTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java index 2eae5cfa6d..d0a3d1e0bd 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/TimestampSigTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/sign/TwoPhaseSigningTest.java b/sign/src/test/java/com/itextpdf/signatures/sign/TwoPhaseSigningTest.java index 03ab8cad97..c632fb6d46 100644 --- a/sign/src/test/java/com/itextpdf/signatures/sign/TwoPhaseSigningTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/sign/TwoPhaseSigningTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/PemFileHelper.java b/sign/src/test/java/com/itextpdf/signatures/testutils/PemFileHelper.java index ed27982662..fd417c01c4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/PemFileHelper.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/PemFileHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java b/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java index d5d647aa95..f5a2af6d22 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/SignTestPortUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java b/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java index 3bddf76357..ca38e88faf 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/SignaturesCompareTool.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java b/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java index f12c2b21c6..8a7ffebb17 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/TimeTestUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java b/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java index ee82d9ecd8..d2f8f1d3c9 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/X509MockCertificate.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java index ac06644495..b92b1f8bd5 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestCrlBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java index 1911e1ffee..3073cb608b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestOcspResponseBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -57,7 +57,7 @@ public class TestOcspResponseBuilder { private static final String SIGN_ALG = "SHA256withRSA"; private final String signatureAlgorithm; - private final IBasicOCSPRespBuilder responseBuilder; + private IBasicOCSPRespBuilder responseBuilder; private final X509Certificate issuerCert; private final PrivateKey issuerPrivateKey; private ICertificateStatus certificateStatus; @@ -96,6 +96,10 @@ public TestOcspResponseBuilder(X509Certificate issuerCert, PrivateKey issuerPriv this(issuerCert, issuerPrivateKey, FACTORY.createCertificateStatus().getGood()); } + public void setResponseBuilder(IBasicOCSPRespBuilder responseBuilder) { + this.responseBuilder = responseBuilder; + } + public X509Certificate getIssuerCert() { return issuerCert; } diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java index 405aeebbf2..647639e5d4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/builder/TestTimestampTokenBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java b/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java index 95ab45a55e..1b4927c551 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/cert/TestCertificateBuilder.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestCrlClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestCrlClient.java index 22b1be972f..c57841494c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestCrlClient.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestCrlClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestOcspClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestOcspClient.java index b6882c7a40..ad73de65a3 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestOcspClient.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/AdvancedTestOcspClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java index e758d29a46..de3256390c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClientWrapper.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClientWrapper.java index e79543891f..022acacbfe 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClientWrapper.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestCrlClientWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java index 106762154e..b39b102834 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,11 +24,13 @@ This file is part of the iText (R) project. import com.itextpdf.bouncycastleconnector.BouncyCastleFactoryCreator; import com.itextpdf.commons.bouncycastle.IBouncyCastleFactory; +import com.itextpdf.commons.bouncycastle.cert.ocsp.IBasicOCSPResp; import com.itextpdf.commons.bouncycastle.cert.ocsp.ICertificateID; import com.itextpdf.signatures.IOcspClient; import com.itextpdf.signatures.testutils.SignTestPortUtil; import com.itextpdf.signatures.testutils.builder.TestOcspResponseBuilder; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.security.PrivateKey; @@ -60,6 +62,24 @@ public TestOcspClient addBuilderForCertIssuer(X509Certificate cert, TestOcspResp return this; } + public IBasicOCSPResp getBasicOcspResp(X509Certificate checkCert, X509Certificate issuerCert) { + IBasicOCSPResp basicOCSPResp = null; + try { + ICertificateID id = SignTestPortUtil.generateCertificateId(issuerCert, checkCert.getSerialNumber(), BOUNCY_CASTLE_FACTORY.createCertificateID().getHashSha1()); + TestOcspResponseBuilder builder = issuerIdToResponseBuilder.get(issuerCert.getSerialNumber().toString(16)); + if (builder == null) { + throw new IllegalArgumentException("This TestOcspClient instance is not capable of providing OCSP response for the given issuerCert:" + issuerCert.getSubjectDN().toString()); + } + basicOCSPResp = builder.makeOcspResponseObject(SignTestPortUtil.generateOcspRequestWithNonce(id).getEncoded()); + } catch (Exception e) { + if (e instanceof RuntimeException) { + throw (RuntimeException) e; + } + } + + return basicOCSPResp; + } + @Override public byte[] getEncoded(X509Certificate checkCert, X509Certificate issuerCert, String url) { if (url != null && !url.isEmpty()) { @@ -71,20 +91,10 @@ public byte[] getEncoded(X509Certificate checkCert, X509Certificate issuerCert, } } - byte[] bytes = null; try { - ICertificateID id = SignTestPortUtil.generateCertificateId(issuerCert, checkCert.getSerialNumber(), BOUNCY_CASTLE_FACTORY.createCertificateID().getHashSha1()); - TestOcspResponseBuilder builder = issuerIdToResponseBuilder.get(issuerCert.getSerialNumber().toString(16)); - if (builder == null) { - throw new IllegalArgumentException("This TestOcspClient instance is not capable of providing OCSP response for the given issuerCert:" + issuerCert.getSubjectDN().toString()); - } - bytes = builder.makeOcspResponse(SignTestPortUtil.generateOcspRequestWithNonce(id).getEncoded()); - } catch (Exception e) { - if (e instanceof RuntimeException) { - throw (RuntimeException) e; - } + return getBasicOcspResp(checkCert, issuerCert).getEncoded(); + } catch (IOException e) { + throw new RuntimeException("Response encoding produced an exception.", e); } - - return bytes; } } diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClientWrapper.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClientWrapper.java index 59f7bee84b..3e3a13eb93 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClientWrapper.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestOcspClientWrapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java index 23442dea87..20b9cfc6b3 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/client/TestTsaClient.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/ReportNamespaceContext.java b/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/ReportNamespaceContext.java index 0adeea1956..205408019a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/ReportNamespaceContext.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/ReportNamespaceContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/XmlReportTestTool.java b/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/XmlReportTestTool.java index 5d65f44a8c..1b389b9d1c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/XmlReportTestTool.java +++ b/sign/src/test/java/com/itextpdf/signatures/testutils/report/xml/XmlReportTestTool.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/AssertValidationReport.java b/sign/src/test/java/com/itextpdf/signatures/validation/AssertValidationReport.java index 30647beb80..f5a3fe3513 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/AssertValidationReport.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/AssertValidationReport.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/CRLValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/CRLValidatorTest.java index 85091d643f..22e2b24dd6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/CRLValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/CRLValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/CertificateChainValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/CertificateChainValidatorTest.java index 8217ff51bb..033f8685f7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/CertificateChainValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/CertificateChainValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -44,6 +44,7 @@ This file is part of the iText (R) project. import com.itextpdf.signatures.validation.report.ReportItem; import com.itextpdf.signatures.validation.report.ValidationReport; import com.itextpdf.signatures.validation.report.ValidationReport.ValidationResult; +import com.itextpdf.test.AssertUtil; import com.itextpdf.test.ExtendedITextTest; import java.io.IOException; @@ -53,6 +54,7 @@ This file is part of the iText (R) project. import java.security.cert.CertificateExpiredException; import java.security.cert.CertificateNotYetValidException; import java.security.cert.X509Certificate; +import java.util.Arrays; import java.util.Collections; import java.util.Date; @@ -106,6 +108,28 @@ public void validChainTest() throws CertificateException, IOException { )); } + @Test + public void crossSignedChainTest() throws CertificateException, IOException { + MockRevocationDataValidator mockRevocationDataValidator = new MockRevocationDataValidator(); + IssuingCertificateRetriever certificateRetriever = new IssuingCertificateRetriever(); + SignatureValidationProperties properties = new SignatureValidationProperties(); + String chainName = CERTS_SRC + "crossSigned/chain.pem"; + Certificate[] certificateChain = PemFileHelper.readFirstChain(chainName); + X509Certificate signingCert = + (X509Certificate) PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/sign.cert.pem")[0]; + X509Certificate rootCert = + (X509Certificate) PemFileHelper.readFirstChain(CERTS_SRC + "crossSigned/r2.cert.pem")[0]; + + ValidatorChainBuilder validatorChainBuilder = setUpValidatorChain(certificateRetriever, properties, mockRevocationDataValidator); + CertificateChainValidator validator = validatorChainBuilder.buildCertificateChainValidator(); + certificateRetriever.addKnownCertificates(Arrays.asList(certificateChain)); + certificateRetriever.setTrustedCertificates(Collections.singletonList(rootCert)); + + AssertUtil.doesNotThrow( () -> + validator.validateCertificate(baseContext, signingCert, TimeTestUtil.TEST_DATE_TIME) + ); + } + @Test public void validNumericBasicConstraintsTest() throws CertificateException, IOException { MockRevocationDataValidator mockRevocationDataValidator = new MockRevocationDataValidator(); @@ -1091,4 +1115,4 @@ public void certificateRetrieverOriginTest() throws CertificateException, IOExce .withCertificate(rootCert)) ); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/CustomDateChainValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/CustomDateChainValidator.java index 1d86ec0882..82d8f6975b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/CustomDateChainValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/CustomDateChainValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparatorTest.java index 73cb1da4e5..c1f00f9e24 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionPdfObjectComparatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -52,4 +52,4 @@ public void testUnsupportedDecodingTypeDoesNotThrowException() { }); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorIntegrationTest.java index 2312ef3ee3..ba488e1d5e 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorTest.java index fe38c77979..9d8b095fff 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/DocumentRevisionsValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesLoaderTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesLoaderTest.java index 8cc9861e5c..edcb6b5f6e 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesLoaderTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesLoaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -55,4 +55,4 @@ public void getLatestSupportedVersion() { } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoaderTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoaderTest.java index 6abe20e8f8..0da99c42b1 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoaderTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedCertificatesResourceLoaderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -91,4 +91,4 @@ public void verifyHashInvalidBase64InValid() { EuropeanTrustedCertificatesResourceLoader.verifyCertificate("**dsf sdfs fsdf @@", c); }); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactoryTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactoryTest.java index 0c06d7342c..dd9a70c108 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactoryTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/EuropeanTrustedListConfigurationFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -58,4 +58,4 @@ public void setFactory() { Assertions.assertNotNull(EuropeanTrustedListConfigurationFactory.getFactory(), "Factory should not be null after setting it with a supplier"); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorIntegrationTest.java index 5fce367b2a..37e8ab8b43 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorTest.java index 6004d2d6bc..747b4c4c1a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/OCSPValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorIntegrationTest.java index dc5b2d2863..dcb1c762ff 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorTest.java index 5ede1e9a3b..3e643b0df4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/RevocationDataValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/SafeCallingTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/SafeCallingTest.java index e828b9ab84..78d251b7d6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/SafeCallingTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/SafeCallingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -141,4 +141,4 @@ public void illegalArgumentExceptionDoesNotThrowException() { ); }); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidationPropertiesTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidationPropertiesTest.java index 09f4276819..823b6a00a7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidationPropertiesTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidationPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -228,4 +228,4 @@ public Consumer getAction() { }; } } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorIntegrationTest.java index 45d5d63079..14f9a4db4b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -45,6 +45,7 @@ This file is part of the iText (R) project. import com.itextpdf.signatures.validation.context.TimeBasedContexts; import com.itextpdf.signatures.validation.context.ValidatorContext; import com.itextpdf.signatures.validation.context.ValidatorContexts; +import com.itextpdf.signatures.validation.lotl.EuropeanLotlService; import com.itextpdf.signatures.validation.lotl.FromDiskResourceRetriever; import com.itextpdf.signatures.validation.lotl.LotlFetchingProperties; import com.itextpdf.signatures.validation.lotl.LotlService; @@ -730,7 +731,7 @@ public void stopAfterTimestampChainValidationFailureTest() throws Exception { @Test public void infiniteRecursionForOCSPFromDSSTest() throws IOException { - LotlService service = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())); + LotlService service = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())); service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.withLotlValidator(() -> new LotlValidator(service)); service.initializeCache(); diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorTest.java index 46b18ef651..fbc4ccfe49 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/SignatureValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/ValidationMetaInfoEventsTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/ValidationMetaInfoEventsTest.java index f65c134f9a..8d6a3db8d4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/ValidationMetaInfoEventsTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/ValidationMetaInfoEventsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/ValidatorChainBuilderTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/ValidatorChainBuilderTest.java new file mode 100644 index 0000000000..cb81dd3b04 --- /dev/null +++ b/sign/src/test/java/com/itextpdf/signatures/validation/ValidatorChainBuilderTest.java @@ -0,0 +1,106 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures.validation; + +import com.itextpdf.io.resolver.resource.DefaultResourceRetriever; +import com.itextpdf.signatures.CrlClientOnline; +import com.itextpdf.signatures.IssuingCertificateRetriever; +import com.itextpdf.signatures.OcspClientBouncyCastle; +import com.itextpdf.test.ExtendedITextTest; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("UnitTest") +public class ValidatorChainBuilderTest extends ExtendedITextTest { + + @Test + public void defaultClientsTest() { + ValidatorChainBuilder builder = new ValidatorChainBuilder(); + + Assertions.assertEquals(DefaultResourceRetriever.class, + ((CrlClientOnline) builder.getCrlClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(DefaultResourceRetriever.class, + ((OcspClientBouncyCastle) builder.getOcspClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(DefaultResourceRetriever.class, + builder.getCertificateRetriever().getResourceRetriever().getClass()); + } + + @Test + public void customDeprecatedRetrieverUsedOnlyInCertRetrieverTest() { + ValidatorChainBuilder builder = new ValidatorChainBuilder() + .withResourceRetriever(() -> new com.itextpdf.styledxmlparser.resolver.resource.IResourceRetriever() { + @Override + public InputStream getInputStreamByUrl(URL url) throws IOException { + return null; + } + + @Override + public byte[] getByteArrayByUrl(URL url) throws IOException { + return new byte[0]; + } + }); + + Assertions.assertEquals(DefaultResourceRetriever.class, + ((CrlClientOnline) builder.getCrlClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(DefaultResourceRetriever.class, + ((OcspClientBouncyCastle) builder.getOcspClient()).getResourceRetriever().getClass()); + Assertions.assertNull(builder.getCertificateRetriever().getResourceRetriever()); + } + + @Test + public void customRetrieverUsedInDefaultClientsTest() { + ValidatorChainBuilder builder = new ValidatorChainBuilder() + .withAdvancedResourceRetriever(() -> new CustomResourceRetriever()); + + Assertions.assertEquals(CustomResourceRetriever.class, + ((CrlClientOnline) builder.getCrlClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(CustomResourceRetriever.class, + ((OcspClientBouncyCastle) builder.getOcspClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(CustomResourceRetriever.class, + builder.getCertificateRetriever().getResourceRetriever().getClass()); + } + + @Test + public void customRetrieverNotUsedInCustomClientsTest() { + ValidatorChainBuilder builder = new ValidatorChainBuilder() + .withAdvancedResourceRetriever(() -> new CustomResourceRetriever()) + .withCrlClient(() -> new CrlClientOnline()) + .withOcspClient(() -> new OcspClientBouncyCastle()) + .withIssuingCertificateRetrieverFactory(() -> new IssuingCertificateRetriever()); + + Assertions.assertEquals(DefaultResourceRetriever.class, + ((CrlClientOnline) builder.getCrlClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(DefaultResourceRetriever.class, + ((OcspClientBouncyCastle) builder.getOcspClient()).getResourceRetriever().getClass()); + Assertions.assertEquals(DefaultResourceRetriever.class, + builder.getCertificateRetriever().getResourceRetriever().getClass()); + } + + private static class CustomResourceRetriever extends DefaultResourceRetriever { + } +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/context/ValidationContextTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/context/ValidationContextTest.java index ff21b92e1c..ba340cf8e6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/context/ValidationContextTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/context/ValidationContextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -134,4 +134,4 @@ public void hashCodeTest() { Assertions.assertNotEquals(vc1.hashCode(), vc4.hashCode()); Assertions.assertNotEquals(vc1.hashCode(), vc5.hashCode()); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEventTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEventTest.java index b3eb29b1ea..461b26515b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEventTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/AlgorithmUsageEventTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -88,4 +88,4 @@ public void isAllowedAccordingToEtsiTs119_312ByNamePositiveTest() { AlgorithmUsageEvent sut = new AlgorithmUsageEvent("sha256WithRsaEncryption", null, "Location"); Assertions.assertTrue(sut.isAllowedAccordingToEtsiTs119_312()); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/CRLValidatorEventTriggeringTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/CRLValidatorEventTriggeringTest.java index fe428f577f..713984a0f7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/CRLValidatorEventTriggeringTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/CRLValidatorEventTriggeringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/CertificateChainValidatorEventTriggeringTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/CertificateChainValidatorEventTriggeringTest.java index 377854a676..a788cda274 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/CertificateChainValidatorEventTriggeringTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/CertificateChainValidatorEventTriggeringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -85,4 +85,4 @@ public void algoritmEventTest() throws CertificateException, IOException { Assertions.assertTrue(testEventListener.getEvents().stream().anyMatch( e -> "Certificate check.".equals(((AlgorithmUsageEvent)e).getUsageLocation()))); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/MockEventListener.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/MockEventListener.java index 9c77cab7cd..c8ebbdf63b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/MockEventListener.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/MockEventListener.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/OCSPValidatorEventTriggeringTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/OCSPValidatorEventTriggeringTest.java index a3e3ba8cb4..13172f7ea0 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/OCSPValidatorEventTriggeringTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/OCSPValidatorEventTriggeringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/events/SignatureValidatorEventTriggeringTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/events/SignatureValidatorEventTriggeringTest.java index 7dee934fae..dbcdfc4144 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/events/SignatureValidatorEventTriggeringTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/events/SignatureValidatorEventTriggeringTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/CertificateExtensionTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/CertificateExtensionTest.java index cfaab79556..7011c87417 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/CertificateExtensionTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/CertificateExtensionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtensionTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtensionTest.java index 6837db4bef..dd8f60bbf3 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtensionTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/ExtendedKeyUsageExtensionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtensionTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtensionTest.java index 9e8e45e0cb..c6197e61c9 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtensionTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/extensions/KeyUsageExtensionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcherTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcherTest.java index b4cdcd85d8..8b4136675c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcherTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/EuropeanLotlFetcherTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -94,4 +94,4 @@ public byte[] getByteArrayByUrl(URL url) { assertNull(result.getLotlXml()); assertFalse(result.getLocalReport().getLogs().isEmpty()); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/FromDiskResourceRetriever.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/FromDiskResourceRetriever.java index 27f6c1a9e4..94d760b2b7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/FromDiskResourceRetriever.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/FromDiskResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -62,7 +62,6 @@ public byte[] getByteArrayByUrl(URL url) throws IOException { if (Files.exists(Paths.get(filePath))) { return Files.readAllBytes(Paths.get(filePath)); } - return null; } diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCacheTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCacheTest.java index 2d482b8ebc..61551bd6f2 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCacheTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/InMemoryLotlServiceCacheTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -334,4 +334,4 @@ public void setAllDataResetAfterStalenessWorks() throws InterruptedException { }, "After updating the cache, it should not throw an exception for stale data."); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1Test.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1Test.java index 7cdf3f1a58..ebbd989882 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1Test.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCacheDataV1Test.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCertificateChainValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCertificateChainValidatorTest.java index 3e3fbe47bc..259423bc9c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCertificateChainValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlCertificateChainValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -232,7 +232,7 @@ public void lotlOriginTest() throws CertificateException, IOException { @Test public void lotlReportItemsTest() throws IOException { - LotlService service = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())); + LotlService service = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())); service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.withLotlValidator(() -> new LotlValidator(service)); service.initializeCache(); diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlFetchingPropertiesTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlFetchingPropertiesTest.java index 12f1c56e12..56cfdf8366 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlFetchingPropertiesTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlFetchingPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -87,4 +87,4 @@ public void tryAddingCountryNameToIgnoreAndCountryNameThrowsException() { e.getMessage()); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlServiceTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlServiceTest.java index b8a580e0a4..2bc7141f59 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlServiceTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlServiceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,6 +23,7 @@ This file is part of the iText (R) project. package com.itextpdf.signatures.validation.lotl; import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.io.resolver.resource.IResourceRetriever; import com.itextpdf.kernel.exceptions.PdfException; import com.itextpdf.signatures.exceptions.SignExceptionMessageConstant; import com.itextpdf.signatures.logs.SignLogMessageConstant; @@ -59,7 +60,6 @@ This file is part of the iText (R) project. @Tag("IntegrationTest") public class LotlServiceTest extends ExtendedITextTest { - private static final String SOURCE_FOLDER_LOTL_FILES = "./src/test/resources/com/itextpdf/signatures/validation" + "/lotl/LotlState2025_08_08/"; private static final String SOURCE = @@ -71,7 +71,6 @@ public static void before() { createOrClearDestinationFolder(DESTINATION_FOLDER); } - public static Iterable allCountries() { return Arrays.asList(new Object[][] { {LotlCountryCodeConstants.AUSTRIA}, @@ -149,7 +148,7 @@ public void testWithPivotFetcher() { @Test public void testCacheFailCallsDownloadOfMainLotlFile() { Result f; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (EuropeanLotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { lotlService.withLotlServiceCache(new CacheReturnsNull()); lotlService.withEuropeanLotlFetcher(new EuropeanLotlFetcher(lotlService) { @@ -169,7 +168,7 @@ public Result fetch() { @Test public void testCacheFailCallsDownloadOfEUJournalCertificates() { EuropeanResourceFetcher.Result f; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (EuropeanLotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { lotlService.withLotlServiceCache(new CacheReturnsNull()); @@ -190,7 +189,7 @@ public Result getEUJournalCertificates() { @Test public void testCacheFailCallsDownloadOfPivotFile() { PivotFetcher.Result f; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (EuropeanLotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { lotlService.withLotlServiceCache(new CacheReturnsNull()); @@ -214,7 +213,7 @@ public Result downloadAndValidatePivotFiles(byte[] lotlXml, List ce @Test public void testCacheFailCallsDownloadOfCountrySpecificLotl() { List f; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (EuropeanLotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { lotlService.withLotlServiceCache(new CacheReturnsNull()); @@ -318,9 +317,9 @@ public void serviceStaticInitializedTwiceTest() { @Test public void getLotlbytesUnsuccessfulTest() { ValidationReport report; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())) { + try (LotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())) { @Override - Result getLotlBytes() { + public Result getLotlBytes() { Result result = new Result(); result.getLocalReport() .addReportItem(new ReportItem("check", "test invalid", ReportItemStatus.INVALID)); @@ -497,7 +496,7 @@ public void loadStateWithLessRequiredCountriesLogs() throws IOException { LotlFetchingProperties props2 = new LotlFetchingProperties(new RemoveOnFailingCountryData()); props2.setCountryNames(LotlCountryCodeConstants.NETHERLANDS); - try (LotlService lotlService2 = new LotlService(props2)) { + try (EuropeanLotlService lotlService2 = new EuropeanLotlService(props2)) { lotlService2.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService2.initializeCache(new ByteArrayInputStream(outputStream.toByteArray())); HashMap f = lotlService2.getCachedCountrySpecificLotls(); @@ -528,7 +527,7 @@ public void serializeDeserializedWithTimestampsToOldThrows() throws IOException, props2.setCountryNames(LotlCountryCodeConstants.BELGIUM); props2.setCacheStalenessInMilliseconds(10L); props2.setRefreshIntervalCalculator(l -> Integer.MAX_VALUE); - try (LotlService lotlService2 = new LotlService(props2)) { + try (EuropeanLotlService lotlService2 = new EuropeanLotlService(props2)) { lotlService2.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService2.initializeCache(new ByteArrayInputStream(outputStream.toByteArray())); Thread.sleep(150); @@ -552,7 +551,7 @@ public void serializeDeserializedWithTimestampsOkDoesntThrow() throws IOExceptio LotlFetchingProperties props2 = new LotlFetchingProperties(new RemoveOnFailingCountryData()); props2.setCountryNames(LotlCountryCodeConstants.BELGIUM); props2.setRefreshIntervalCalculator(l -> Integer.MAX_VALUE); - try (LotlService lotlService2 = new LotlService(props2)) { + try (EuropeanLotlService lotlService2 = new EuropeanLotlService(props2)) { lotlService2.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService2.initializeCache(new ByteArrayInputStream(outputStream.toByteArray())); Result result = lotlService2.getLotlBytes(); @@ -597,6 +596,19 @@ public void serializeDeserializedWithOlderTimestampsThrows() throws IOException, } } + @Test + public void unsupportedExceptionTest() { + LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData())) { + @Override + public void initializeCache() { + } + }; + + Exception e = Assertions.assertThrows(UnsupportedOperationException.class, () -> + lotlService.withPivotFetcher(new PivotFetcher(lotlService))); + Assertions.assertTrue(e.getMessage().contains("next major release")); + } + static void assert2LotlCacheDataV1(LotlCacheDataV1 expected, LotlCacheDataV1 actual) { //Parsing is slightly different, so byte arrays differ even if logically they are the same //Just check if it's not null and has some content diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStoreTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStoreTest.java index 9d36bb2d97..11417c2068 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStoreTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlTrustedStoreTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -318,7 +318,7 @@ public void createTrustedStoreWithValidLotl() { ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder(); chainBuilder.trustEuropeanLotl(true); LotlFetchingProperties fetchingProperties = new LotlFetchingProperties(new RemoveOnFailingCountryData()); - try (LotlService lotlService = new LotlService(fetchingProperties)) { + try (LotlService lotlService = new EuropeanLotlService(fetchingProperties)) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); chainBuilder.withLotlService(() -> lotlService); lotlService.initializeCache(); @@ -333,7 +333,7 @@ public void createTrustedStoreWithInvalidLotl() { ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder(); chainBuilder.trustEuropeanLotl(true); LotlFetchingProperties fetchingProperties = new LotlFetchingProperties(new RemoveOnFailingCountryData()); - try (LotlService lotlService = new LotlService(fetchingProperties)) { + try (LotlService lotlService = new EuropeanLotlService(fetchingProperties)) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); chainBuilder.withLotlService(() -> lotlService); lotlService.initializeCache(); @@ -352,4 +352,4 @@ public ValidationReport validate() { LotlTrustedStore trustedStore = chainBuilder.getLotlTrustedStore(); Assertions.assertTrue(trustedStore.getCertificates().isEmpty()); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlValidatorTest.java index 8a41fb47f9..20e94805ba 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/LotlValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -68,7 +68,7 @@ public class LotlValidatorTest extends ExtendedITextTest { @BeforeAll public static void beforeAll() { // Initialize the LotlService with a default EuropeanResourceFetcher - LotlService service = new LotlService(getLotlFetchingProperties()); + LotlService service = new EuropeanLotlService(getLotlFetchingProperties()); service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.withLotlValidator(() -> new LotlValidator(service)); LotlService.GLOBAL_SERVICE = service; @@ -91,7 +91,7 @@ public void validationTest() { @Test public void validationWithForcedInitializationWithExceptionBecauseOfCustomImplementation() { Exception e; - try (LotlService lotlService = new LotlService( + try (LotlService lotlService = new EuropeanLotlService( new LotlFetchingProperties(new ThrowExceptionOnFailingCountryData()))) { lotlService.withCustomResourceRetriever(new IResourceRetriever() { @Override @@ -115,7 +115,7 @@ public byte[] getByteArrayByUrl(URL url) throws IOException { @Test public void validationWithCallingPropertiesInitializeCacheFailsAndGuidesToInitializeCache() { ValidatorChainBuilder validatorChainBuilder; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (LotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { validatorChainBuilder = new ValidatorChainBuilder(); validatorChainBuilder.withLotlService(() -> lotlService); } @@ -138,7 +138,7 @@ public void validationWithForcedInitializationWithIgnoredFailuresWorksAsExpected @Test public void validationWithOnlyAFewCountriesWorksAsExpected() { ValidationReport report2; - try (LotlService lotlService = new LotlService( + try (LotlService lotlService = new EuropeanLotlService( new LotlFetchingProperties(new RemoveOnFailingCountryData()).setCountryNames("DE", "ES"))) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService.initializeCache(); @@ -151,7 +151,7 @@ public void validationWithOnlyAFewCountriesWorksAsExpected() { @Test public void primeCacheAndRunValidationTest() { LotlValidator lotlValidator; - try (LotlService lotlService = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (LotlService lotlService = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService.initializeCache(); @@ -172,7 +172,7 @@ public void lotlWithConfiguredSchemaNamesTest() { lotlFetchingProperties.setCountryNames("EE"); LotlValidator validator; - try (LotlService lotlService = new LotlService(lotlFetchingProperties)) { + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties)) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); lotlService.initializeCache(); validator = lotlService.getLotlValidator(); @@ -193,7 +193,7 @@ public void lotlWithInvalidSchemaNameTest() { lotlFetchingProperties.setCountryNames("Invalid"); LotlValidator validator; - try (LotlService lotlService = new LotlService(lotlFetchingProperties).withCustomResourceRetriever( + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties).withCustomResourceRetriever( new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES))) { lotlService.initializeCache(); validator = lotlService.getLotlValidator(); @@ -212,7 +212,7 @@ public void lotlUnavailableTest() { lotlFetchingProperties.setCountryNames("NL"); Exception e; - try (LotlService lotlService = new LotlService(lotlFetchingProperties).withEuropeanLotlFetcher( + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties).withEuropeanLotlFetcher( new EuropeanLotlFetcher(null) { @Override public Result fetch() { @@ -229,7 +229,7 @@ public Result fetch() { @Test public void euJournalCertificatesEmptyTest() { Exception e; - try (LotlService service = new LotlService( + try (LotlService service = new EuropeanLotlService( new LotlFetchingProperties(new RemoveOnFailingCountryData())).withEuropeanResourceFetcher( new EuropeanResourceFetcher() { @Override @@ -248,7 +248,7 @@ public Result getEUJournalCertificates() { @Test public void euJournalEmptyResultTest() { Exception e; - try (LotlService service = new LotlService( + try (LotlService service = new EuropeanLotlService( new LotlFetchingProperties(new RemoveOnFailingCountryData())).withEuropeanResourceFetcher( new EuropeanResourceFetcher() { @Override @@ -271,7 +271,7 @@ public void mainLotlFileContainsTwoJournalsTest() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("DE"); - try (LotlService lotlService = new LotlService(lotlFetchingProperties)) { + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties)) { PivotFetcher customPivotFetcher = new PivotFetcher(lotlService) { @Override protected List getPivotsUrlList(byte[] lotlXml) { @@ -302,7 +302,7 @@ public void mainLotlFileContainsTwoJournalsAndNewOneIsUsedTest() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("DE"); - try (LotlService lotlService = new LotlService(lotlFetchingProperties)) { + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties)) { PivotFetcher customPivotFetcher = new PivotFetcher(lotlService) { @Override protected List getPivotsUrlList(byte[] lotlXml) { @@ -347,7 +347,7 @@ public byte[] getByteArrayByUrl(URL url) { } }; - try (LotlService lotlService = new LotlService(lotlFetchingProperties).withCustomResourceRetriever( + try (LotlService lotlService = new EuropeanLotlService(lotlFetchingProperties).withCustomResourceRetriever( resourceRetriever) .withEuropeanLotlFetcher(new EuropeanLotlFetcher(null) { @Override @@ -371,7 +371,7 @@ public Result fetch() { public void withCustomEuropeanFetcher() { LotlFetchingProperties lotlFetchingProperties = new LotlFetchingProperties( new RemoveOnFailingCountryData()); - try (LotlService service = new LotlService(lotlFetchingProperties).withEuropeanResourceFetcher( + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties).withEuropeanResourceFetcher( new EuropeanResourceFetcher() { @Override public Result getEUJournalCertificates() { @@ -395,7 +395,7 @@ public void tryRefetchCatchManually() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); AssertUtil.doesNotThrow(() -> service.tryAndRefreshCache()); @@ -415,7 +415,7 @@ public void cacheRefreshFailingLotlDoesNotUpdateMainLotlAndPivotFiles() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -439,7 +439,7 @@ public void inMemoryCacheThrowsException() throws InterruptedException { lotlFetchingProperties.setRefreshIntervalCalculator(f -> 100000); LotlValidator validator; - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -471,7 +471,7 @@ public void cacheRefreshInvalidLotlDoesNotUpdateMainLotlAndPivotFiles() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -497,7 +497,7 @@ public void cacheRefreshWithInvalidPivotFileDoesNotUpdateCache() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -524,7 +524,7 @@ public void cacheRefreshWithExceptionInPivot() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -547,7 +547,7 @@ public void cacheRefreshWithExceptionDoesNotUpdateCacheWithCountrySpecific2() { new RemoveOnFailingCountryData()); lotlFetchingProperties.setCountryNames("NL"); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -570,7 +570,7 @@ public void cacheRefreshWithReturningNullDoesNotThrow() { LotlFetchingProperties lotlFetchingProperties = new LotlFetchingProperties( new RemoveOnFailingCountryData()); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -596,7 +596,7 @@ public void cacheRefreshWithSomeSpecificCountryFailuresDoesNotUpdateCache() thro lotlFetchingProperties.setCacheStalenessInMilliseconds(50L); lotlFetchingProperties.setRefreshIntervalCalculator(f -> 10000L); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -636,7 +636,7 @@ public void cacheRefreshWithSomeSpecificCountryFailuresDoesNotUpdateCacheAndIgno lotlFetchingProperties.setCacheStalenessInMilliseconds(50L); lotlFetchingProperties.setRefreshIntervalCalculator(f -> 1000000L); - try (LotlService service = new LotlService(lotlFetchingProperties)) { + try (LotlService service = new EuropeanLotlService(lotlFetchingProperties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); service.initializeCache(); @@ -685,7 +685,7 @@ public void cacheRefreshWithValidationWorksButCertsNotIncluded() throws Interrup int originalAmountOfCertificates; LotlValidator validator2; - try (LotlService service = new LotlService(properties)) { + try (LotlService service = new EuropeanLotlService(properties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); // Simulate a failure in the cache refresh @@ -758,7 +758,7 @@ public void cacheRefreshWithValidationWorksButCertsNotIncludedMultipleCountries( int originalAmountOfCertificates; LotlValidator validator2; - try (LotlService service = new LotlService(properties)) { + try (LotlService service = new EuropeanLotlService(properties)) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); // Simulate a failure in the cache refresh @@ -814,7 +814,7 @@ public Map getAndValidateCountrySpecificLotlFiles(byte[] lotlXml @Test public void useOwnCountrySpecificLotlFetcher() { - try (LotlService service = new LotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { + try (LotlService service = new EuropeanLotlService(new LotlFetchingProperties(new RemoveOnFailingCountryData()))) { service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); CountrySpecificLotlFetcher lotlFetcher = new CountrySpecificLotlFetcher(service) { @Override @@ -833,7 +833,7 @@ public void lotlBytesThrowsPdfException() { LotlFetchingProperties p = getLotlFetchingProperties(); p.setCountryNames("NL"); Exception e; - try (LotlService service = new LotlService(p)) { + try (LotlService service = new EuropeanLotlService(p)) { EuropeanLotlFetcher lotlByteFetcher = new EuropeanLotlFetcher(service) { @Override @@ -852,7 +852,7 @@ public Result fetch() { public void cacheInitializationWithSomeSpecificCountryThatWorksTest() { LotlFetchingProperties p = getLotlFetchingProperties(); p.setCountryNames("NL"); - try (LotlService lotlService = new LotlService(p)) { + try (LotlService lotlService = new EuropeanLotlService(p)) { lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); AssertUtil.doesNotThrow(() -> lotlService.initializeCache()); diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/QualifiedValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/QualifiedValidatorTest.java index d06f43537c..e232fa7779 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/QualifiedValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/QualifiedValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest.java new file mode 100644 index 0000000000..54a8d5521b --- /dev/null +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest.java @@ -0,0 +1,309 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures.validation.lotl; + +import com.itextpdf.signatures.logs.SignLogMessageConstant; +import com.itextpdf.signatures.validation.ValidatorChainBuilder; +import com.itextpdf.signatures.validation.report.ValidationReport; +import com.itextpdf.test.AssertUtil; +import com.itextpdf.test.ExtendedITextTest; +import com.itextpdf.test.LogLevelConstants; +import com.itextpdf.test.annotations.LogMessage; +import com.itextpdf.test.annotations.LogMessages; + +import java.security.cert.Certificate; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +@Tag("IntegrationTest") +public class SingleFileLotlServiceTest extends ExtendedITextTest { + private static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/"; + private static final String argentinaCertificate = + //Argentina + "-----BEGIN CERTIFICATE-----\n" + + "MIIH0jCCBbqgAwIBAgITfwAatU+P4G1P34vbHgABABq1TzANBgkqhkiG9w0BAQsFADCCAUwxCzAJ\n" + + "BgNVBAYTAkFSMSkwJwYDVQQIDCBDaXVkYWQgQXV0w7Nub21hIGRlIEJ1ZW5vcyBBaXJlczEzMDEG\n" + + "A1UECwwqU3Vic2VjcmV0YXLDrWEgZGUgVGVjbm9sb2fDrWFzIGRlIEdlc3Rpw7NuMSkwJwYDVQQL\n" + + "DCBTZWNyZXRhcsOtYSBkZSBHZXN0acOzbiBQw7pibGljYTE5MDcGA1UECwwwT2ZpY2luYSBOYWNp\n" + + "b25hbCBkZSBUZWNub2xvZ8OtYXMgZGUgSW5mb3JtYWNpw7NuMSowKAYDVQQKDCFKZWZhdHVyYSBk\n" + + "ZSBHYWJpbmV0ZSBkZSBNaW5pc3Ryb3MxGTAXBgNVBAUTEENVSVQgMzA2ODA2MDQ1NzIxMDAuBgNV\n" + + "BAMMJ0F1dG9yaWRhZCBDZXJ0aWZpY2FudGUgZGUgRmlybWEgRGlnaXRhbDAeFw0yNTA3MTYxNzU0\n" + + "MzFaFw0yNzA3MTYxNzU0MzFaMEkxGTAXBgNVBAUTEENVSUwgMjAyODQyMTAzMzcxCzAJBgNVBAYT\n" + + "AkFSMR8wHQYDVQQDExZDQVJSSVpPIEVucmlxdWUgTWFudWVsMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" + + "AQ8AMIIBCgKCAQEA4SVCvix4shhKgqI/mR0S5br+LvYUDb2BYBAxvYgZ3MXzw3jyNB+UTCubWP01\n" + + "wawXTlPIr5HXoRVK7fIJVe5MD5wzqZ2s5yf2Hoy1MVYrNGv/CpY6jyqsy3momOeuiekjdMqLlnpy\n" + + "BQbPoCBTyigrwuyqUVVwjGIwAJniCiT10Vmbk7uQmdJZLHC8zTCLZWlMX6pGLbHSfBThoeII1uc4\n" + + "FUuUkRJWsovGldMPzVkqadF8r524sllgp/+uRJGysa+cWm1+0e7aXGHcbn+VOZdMwW0fn0ghGRpZ\n" + + "xiKsosVBhRIb/8D05pbFbFqHSh8PRAiUG02x/H7yqhtIPtWw1YdkRQIDAQABo4ICrDCCAqgwDgYD\n" + + "VR0PAQH/BAQDAgTwMCQGCCsGAQUFBwEDBBgwFjAUBggrBgEFBQcLAjAIBgZgIAEKAgIwHQYDVR0O\n" + + "BBYEFG5jlfV+0DMzizj9EmgBdnMPukyDMB0GA1UdEQQWMBSBEnFjYXJyaXpvQGdtYWlsLmNvbTAf\n" + + "BgNVHSMEGDAWgBSMG/0ubHBsM5IabSTMm8w/mcXrqDBXBgNVHR8EUDBOMEygSqBIhiBodHRwOi8v\n" + + "cGtpLmpnbS5nb3YuYXIvY3JsL0ZELmNybIYkaHR0cDovL3BraWNvbnQuamdtLmdvdi5hci9jcmwv\n" + + "RkQuY3JsMIHWBggrBgEFBQcBAQSByTCBxjA1BggrBgEFBQcwAoYpaHR0cDovL3BraS5qZ20uZ292\n" + + "LmFyL2FpYS9jYWZkT05USSgxKS5jcnQwOQYIKwYBBQUHMAKGLWh0dHA6Ly9wa2ljb250LmpnbS5n\n" + + "b3YuYXIvYWlhL2NhZmRPTlRJKDEpLmNydDAmBggrBgEFBQcwAYYaaHR0cDovL3BraS5qZ20uZ292\n" + + "LmFyL29jc3AwKgYIKwYBBQUHMAGGHmh0dHA6Ly9wa2ljb250LmpnbS5nb3YuYXIvb2NzcDAMBgNV\n" + + "HRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAnBgkrBgEEAYI3FQoEGjAY\n" + + "MAoGCCsGAQUFBwMCMAoGCCsGAQUFBwMEMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCA\n" + + "MA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzBDBgNVHSAEPDA6MDgGBWAgAQED\n" + + "MC8wLQYIKwYBBQUHAgEWIWh0dHA6Ly9wa2kuamdtLmdvdi5hci9jcHMvY3BzLnBkZjANBgkqhkiG\n" + + "9w0BAQsFAAOCAgEAyCrHfYvfMKXqrVbxGlAySQSVsDz7fZrYxKU5qXbB/+jCj1IY0ENHLN5q77HY\n" + + "M7eomHM8nX9zpXl0e4nV5PLaSwykmW9ERw6EdqhzzcFGJopYriLfQMbVGvhsJVY+/zhQ4//RwFle\n" + + "SlkZUZZt92qEQwuau/DLdCfOGq/Xm0c1qpx+I8+sdQKRz7x3iLLExHa7U+dO6pe/ropNSJabKyP5\n" + + "ZOXHa2B4s2LRx/qTScfPhg8B06nrLLWnG0QMgpjfEWHL3uPcNI9iMJxRTp7S6Q+a8fQK4Jv2WyLy\n" + + "9m2ETKAw5HpF0Mbu6yb9/xNkg/zQCY4Ooy7DHxs67j9ETJ+iP1Fl4+nBFYkCkiqlKreeSicPl+fn\n" + + "vcXcdDZto3UJBqpbW6PVGaYkUQRy8cgy2FANMS8y6P6u8dddiQ0a4XatvVAUgrDlPKxyYQ0ZK4Hw\n" + + "ggSqcOklFplKSJZyj0Wt1jqF6dtTjxqaMUvqbco/0Zp8fKtMXlqvNu1DbhpIF0Ast/M8DocHuxTM\n" + + "+b7B1IYmiSZ292aT1ZVYoFww3o3NQuuxNM7CN8GPOF3a09dptvb1NIyWX54DeRX/HF/V2R92vjvE\n" + + "ukxaNWIIgv/J496j/Hp+p/N5OR0TEIy42DMj1UHWpCy9CGWYS9sYRW8d1EKUu7JHMFkbRdZ4b22b\n" + + "uRsuF6vI08u1AQE=\n" + + "-----END CERTIFICATE-----"; + + @ParameterizedTest(name = "Test {index}: {0} - {1}") + @MethodSource("provideCountryData") + public void testDifferentCountries(CountrySpecificLotl countrySpecificLotl, String certificate) { + System.out.println("Testing country: " + countrySpecificLotl.getSchemeTerritory() + + " with TSL: " + countrySpecificLotl.getTslLocation()); + + LotlFetchingProperties props = new LotlFetchingProperties(new RemoveOnFailingCountryData()); + LotlService lotlService = new SingleFileLotlService(props, countrySpecificLotl, + Collections.singletonList(certificate)); + lotlService.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER)); + LotlValidator validator = new LotlValidator(lotlService); + lotlService.withLotlValidator(() -> validator); + ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder() + .withLotlService(() -> lotlService) + .trustEuropeanLotl(true); + lotlService.initializeCache(); + + LotlTrustedStore lotlTrustedStore = chainBuilder.getLotlTrustedStore(); + Set certificates = lotlTrustedStore.getCertificates(); + System.out.println( + "total Certificates for " + countrySpecificLotl.getTslLocation() + " : " + certificates.size()); + ValidationReport report = lotlTrustedStore.getLotlValidationReport(); + System.out.println(report); + Assertions.assertTrue(report.getFailures().isEmpty()); + } + + @Test + @LogMessages(messages = { + @LogMessage(messageTemplate = SignLogMessageConstant.SCHEMA_NAMES_CONFIGURATION_PROPERTY_IGNORED, + logLevel = LogLevelConstants.WARN) + }) + public void countryNamesIgnoredTest() { + LotlFetchingProperties props = new LotlFetchingProperties(new RemoveOnFailingCountryData()); + props.setCountryNames("AR"); + AssertUtil.doesNotThrow(() -> { + LotlService lotlService = new SingleFileLotlService(props, + new CountrySpecificLotl("AR", "https://pki.jgm.gov.ar/TSL/tsl-AR.xml", + "application/vnd.etsi.tsl+xml"), + Collections.singletonList(argentinaCertificate)); + }); + } + + private static Iterable provideCountryData() { + final List countrySpecificLotls = Arrays.asList( + new CountrySpecificLotl("AR", "https://pki.jgm.gov.ar/TSL/tsl-AR.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("CH", "https://trustedlist.tsl-switzerland.ch/tsl-ch.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("BR", "https://validar.iti.gov.br/trustlist/trust-list-BR.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("UK", "https://tl.ico.org.uk/uktrustedlist/UKTL.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("GE", "https://dga.gov.ge/files/GeorgianTSL.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("MK", "https://trusteid.mdt.gov.mk/TrustedList/TL-MK.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("CL", + "https://www.entidadacreditadora.gob.cl/wp-content/uploads/2025/06/CL-TSL.xml", + "application/vnd.etsi.tsl+xml"), + new CountrySpecificLotl("UR", + "https://www.gub.uy/unidad-certificacion-electronica/sites/unidad-certificacion-electronica/files/2022-11/tsl_uy.xml", + "application/vnd.etsi.tsl+xml") + ); + + final List certificates = Arrays.asList( + //Argentina + "-----BEGIN CERTIFICATE-----\n" + + "MIIH0jCCBbqgAwIBAgITfwAatU+P4G1P34vbHgABABq1TzANBgkqhkiG9w0BAQsFADCCAUwxCzAJ\n" + + "BgNVBAYTAkFSMSkwJwYDVQQIDCBDaXVkYWQgQXV0w7Nub21hIGRlIEJ1ZW5vcyBBaXJlczEzMDEG\n" + + "A1UECwwqU3Vic2VjcmV0YXLDrWEgZGUgVGVjbm9sb2fDrWFzIGRlIEdlc3Rpw7NuMSkwJwYDVQQL\n" + + "DCBTZWNyZXRhcsOtYSBkZSBHZXN0acOzbiBQw7pibGljYTE5MDcGA1UECwwwT2ZpY2luYSBOYWNp\n" + + "b25hbCBkZSBUZWNub2xvZ8OtYXMgZGUgSW5mb3JtYWNpw7NuMSowKAYDVQQKDCFKZWZhdHVyYSBk\n" + + "ZSBHYWJpbmV0ZSBkZSBNaW5pc3Ryb3MxGTAXBgNVBAUTEENVSVQgMzA2ODA2MDQ1NzIxMDAuBgNV\n" + + "BAMMJ0F1dG9yaWRhZCBDZXJ0aWZpY2FudGUgZGUgRmlybWEgRGlnaXRhbDAeFw0yNTA3MTYxNzU0\n" + + "MzFaFw0yNzA3MTYxNzU0MzFaMEkxGTAXBgNVBAUTEENVSUwgMjAyODQyMTAzMzcxCzAJBgNVBAYT\n" + + "AkFSMR8wHQYDVQQDExZDQVJSSVpPIEVucmlxdWUgTWFudWVsMIIBIjANBgkqhkiG9w0BAQEFAAOC\n" + + "AQ8AMIIBCgKCAQEA4SVCvix4shhKgqI/mR0S5br+LvYUDb2BYBAxvYgZ3MXzw3jyNB+UTCubWP01\n" + + "wawXTlPIr5HXoRVK7fIJVe5MD5wzqZ2s5yf2Hoy1MVYrNGv/CpY6jyqsy3momOeuiekjdMqLlnpy\n" + + "BQbPoCBTyigrwuyqUVVwjGIwAJniCiT10Vmbk7uQmdJZLHC8zTCLZWlMX6pGLbHSfBThoeII1uc4\n" + + "FUuUkRJWsovGldMPzVkqadF8r524sllgp/+uRJGysa+cWm1+0e7aXGHcbn+VOZdMwW0fn0ghGRpZ\n" + + "xiKsosVBhRIb/8D05pbFbFqHSh8PRAiUG02x/H7yqhtIPtWw1YdkRQIDAQABo4ICrDCCAqgwDgYD\n" + + "VR0PAQH/BAQDAgTwMCQGCCsGAQUFBwEDBBgwFjAUBggrBgEFBQcLAjAIBgZgIAEKAgIwHQYDVR0O\n" + + "BBYEFG5jlfV+0DMzizj9EmgBdnMPukyDMB0GA1UdEQQWMBSBEnFjYXJyaXpvQGdtYWlsLmNvbTAf\n" + + "BgNVHSMEGDAWgBSMG/0ubHBsM5IabSTMm8w/mcXrqDBXBgNVHR8EUDBOMEygSqBIhiBodHRwOi8v\n" + + "cGtpLmpnbS5nb3YuYXIvY3JsL0ZELmNybIYkaHR0cDovL3BraWNvbnQuamdtLmdvdi5hci9jcmwv\n" + + "RkQuY3JsMIHWBggrBgEFBQcBAQSByTCBxjA1BggrBgEFBQcwAoYpaHR0cDovL3BraS5qZ20uZ292\n" + + "LmFyL2FpYS9jYWZkT05USSgxKS5jcnQwOQYIKwYBBQUHMAKGLWh0dHA6Ly9wa2ljb250LmpnbS5n\n" + + "b3YuYXIvYWlhL2NhZmRPTlRJKDEpLmNydDAmBggrBgEFBQcwAYYaaHR0cDovL3BraS5qZ20uZ292\n" + + "LmFyL29jc3AwKgYIKwYBBQUHMAGGHmh0dHA6Ly9wa2ljb250LmpnbS5nb3YuYXIvb2NzcDAMBgNV\n" + + "HRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAnBgkrBgEEAYI3FQoEGjAY\n" + + "MAoGCCsGAQUFBwMCMAoGCCsGAQUFBwMEMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCA\n" + + "MA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzBDBgNVHSAEPDA6MDgGBWAgAQED\n" + + "MC8wLQYIKwYBBQUHAgEWIWh0dHA6Ly9wa2kuamdtLmdvdi5hci9jcHMvY3BzLnBkZjANBgkqhkiG\n" + + "9w0BAQsFAAOCAgEAyCrHfYvfMKXqrVbxGlAySQSVsDz7fZrYxKU5qXbB/+jCj1IY0ENHLN5q77HY\n" + + "M7eomHM8nX9zpXl0e4nV5PLaSwykmW9ERw6EdqhzzcFGJopYriLfQMbVGvhsJVY+/zhQ4//RwFle\n" + + "SlkZUZZt92qEQwuau/DLdCfOGq/Xm0c1qpx+I8+sdQKRz7x3iLLExHa7U+dO6pe/ropNSJabKyP5\n" + + "ZOXHa2B4s2LRx/qTScfPhg8B06nrLLWnG0QMgpjfEWHL3uPcNI9iMJxRTp7S6Q+a8fQK4Jv2WyLy\n" + + "9m2ETKAw5HpF0Mbu6yb9/xNkg/zQCY4Ooy7DHxs67j9ETJ+iP1Fl4+nBFYkCkiqlKreeSicPl+fn\n" + + "vcXcdDZto3UJBqpbW6PVGaYkUQRy8cgy2FANMS8y6P6u8dddiQ0a4XatvVAUgrDlPKxyYQ0ZK4Hw\n" + + "ggSqcOklFplKSJZyj0Wt1jqF6dtTjxqaMUvqbco/0Zp8fKtMXlqvNu1DbhpIF0Ast/M8DocHuxTM\n" + + "+b7B1IYmiSZ292aT1ZVYoFww3o3NQuuxNM7CN8GPOF3a09dptvb1NIyWX54DeRX/HF/V2R92vjvE\n" + + "ukxaNWIIgv/J496j/Hp+p/N5OR0TEIy42DMj1UHWpCy9CGWYS9sYRW8d1EKUu7JHMFkbRdZ4b22b\n" + + "uRsuF6vI08u1AQE=\n" + + "-----END CERTIFICATE-----", + //Switzerland + "-----BEGIN CERTIFICATE-----\n" + + "MIIILTCCBhWgAwIBAgIQCxu1oDgenaG7qadjNX4HcDANBgkqhkiG9w0BAQsFADCB\n" + + "tzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+\n" + + "MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11\n" + + "bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkw\n" + + "JwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMzEy\n" + + "MTUxMDU1MDZaFw0yNjEyMTUxMDU1MDZaMIIBUjELMAkGA1UEBhMCQ0gxCzAJBgNV\n" + + "BAgMAkJFMQ0wCwYDVQQHDARCZXJuMRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0\n" + + "eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTExMy44NDYuODkyMTEwLwYDVQQKDChTY2h3\n" + + "ZWl6ZXJpc2NoZSBBa2tyZWRpdGllcnVuZ3NzdGVsbGUgU0FTMRowGAYDVQQLDBFH\n" + + "RSAtIDAyMjAg4oCTIFNBUzFHMEUGA1UECww+U2NoZW1lIG9wZXJhdG9yIGluIGNo\n" + + "YXJnZSBvZiBwdWJsaXNoaW5nIHRoZSBTd2lzcyB0cnVzdGVkIGxpc3QxUzBRBgNV\n" + + "BAMMSlN3aXNzIEFjY3JlZGl0YXRpb24gU2VydmljZSBTQVMgLyBTY2h3ZWl6ZXJp\n" + + "c2NoZSBBa2tyZWRpdGllcnVuZ3NzdGVsbGUgU0FTMIIBIjANBgkqhkiG9w0BAQEF\n" + + "AAOCAQ8AMIIBCgKCAQEAuD+WxXh/UqTMEJRWjWyQq5El21opL/mvtD2P1jhdnUYZ\n" + + "MTBVzI4UH5KYy1owy4x/aykhSwLrwE51Rwc0ZI41n0FYy+HV2lV0I6bYsbDJZm/y\n" + + "Mw57WzCQLXfXsfdYdHL2hjn/OnZHtbqg05wQHVE1IW2Ujb4Wyo9Ty9GFo3VpQvdW\n" + + "/rT4EP7f8xWg8cBljVZilfqZd2v7cFYzMaOHDbpINcJeA0q0oR6p3qutR6uTBlHP\n" + + "K52IYAlUZZq2hSM6oEp5+GtRfu2qK9Hu2byuh+UhGvM4IszJX3GdsDAAEC2O3mRM\n" + + "BK30XrxIR2HONV9GzVWZZnT4MzwLsiE2XtIIXZiBRQIDAQABo4IClTCCApEwFgYD\n" + + "VR0RBA8wDYELaW5mb0BzYXMuY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8w\n" + + "gcwwgckGCWCFdAERAwUCBzCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2ku\n" + + "YWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEF\n" + + "BQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdh\n" + + "bCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNS\n" + + "IDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2ku\n" + + "YWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5\n" + + "BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRl\n" + + "ZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9h\n" + + "aWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkB\n" + + "AjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4u\n" + + "Y2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5G\n" + + "AQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAd\n" + + "BgNVHQ4EFgQU+AwDWo0KwmB6Am9xxQhZ4/DaceQwDQYJKoZIhvcNAQELBQADggIB\n" + + "AH1wZJuqTlReUT2bmNMqYC2VKA7gkXP1Ov7Q3E218P9qBPmF+laPIdXPrHzOVllN\n" + + "JQ/SH9/vOupbd34tHfaQkNwyQOXnLzPhXS8/mScQ+aGXIHYlsWvXYr5UoCuEOUuy\n" + + "koahiU7ahb9cVQHyPa5PA1zs+uK91GHKc4I6cnD7A93OW1iroVkonOTWkzdGisok\n" + + "diyw6YMahWbXdM3YfuufGlL8NBccf6P6G3WsLh/UOjGXGZ7RwB/kJ0odlirYsTBV\n" + + "oMFwarDc5n/PapK7hDYrUzAu/IWnITngR2lp++Q1aCIIt0iUrE3Jh/fvuXAiTG8z\n" + + "BgZNxfCtmLaXw8i+ykxU10ScpTshzPh5bJNvBX342sJtCsD2k4A1Kwp6yEV6rHG5\n" + + "8pdSDNS8rLMd4cpVnHV2quEJ7gtQr/jqP/m2EZ1/2+Acf6tv6Yl9+p5G3kCBfQoQ\n" + + "Z6tcIJE4zMIIZhAdgcWyHnNYa2qiu1LDbE75zarB3x2Lhlev9nCKtIwaSKFxP2Pr\n" + + "PthhJuAYLiJpUxvylK+Zhd/it50I3W6+STDp+ezl1KpZ0gUfsgR91TYE2eQqh66S\n" + + "OiA32fv/BXV5g615PuumJrp0AowyPkK4XUTUKfcD0Sm9Su7KxlWjoMTPDfv+ec6D\n" + + "+ZwULHi36S20fOPR2eLfdUsLZTiyQW1jxiPhaGm9jc7d\n" + + "-----END CERTIFICATE-----", + //Brazil + "-----BEGIN CERTIFICATE-----\n" + + "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\n" + + + "-----END CERTIFICATE-----", + //UK + "-----BEGIN CERTIFICATE-----\n" + + "MIIEdjCCAt6gAwIBAgIEYy22yDANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVSzEsMCoGA1UECgwjSW5mb3JtYXRpb24gQ29tbWlzc2lvbmVy4oCZcyBPZmZpY2UxFjAUBgNVBAMMDVRMIFNpZ25pbmcgMDEwHhcNMjIwOTIzMTMzODE2WhcNMjgwOTIzMTMzODE2WjBTMQswCQYDVQQGEwJVSzEsMCoGA1UECgwjSW5mb3JtYXRpb24gQ29tbWlzc2lvbmVy4oCZcyBPZmZpY2UxFjAUBgNVBAMMDVRMIFNpZ25pbmcgMDEwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCW2DauxDAvJsHGQcR+AMWE9L5p69pb7z50O7OLxNv/PMnTZCEaXwru2VQND6w39HZ0fF0RpNixJDOM8+oCSIdK6OhXozOZQwM/FsLDF3rQQMpKwYp76YFJo7C4CVVTN1mKo1HdZr3XE3KjI6rfqe1eeRr8zFy+IZIC0lLhoU/I6XYQqdaus5Mlp4yWswmTmkeFRYij7eLyPA5bQj2LG2svp/kVQ75uIZifJQbvzQSzbv8nOqMSPPTTrypcjIL7OQKk3TQa7ejsHo3jQOpjV3uVbJcj+EATpDqZ5c5ELOWpUJ5lW1oR2Jke7uNeMrcsrLLOBw+KyGsAq5YSs9hFM5whdwP7ZVHjUvKV0pBfVmsmSg0XDODrUtZY2mG9NfJCi8S079AWByeoFpzIKyEbeRBkAZX24f/BM1KX2/6JFFxv3JUTuFOA1t+ZjlcZxOXIePI/RVBrpbew/tOgTPEdrJPe/Ye2VGr8Ih/7iTTCfXA2hf7asBv9fhWom7YfgBa1e0kCAwEAAaNSMFAwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBkAwHQYDVR0OBBYEFL83w5OEBK4qbQEKUIxmn5zWHqLpMBEGA1UdJQQKMAgGBgQAkTcDADANBgkqhkiG9w0BAQsFAAOCAYEATxzQSuhdfPQSmtvbgIO33cOoTYz9344G+WKtl/wrsy5NrmVuAaHdckDz4BOY1mWx0b0VQ4Y9GDJL1ZfIEuSzUbAbSSagHcDRiC4sRVSq1g/y06neKVPz+/uWUiNsJRf/4OkZaOEQmi1a/Mf7fRZnnLVTsudJRJhgPGVRFM6hkpWbPDKRH+pa9TZcRHhcv3EGFlGZ+w5M4+ly5PCeCeXJ7cHX6Lpp73IUSDMLfjgDoLJFuxs0a5YI9E5uJRJNrm8r4BFhZuiBL1XYAGdNKk/2UKRBjg9XZXFYOrzZPJQs/rgE3iq/ysxbE3+6upAYJalmHeok7R1oaUsQLzoPDkieopDWuBjryx6h2Ewh1PisvDP2Rq37ErLxDbv+0bhn6l3CmkWxEunKsnX1qo2C+C1v7ig2uMLb63uFKvkmtx5qRUafIR6FB1snc9Gjd7PVx+MYIHsIzbO+fqJVPyAJEJwWspJRwP6vJZFFeF6Q6j2WB3ntxFTNI7IWLD8CRuveAv3m\n" + + + "-----END CERTIFICATE-----", + //Georgia + "-----BEGIN CERTIFICATE-----\n" + + "MIIGUzCCBDugAwIBAgIUE6qOf0MFS8vTupRjcS2" + + + "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\n" + + + "-----END CERTIFICATE-----", + //Makedonia + "-----BEGIN CERTIFICATE-----\n" + + "MIIErzCCA5egAwIBAgIQcZPNPOnDxYZB0HRR1FxZaTANBgkqhkiG9w0BAQsFADCBnDELMAkGA1UEBhMCTUsxWDBWBgNVBAoMT1JlcHVibGljIG9mIE5vcnRoIE1hY2Vkb25pYSwgTWluaXN0cnkgb2YgaW5mb3JtYXRpb24gc29jaWV0eSBhbmQgYWRtaW5pc3RyYXRpb24xMzAxBgNVBAMMKlRydXN0ZWQgTGlzdCBBZG1pbmlzdHJhdG9yIE5vcnRoIE1hY2Vkb25pYTAeFw0yMjAxMTQxMzA2MjVaFw0yNDAxMTQxMzE2MjVaMIGcMQswCQYDVQQGEwJNSzFYMFYGA1UECgxPUmVwdWJsaWMgb2YgTm9ydGggTWFjZWRvbmlhLCBNaW5pc3RyeSBvZiBpbmZvcm1hdGlvbiBzb2NpZXR5IGFuZCBhZG1pbmlzdHJhdGlvbjEzMDEGA1UEAwwqVHJ1c3RlZCBMaXN0IEFkbWluaXN0cmF0b3IgTm9ydGggTWFjZWRvbmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6pEiVlpY83NVgWWNpItk75524Ar2WKnYc08ad9es/gwSK0PGQUkKociAIcyKb5D96LRBgEHHYcWRE7VKoY8KTikU9hy+Ikk4PopuCpZbAHhGkNkPa9Nn2/VNbo/rLmc9gIAHLGC214E7ROrbSxnKFYeM+33mtX1FemZhspvTBk9Qm2ilUkGMfekbMvYEyjE5YmOCuQeusQek6F32J22fvARjrhmt/No0GVFEGxlkwj1i7gMkKXyDDCOmZXn0mVy/U7B0Dv2FSaRZGlJXyC8HgUy9/4DmBwLlmsEjq9pxO9qzCdRbddBsxV6nNjzlVhhq95AXtMkRrwaGU7sAXc6XsQIDAQABo4HqMIHnMA4GA1UdDwEB/wQEAwIGQDARBgNVHSUECjAIBgYEAJE3AwAwDAYDVR0TAQH/BAIwADCBlAYJKoZIhvcNAQkPBIGGMIGDMAsGCWCGSAFlAwQBKjALBglghkgBZQMEAS0wCwYJYIZIAWUDBAEWMAsGCWCGSAFlAwQBGTALBglghkgBZQMEAQIwCwYJYIZIAWUDBAEFMAoGCCqGSIb3DQMHMAcGBSsOAwIHMA4GCCqGSIb3DQMCAgIAgDAOBggqhkiG9w0DBAICAgAwHQYDVR0OBBYEFDlvWbOlCWHwnjvByxCXIeIxReScMA0GCSqGSIb3DQEBCwUAA4IBAQCo5Xb7+TgcA2J+W+ndLr+4kZpNwaWq4XHdKp5HSTpu1+yFKXIAIVYdSEn3x3oBaswjz4htlyfbBU18KhvnUhJYL6gmsSsVZ4TPaSZ7Ib/sJ0Wz1DyaDbeOryVEdyUuhQ7GaPF3/JTTluLG+t9EI0pxJeOZgE3dM3aLtUE4fl1JpDabuCX40EL0fdT8p7aDU9YjKpoQL15qtQKpfjWe2yU3nqVv5j/JG2IhPh+VhowStYuL2w1ZfFhEWS9y/dGntUKWJf7qCG4jZoOw8Ui6wO2U+x0Y3DESGq6jRd0PckLYEeE4UKUoI+bYmpeX0L3hz9VUoH28fGwiOEN61keyPN8d\n" + + + "-----END CERTIFICATE-----", + //Chile + "-----BEGIN CERTIFICATE-----\n" + + "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\n" + + + "-----END CERTIFICATE-----", + //Uruguay + "-----BEGIN CERTIFICATE-----\n" + + "MIIFsDCCA5igAwIBAgIQEbTm669/QzljW76Ha7c78zANBgkqhkiG9w0BAQsFADBtMTwwOgYDVQQD\n" + + "EzNBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYSBkZWwgTWluaXN0ZXJpbyBkZWwgSW50ZXJpb3IxIDAe\n" + + "BgNVBAoTF01pbmlzdGVyaW8gZGVsIEludGVyaW9yMQswCQYDVQQGEwJVWTAeFw0yMjEwMjgxMTM1\n" + + "MzVaFw0yNzEwMjgxMTM1MzVaMEMxCzAJBgNVBAYTAlVZMRQwEgYDVQQFEwtETkkxNDkxODcxMDEe\n" + + "MBwGA1UEAwwVREFOSUVMIE1PUkRFQ0tJIFBVUEtPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n" + + "CgKCAQEAqGgkil8nMl6I+QEVPlPcn0WpFn/AuR/x7VyzzrwONRCUX5CfRVkoF1Om+UaU+AuMpA2m\n" + + "EeUxxhEGcK/T306zMn/tLgHzXyaDxwUJ3dM2rO5ouOZnJDcX4EaTgfv32xNIxidCcBVKrtpTSrE8\n" + + "Uh9KtjOp+YE/rx6ING+Ms51yUM9/Q3Fz7Fl/uInuFeTTCetV01mmLpWMbxNyzyp9lwA4BcsrI8Gl\n" + + "C0umz+d/8DW+LG5BGmrT4iisUUUOgoYzLjTFXyVSw3QZof6Da4HWk4o5qw8oNBzT1c1+l5SKTYuC\n" + + "+4ABDwBydPYaoEMcuM/uJ3GBv1LEXKCaZBtZpIlH2o4h8QIDAQABo4IBdDCCAXAwCQYDVR0TBAIw\n" + + "ADAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQW\n" + + "BBRWN450nJy9hJTDPQpZQvyAbFm7GjBNBggrBgEFBQcBAQRBMD8wPQYIKwYBBQUHMAKGMWh0dHBz\n" + + "Oi8vY2EubWludGVyaW9yLmd1Yi51eS9jZXJ0aWZpY2Fkb3MvTUlDQS5jZXIwHwYDVR0jBBgwFoAU\n" + + "n7M0PJs6qWAQyshZBG3trWIsSP8wagYDVR0gBGMwYTBfBgtghlqE4q4dhIgFAjBQME4GCCsGAQUF\n" + + "BwIBFkJ3d3cudWNlLmd1Yi51eS9pbmZvcm1hY2lvbi10ZWNuaWNhL3BvbGl0aWNhcy9jcF9wZXJz\n" + + "b25hX2Zpc2ljYS5wZGYwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly9jYS5taW50ZXJpb3IuZ3Vi\n" + + "LnV5L2NybHMvY3JsLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAuyOOA2bJvnutmUd2iTOHp0fjFHG+\n" + + "1Y+94q6KaEH1xc92rKk07fwvrZlP4SBSXCJPK9VrOsEKoXCH39Xpz6FkL1dyPbd0i4t6jY6GWxAI\n" + + "zk2ZX13R4xpZYwUOephVe8sNBmTxt4ghUe73nnU1+zrSRxGAyOt8mp3jzEtUz05tNqQq5DzvGUR8\n" + + "4YfD83KYRs3Q7EO2cyAmMTRJ8yTnlAL0osYBmL6X/MRdl/7v1SeP5hvmR5R2nkSKciuDU0glFZVz\n" + + "FmgFmMf5hLt7pFGcAooiFkpxKh9p4WM9BM85okpeFk4Pi1/hmhgKAF19t7j7XRRLFihq+bxcqEkC\n" + + "g3MZjWr+1vWlyevEV8hcF2J8QlTcm8oM9bkWyz64NXeLPaV+54g7EScEnLwA+AxB1alJfeLbYpqJ\n" + + "gtIxiWtDkZYlB2linKHhoRAHBFsrcPYxzaEJJXRbp992cP+UYR77VjO2eCiYxyhIYDDWT1f2vCgX\n" + + "ts+ftYtVLDK5ijn6F3Cup++dueyWav7c9sMgjRtqs0Pv0ybesKoJptewPP0L8IilpRQ0Hx6vqG6V\n" + + "ZYaM4SvIiO0rovMdIAIKuuj0AGBYhDa72U9YovbujpKruvCzfW9+V+TcgRqgTfTXDS9+PztHkvO9\n" + + "CHa9CdUmbtgqiEcsBL2itBWlHpmwGPTHij05OjS+d/uQuzU=\n" + + "-----END CERTIFICATE-----" + ); + + Object[][] data = new Object[countrySpecificLotls.size()][]; + for (int i = 0; i < countrySpecificLotls.size(); ++i) { + Object[] rec = new Object[2]; + rec[0] = countrySpecificLotls.get(i); + rec[1] = certificates.get(i); + + data[i] = rec; + } + + return Arrays.asList(data); + } +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/TSLVersion6Test.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/TSLVersion6Test.java new file mode 100644 index 0000000000..eca6abd736 --- /dev/null +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/TSLVersion6Test.java @@ -0,0 +1,184 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.signatures.validation.lotl; + +import com.itextpdf.commons.utils.DateTimeUtil; +import com.itextpdf.signatures.CertificateUtil; +import com.itextpdf.signatures.testutils.PemFileHelper; +import com.itextpdf.signatures.validation.EuropeanTrustedListConfigurationFactory; +import com.itextpdf.signatures.validation.ValidatorChainBuilder; +import com.itextpdf.signatures.validation.context.CertificateSource; +import com.itextpdf.signatures.validation.context.TimeBasedContext; +import com.itextpdf.signatures.validation.context.ValidationContext; +import com.itextpdf.signatures.validation.context.ValidatorContext; +import com.itextpdf.signatures.validation.report.ValidationReport; +import com.itextpdf.test.ExtendedITextTest; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; + +// This test suite is taken from https://eidas.ec.europa.eu/efda/validation-tests#/screen/home +@Tag("BouncyCastleIntegrationTest") +public class TSLVersion6Test extends ExtendedITextTest { + private static final String CERTS = "./src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/"; + private static final String SOURCE_FOLDER_LOTL_FILES = "./src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/"; + + private static final ValidationContext SIGN_CONTEXT = new ValidationContext(ValidatorContext.CERTIFICATE_CHAIN_VALIDATOR, CertificateSource.SIGNER_CERT, TimeBasedContext.PRESENT); + private static final Supplier FACTORY = EuropeanTrustedListConfigurationFactory.getFactory(); + + private static final String LOTL_CERT = "-----BEGIN CERTIFICATE-----\n" + + "MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBQMRQwEgYDVQQDDAtDRVJU\n" + + "LUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0kt\n" + + "VEVTVDELMAkGA1UEBhMCTFUwHhcNMjQxMjIxMDAwMDA2WhcNMjYxMjIxMDAwMDA2\n" + + "WjBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0\n" + + "aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwggEiMA0GCSqGSIb3\n" + + "DQEBAQUAA4IBDwAwggEKAoIBAQCiu8CP3OKq8DMOoJigZH8n1xssQhLtySOJ5tGS\n" + + "6KOWTfDaTl3eq+4svjLzhqGNDgSYwk/khYZEoJntO3lrkDN6KsYSOBDFNpjYpxa7\n" + + "p3EUjuJxDb1clqx27kkuMTIFl5pcs9oNuUORntyZ2SqjqqnqxkjsSpqNPl8nyZc9\n" + + "gaAY13XU4D2ACsRmnpURmkFj4ppMucMjTCeqlFesvJELf06jfJcLHIJU/b2Wx8a2\n" + + "0x3nN564anLIpBfL5Ws40ScRywp9tve2M77DXWXhXKSAaE5D7Fnb7NRb/pPbW5sd\n" + + "fjhDoO7EghXsIDKgJPtdJlThikTkGTk59t6IODu9gnZ5x7uvAgMBAAGjITAfMB0G\n" + + "A1UdDgQWBBROJGXazRDpyPzpJpUN2EBep0AzazANBgkqhkiG9w0BAQ0FAAOCAQEA\n" + + "nOzoRYzYEhFdNqXwA89CaHTTEnfubTXqv+fx5t5SpXxr+TEYt4Vrhxepk+nHTfR9\n" + + "zcwsECYRaZ8c436F7Gk/Fva99njCSJKvh8Awtbmi1+qv8hdkaaNTs2mH+6zR0iva\n" + + "anq+G3ozGXQ20L6/HdYXrmrBl6i4JjZ2jbbc5whPx/urgAlngB9oD34YfaedLVUf\n" + + "Qr8y9OCwFNh0zVvLwYbFyPFdvmt9bgxvxmAH+pD/k8Sxe8HkMbqVqMo2/PgHlEaW\n" + + "7CoKoEnAsgGlvmTA4fA2rlUNIUWzZNCr6ee6pdfM6+wZS4v4301L1JezYzyJxJHN\n" + + "/Ols4IYrBvATPiZl2kxVPQ==\n" + + "-----END CERTIFICATE-----"; + + @BeforeAll + public static void beforeAll() { + // Initialize the LotlService with a default EuropeanResourceFetcher + LotlService service = new LotlService(new LotlFetchingProperties(new ThrowExceptionOnFailingCountryData())); + service.withCustomResourceRetriever(new FromDiskResourceRetriever(SOURCE_FOLDER_LOTL_FILES)); + EuropeanTrustedListConfigurationFactory.setFactory(() -> new EuropeanTrustedListConfigurationFactory() { + @Override + public String getTrustedListUri() { + return "https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/LOTL-4.xml"; + } + + @Override + public String getCurrentlySupportedPublication() { + return "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG"; + } + + @Override + public List getCertificates() { + Certificate certificate = CertificateUtil.readCertificatesFromPem( + new ByteArrayInputStream(LOTL_CERT.getBytes( + StandardCharsets.UTF_8)))[0]; + return Collections.singletonList(certificate); + } + }); + service.withLotlValidator(() -> new LotlValidator(service)); + LotlService.GLOBAL_SERVICE = service; + service.initializeCache(); + } + + @AfterAll + public static void afterAll() { + EuropeanTrustedListConfigurationFactory.setFactory(FACTORY); + LotlService.GLOBAL_SERVICE.close(); + LotlService.GLOBAL_SERVICE = null; + } + + @Test + public void defaultCaseQESigTest() throws CertificateException, IOException { + ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder(); + chainBuilder.trustEuropeanLotl(true); + QualifiedValidator qualifiedValidator = new QualifiedValidator(); + qualifiedValidator.startSignatureValidation("signature1"); + chainBuilder.withQualifiedValidator(qualifiedValidator); + + Certificate[] certChain = PemFileHelper.readFirstChain(CERTS + "certificate_8.1.1.pem"); + X509Certificate signCertificate = (X509Certificate) certChain[0]; + X509Certificate trustedCert = (X509Certificate) certChain[certChain.length - 1]; + + LotlTrustedStore trustedStore = chainBuilder.getLotlTrustedStore(); + trustedStore.setPreviousCertificates(Collections.singletonList(signCertificate)).checkIfCertIsTrusted(new ValidationReport(), + SIGN_CONTEXT, trustedCert, DateTimeUtil.getCurrentTimeDate()); + + QualifiedValidator.QualificationConclusion conclusion = + qualifiedValidator.obtainQualificationValidationResultForSignature("signature1").getQualificationConclusion(); + Assertions.assertEquals(QualifiedValidator.QualificationConclusion.ESIG_WITH_QC_AND_QSCD, conclusion); + } + + @Test + public void defaultCaseAdESigTest() throws CertificateException, IOException { + ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder(); + chainBuilder.trustEuropeanLotl(true); + QualifiedValidator qualifiedValidator = new QualifiedValidator(); + qualifiedValidator.startSignatureValidation("signature1"); + chainBuilder.withQualifiedValidator(qualifiedValidator); + + Certificate[] certChain = PemFileHelper.readFirstChain(CERTS + "certificate_8.1.2.pem"); + X509Certificate signCertificate = (X509Certificate) certChain[0]; + X509Certificate trustedCert = (X509Certificate) certChain[certChain.length - 1]; + + LotlTrustedStore trustedStore = chainBuilder.getLotlTrustedStore(); + trustedStore.setPreviousCertificates(Collections.singletonList(signCertificate)).checkIfCertIsTrusted(new ValidationReport(), + SIGN_CONTEXT, trustedCert, DateTimeUtil.getCurrentTimeDate()); + + QualifiedValidator.QualificationConclusion conclusion = + qualifiedValidator.obtainQualificationValidationResultForSignature("signature1").getQualificationConclusion(); + Assertions.assertEquals(QualifiedValidator.QualificationConclusion.NOT_QUALIFIED_ESIG, conclusion); + } + + // Example "2.TSL v6 - Wrong signature format" from a test suite is missing, + // because wrong signature format results in exception during LOTL cache initialization, which is expected. + // But because of this we have an exception much earlier than needed for a test. + + @Test + public void serviceWithTLIssuerAndServiceWithQcCaTest() throws CertificateException, IOException { + ValidatorChainBuilder chainBuilder = new ValidatorChainBuilder(); + chainBuilder.trustEuropeanLotl(true); + QualifiedValidator qualifiedValidator = new QualifiedValidator(); + qualifiedValidator.startSignatureValidation("signature1"); + chainBuilder.withQualifiedValidator(qualifiedValidator); + + Certificate[] certChain = PemFileHelper.readFirstChain(CERTS + "certificate_8.3.1.pem"); + X509Certificate signCertificate = (X509Certificate) certChain[0]; + X509Certificate trustedCert = (X509Certificate) certChain[certChain.length - 1]; + + LotlTrustedStore trustedStore = chainBuilder.getLotlTrustedStore(); + trustedStore.setPreviousCertificates(Collections.singletonList(signCertificate)).checkIfCertIsTrusted(new ValidationReport(), + SIGN_CONTEXT, trustedCert, DateTimeUtil.getCurrentTimeDate()); + + QualifiedValidator.QualificationConclusion conclusion = + qualifiedValidator.obtainQualificationValidationResultForSignature("signature1").getQualificationConclusion(); + Assertions.assertEquals(QualifiedValidator.QualificationConclusion.ESIG_WITH_QC_AND_QSCD, conclusion); + } +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetrieverTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetrieverTest.java index c36168bcef..08a8fd9fc4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetrieverTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCertificateRetrieverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetrieverTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetrieverTest.java index 381716b446..35afd5fbc0 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetrieverTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlCountryRetrieverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -62,4 +62,4 @@ public void readLotlCertificatesTest() throws IOException { } } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidatorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidatorTest.java index 3311037583..8986ef116b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidatorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/lotl/XmlSignatureValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockChainValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockChainValidator.java index 6b6719841e..18c5846cc1 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockChainValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockChainValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -70,4 +70,4 @@ public ValidationCallBack(X509Certificate certificate, ValidationContext context this.checkDate = checkDate; } } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockCrlValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockCrlValidator.java index 5b064bcca2..ea0b8737a4 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockCrlValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockCrlValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -80,4 +80,4 @@ public CRLValidateCall(ValidationReport report, ValidationContext context, X509C this.responseGenerationDate = responseGenerationDate; } } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockDocumentRevisionsValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockDocumentRevisionsValidator.java index 5bef14b51a..64d860faca 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockDocumentRevisionsValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockDocumentRevisionsValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockIssuingCertificateRetriever.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockIssuingCertificateRetriever.java index 94b45d39b1..10a25e2862 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockIssuingCertificateRetriever.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockIssuingCertificateRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockOCSPValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockOCSPValidator.java index 4c800687aa..8357333101 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockOCSPValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockOCSPValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockResourceRetriever.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockResourceRetriever.java index 2b03dc8ed6..fcb5c12ba1 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockResourceRetriever.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -55,4 +55,4 @@ public MockResourceRetriever onGetByteArrayByUrl(Function handler) getByteArrayByUrlHandler = handler; return this; } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockRevocationDataValidator.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockRevocationDataValidator.java index 0401564cad..e41af3a0a1 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockRevocationDataValidator.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockRevocationDataValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockSignatureValidationProperties.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockSignatureValidationProperties.java index e352cae8d5..f8f2e9112d 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockSignatureValidationProperties.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockSignatureValidationProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockTrustedCertificatesStore.java b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockTrustedCertificatesStore.java index 94a1d23fda..1604077e8b 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockTrustedCertificatesStore.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/mocks/MockTrustedCertificatesStore.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/ValidationReportTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/ValidationReportTest.java index 162867437f..705690fe68 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/ValidationReportTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/ValidationReportTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -146,4 +146,4 @@ public void toStringTest() throws CertificateException, IOException { Assertions.assertTrue(sut.toString().contains("test2message")); Assertions.assertTrue(sut.toString().contains("test3check")); } -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/CertificateEventsFiredTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/CertificateEventsFiredTest.java index 78b621865a..cd15a15ef6 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/CertificateEventsFiredTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/CertificateEventsFiredTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelHelper.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelHelper.java index 1c3ff6f7f6..81a879c713 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelHelper.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelIntegrationTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelIntegrationTest.java index 44ddff8731..d5471b37ba 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelIntegrationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGeneratorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGeneratorTest.java index 1a77ccc8df..2dde39c267 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGeneratorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/PAdESLevelReportGeneratorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -1227,4 +1227,4 @@ private static PdfSignature getTimestampPdfDictionary(PdfString contents) { //missing checks //SIGNED_DATA_CERTIFICATES_SHOULD_INCLUDE_THE_ENTIRE_CERTIFICATE_CHAIN -} \ No newline at end of file +} diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/RevocationEventsFiredTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/RevocationEventsFiredTest.java index e26193816d..b204e20b79 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/RevocationEventsFiredTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/pades/RevocationEventsFiredTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObjectTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObjectTest.java index 60ca33d365..f0b52a7f72 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObjectTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractCollectableObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObjectTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObjectTest.java index 211f5a6146..7e36555787 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObjectTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/AbstractIdentifiableObjectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapperTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapperTest.java index 407040fc9b..9fee4c0001 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapperTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/CertificateWrapperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReportTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReportTest.java index 111770bf13..3bbc142174 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReportTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/PadesValidationReportTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifierTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifierTest.java index b4ae349d55..5c8ef3eab0 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifierTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureIdentifierTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReportTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReportTest.java index 80826982f4..e3721c9f6c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReportTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationReportTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatusTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatusTest.java index f1278ba9bb..06d429a090 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatusTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/SignatureValidationStatusTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportGeneratorTest.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportGeneratorTest.java index 1f781670d4..4b7634a9f1 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportGeneratorTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportGeneratorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportTestHelper.java b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportTestHelper.java index f0a9a7bdc8..522228619f 100644 --- a/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportTestHelper.java +++ b/sign/src/test/java/com/itextpdf/signatures/validation/report/xml/XmlReportTestHelper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java index 4576d63055..f3c3f1218a 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/CertificateVerificationClassTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java index a377a30ff7..9fd191112f 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/CrlVerifierTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java index c5a1540cf1..1238710c8c 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/LtvVerifierTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java index fb763bf280..3f1ef87c95 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/OcspCertificateVerificationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java index 70ef61c90f..36913ad21f 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/OcspVerifierTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java index 62ab126e55..a1d3abf856 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/IncrementalSavingAttackTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java index 07bfe1e5f7..40b8a73ea7 100644 --- a/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java +++ b/sign/src/test/java/com/itextpdf/signatures/verify/pdfinsecurity/SignatureWrappingAttackTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca1.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca1.cert.pem new file mode 100644 index 0000000000..8848c26e47 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca1.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCMWxqTOU295HIjOZGJ +RfwYrIMsVST5paF6jj3pTR+XkMmAA78cqcpy8Z6/kiIIxFoU88zoxgHlCyuy66+Z +xQSZcOlv6Hlu0qGoLSOYDBhZpTq8YKBbkIaBLK0LAdsLr+w2ZRWnCqykkjiDOqJ9 +CI+RyL5Mpx7ewGLDbaFhAw3cB+i849Q14mef/+LZ55uHBiz3BTIDxOaMkkyQBulX +0DkCZ1bjxsVpM7UtHf9/gGg8GuCxG253qA6JNBbI3GixtJVFekCafv3QWttRAyhp +VQOJIf9D1Natr66TYpZFV9t40zcM1B6wPJUSKNL91gxsKqYi0LkyZBabhBqLRG/1 +3GShAgMBAAGjUjBQMB0GA1UdDgQWBBQuCEK2+b+3QbbgTOTGzJAOcs431DAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBABiBpRdlRJ/OQOJ3g/ZLj5E1FlYHQOzGUkyrryiaUiEI +7v1IjZU1/DHlDdUQ3tfEFZ+/n5fZMpwvZMUxqIOuXLkEBx3PQfqN/T3tbDmBN4SC +c5mKSK7xbrI3NU8m/ftuwCqFPDws91y2TnJ9HIifd5/szkJGNOhKujObZDysU9Lr +Rk9wKGFfDzLRmB5/4nzw3uyqzFBd1d+AhabwCOyuI2JnTKcfnA2QWHbO8WewdB6J +4PYHilWm7ERXmmwfdiHjk3fmIneRlz0c3JcwI56u4AEkuEIOwxGk8tucE+oG38nh +y952eJbtohXU98gZBfsCU0yomeje8qT49w+u57Ol0L0= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2a.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2a.cert.pem new file mode 100644 index 0000000000..450d3c0442 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2a.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBSRB5C3zKv78hw1z4dh6rWPe+i2XzAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAH7cnJrNMxT4laRWYlWIiqW/cRLiItX7Ec0cPwGBN4Hb +Vjb3Nwdtvd8hJt2nLnLV2p9FN0jXAg0rRFeKohGtdnhejaVH+4oVrq5vyaPinRNv +J6CyM1nztSQIwC8Z6XfsveiXFAG9uFLcgBnDVNpK9Vy1mWqdv1EBIn1MZNmf+/62 +N2DRoiQbj0Ualgl3vuodrDzv1X+26NlmJ7da3mAPpMA0DGzIgEz2WzQewjhYLjbA +uZJbRj4vq34eEXZglKqk3Qa2HungWlufzordYgyM45ei0hvpzOjJy2AFZwhOkIUX +Ac0XdyWr6p759zjWk/jNPpCjT9K/IXJ3336TgX+Gzco= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2b.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2b.cert.pem new file mode 100644 index 0000000000..6f81ac257e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca2b.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUzMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBQSYUp1y3hT/S6R66CijJYusuPlxjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBADb8KK59Ifr+LH+u+HFszRXBw8ZQXx9eOxfIL6gCi4tQ +PfQSQAUkdbUsD9qzC9pXA8lelWlYBxXbRJXwKyfdAZqqA7Bv6xrKaThVzdUmH8Ot +NUyxze0qNgBH4tglBRS9QWqGSTHDIVc40ZhB+vto0Q2Y/f5m3pYRnrHYNgqaQKU3 +oJAG5zc8lrKKYY7oKUvocrAcAe8/6K5+VrD2bjcNPoIGsUcNCRh/IVsXzfSVq8b+ +wDw0vNPBFhhWabdngRzvWFINTsDCi9jrmLuwUM2gJaFW/nWpvqR9I/Pk9Z+CfCwp +zbYnPhG28ukovOOxyub4cNhCWqkLz/Y0kYvg1KZVArI= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3a.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3a.cert.pem new file mode 100644 index 0000000000..7933cdaccb --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3a.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBR9BevA8ttetnc1FrQ8Lnqje7ruQTAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAIWxbilzPX2nxcGQftvELd7vGVU0QPQYJ+n7dfM564Ay +SlGYjV3u3YCLrQuB2GYKJyqFKEnUV/PvQFjkAB5eNIByAvJs9PCNZlt0SOWv82EN +6QfiP+yZ1ttTKxIi4W9YIMLYNWTvJnZWesuBqNyxvKxJ5+jKubVsuRohwstophv3 +zJIS6UBizLoMxiLNvYFxTQGW18E0SYOKt3FRdyUBkhHz1wZfGutIC4hcPhzlwXhw +F2+uiTwugCUHB9lHTM5dtGcBjbMtD2HFvdjF07lVtcn3HjnRJTDA6vCmAEh4IstG +GvbPk7NduipwuouVD2WxFYbbTJVSdZ+48ECWYqLHdrg= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3b.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3b.cert.pem new file mode 100644 index 0000000000..9216038fd3 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca3b.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAAIhpRfCsvDKLBnztbeBRHMN9bXaHPkndF6xzIkTshP4 +lkf/RW6RaoGs65ucih178ToLnSsd48MwumVtB7plLaAU77N4Xt+ct2YygYhdZl0r +t3+zA3jjfoMJpq1EQ97b+wsWK5M8tmeLyBO6h7f5AEWcPsUwhpkTiDTo87ZyWJ3g +XcF3+JpmbtWOBh2hSb9+tl7OXlR9uqjaYvYcXY7vHVR1+LGzdCnDEsBtFxSNhxkB +SWaL3wypGFqWEFhuOUx9tTqOqGyEqjm3IBRJmntydxzNwoFiL6t0uFgt1hoSzMAn +3iKDop4mIObXmog5lDX7tBWNGitKijZ6zgZ1j72fVJA= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca4.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca4.cert.pem new file mode 100644 index 0000000000..72065cf67f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca4.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDw7LB9HoWuqZuta6izAjXbnO5cw +VmD4dgc7tWGdNnkzcOqk4Fm7sViK5DKd2js/6ZlxiDaPv8cRs2vMYOEkKMTbuO/5 +UG3YvQJHVNwY2C7nwUv2NSx1zcqB3PX9ANmug1kG5c43skZaBEnIpB+rrrncRu0D +OIMHEBJpkqCONFn7Tpi0Y1dcpX1eeIp2tMEtu7ZcgaAOFIrk2kK2DSeKNhEFausC +ve67eFbGL+z/elQugvU2PTfe/trTgqV5rTN7zsAiURRgGCuef5NFfSPfcYgyZQrg +5hMa6jbdK7BxZcpzLLdSHgU3ik0BTET+/N/5zhjs3TMAsEqx9EUbaiLDuwIDAQAB +o1IwUDAdBgNVHQ4EFgQUfQXrwPLbXrZ3NRa0PC56o3u67kEwHwYDVR0jBBgwFoAU +IUKwPcbwZPO9BaM+rUytxZ6kVMMwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCOuLJtAi3Dhei9sQRIOyLueiov5uQs/sLpDj9Crbo96OAgkeDBCnMy +ixkePyNW+LcWeaa3oiRt8jvRconFtbo/0nSA1XfWpKtQS9xslYDMJT9XwzrkLsMK +5kfJnZxiBlLZ94pYdvg+xghtJq9Ib8LENh4Mj3En/Zt+N624mZ3MdWffzcUP+gUu +BDg9wahaKmM5AVhSFnCTuYg7/Et0ALRrJunS65f9yidEOaGx/FgajRvbpuHsbfJo +aqJDWNGA8klu01JAcNqCEvVjVkEfZKnlJuO3i9Ug4I9sYrSag8EQPU5fBAb58yT5 +ePS2ijCf8bkPxCzGhrFTDHNKLqczVxkX +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca5.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca5.cert.pem new file mode 100644 index 0000000000..e6a2b33d4c --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/ca5.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwz3rNxqssSsWxoDMEe/muc50ZLTu +MSSDefkaxOK4wz7dVi4WcpF3ah0EbFU4vuPeuY7g2iloMJ8W5vdlzCGYqgt+9TwP +wKZRp5fc5wpql9I7mqoF65BoxV9QEe8KvfaNfRHUu4etjN52ZsMfACRbXtSDnG+m +PjhwurxwjSE8T+3Yi0b31Jg+v4tv9+lGgOnZi6fCswLPAMkhhe6CTuwp8vN8MFfy +C7DJdiGL9U/Q/XETQsRrJZG/ERBAH2QEUS3l91ga8+1hwyIcjx4Iw7f6Stu8jzcY +LvvaQwj7R7IPR/oa1nbiaDvYN1lUkJ+tycCKRfeuX4zJ3V2qumPCgZUJfQIDAQAB +o1IwUDAdBgNVHQ4EFgQUkQeQt8yr+/IcNc+HYeq1j3votl8wHwYDVR0jBBgwFoAU +CibeuI0X5VgdrieES3tS9IUDYVIwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCgPORiWRJ75n7FwKwzNVgFl/HjhFiqZuJbVEjG29guP+CnzuAqUnsT +M8jLnlD0Qe3Ef2Kw4jCRflP8qeOtznRWvhE/Bjw2BeOWzP4AJsJkvuHKdxzSQi48 +URg9Zym2V/PRGC7SdyGoGlOyvW25efFsnp8EeLsAuvN/stFXkwjNYQ6upnUPa2Us +7oXrpv2XKzUEXKEGEvw9WbPO562dS7ZHzo2ireX5rN+UzyOYDocSuL/KapJ7CnJm +oRomFUJyPO5uOeM3Di6nvBpK6JLesKik9aqHLbw0ZDHtBe8XH6nCyVYsW7P0pvZZ +RgIg1s90pcG5j79yVBG51zUkFh3yGrgf +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/chain.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/chain.pem new file mode 100644 index 0000000000..3838eb2153 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/chain.pem @@ -0,0 +1,210 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCMWxqTOU295HIjOZGJ +RfwYrIMsVST5paF6jj3pTR+XkMmAA78cqcpy8Z6/kiIIxFoU88zoxgHlCyuy66+Z +xQSZcOlv6Hlu0qGoLSOYDBhZpTq8YKBbkIaBLK0LAdsLr+w2ZRWnCqykkjiDOqJ9 +CI+RyL5Mpx7ewGLDbaFhAw3cB+i849Q14mef/+LZ55uHBiz3BTIDxOaMkkyQBulX +0DkCZ1bjxsVpM7UtHf9/gGg8GuCxG253qA6JNBbI3GixtJVFekCafv3QWttRAyhp +VQOJIf9D1Natr66TYpZFV9t40zcM1B6wPJUSKNL91gxsKqYi0LkyZBabhBqLRG/1 +3GShAgMBAAGjUjBQMB0GA1UdDgQWBBQuCEK2+b+3QbbgTOTGzJAOcs431DAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBABiBpRdlRJ/OQOJ3g/ZLj5E1FlYHQOzGUkyrryiaUiEI +7v1IjZU1/DHlDdUQ3tfEFZ+/n5fZMpwvZMUxqIOuXLkEBx3PQfqN/T3tbDmBN4SC +c5mKSK7xbrI3NU8m/ftuwCqFPDws91y2TnJ9HIifd5/szkJGNOhKujObZDysU9Lr +Rk9wKGFfDzLRmB5/4nzw3uyqzFBd1d+AhabwCOyuI2JnTKcfnA2QWHbO8WewdB6J +4PYHilWm7ERXmmwfdiHjk3fmIneRlz0c3JcwI56u4AEkuEIOwxGk8tucE+oG38nh +y952eJbtohXU98gZBfsCU0yomeje8qT49w+u57Ol0L0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBSRB5C3zKv78hw1z4dh6rWPe+i2XzAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAH7cnJrNMxT4laRWYlWIiqW/cRLiItX7Ec0cPwGBN4Hb +Vjb3Nwdtvd8hJt2nLnLV2p9FN0jXAg0rRFeKohGtdnhejaVH+4oVrq5vyaPinRNv +J6CyM1nztSQIwC8Z6XfsveiXFAG9uFLcgBnDVNpK9Vy1mWqdv1EBIn1MZNmf+/62 +N2DRoiQbj0Ualgl3vuodrDzv1X+26NlmJ7da3mAPpMA0DGzIgEz2WzQewjhYLjbA +uZJbRj4vq34eEXZglKqk3Qa2HungWlufzordYgyM45ei0hvpzOjJy2AFZwhOkIUX +Ac0XdyWr6p759zjWk/jNPpCjT9K/IXJ3336TgX+Gzco= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUzMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBQSYUp1y3hT/S6R66CijJYusuPlxjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBADb8KK59Ifr+LH+u+HFszRXBw8ZQXx9eOxfIL6gCi4tQ +PfQSQAUkdbUsD9qzC9pXA8lelWlYBxXbRJXwKyfdAZqqA7Bv6xrKaThVzdUmH8Ot +NUyxze0qNgBH4tglBRS9QWqGSTHDIVc40ZhB+vto0Q2Y/f5m3pYRnrHYNgqaQKU3 +oJAG5zc8lrKKYY7oKUvocrAcAe8/6K5+VrD2bjcNPoIGsUcNCRh/IVsXzfSVq8b+ +wDw0vNPBFhhWabdngRzvWFINTsDCi9jrmLuwUM2gJaFW/nWpvqR9I/Pk9Z+CfCwp +zbYnPhG28ukovOOxyub4cNhCWqkLz/Y0kYvg1KZVArI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBR9BevA8ttetnc1FrQ8Lnqje7ruQTAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAIWxbilzPX2nxcGQftvELd7vGVU0QPQYJ+n7dfM564Ay +SlGYjV3u3YCLrQuB2GYKJyqFKEnUV/PvQFjkAB5eNIByAvJs9PCNZlt0SOWv82EN +6QfiP+yZ1ttTKxIi4W9YIMLYNWTvJnZWesuBqNyxvKxJ5+jKubVsuRohwstophv3 +zJIS6UBizLoMxiLNvYFxTQGW18E0SYOKt3FRdyUBkhHz1wZfGutIC4hcPhzlwXhw +F2+uiTwugCUHB9lHTM5dtGcBjbMtD2HFvdjF07lVtcn3HjnRJTDA6vCmAEh4IstG +GvbPk7NduipwuouVD2WxFYbbTJVSdZ+48ECWYqLHdrg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAAIhpRfCsvDKLBnztbeBRHMN9bXaHPkndF6xzIkTshP4 +lkf/RW6RaoGs65ucih178ToLnSsd48MwumVtB7plLaAU77N4Xt+ct2YygYhdZl0r +t3+zA3jjfoMJpq1EQ97b+wsWK5M8tmeLyBO6h7f5AEWcPsUwhpkTiDTo87ZyWJ3g +XcF3+JpmbtWOBh2hSb9+tl7OXlR9uqjaYvYcXY7vHVR1+LGzdCnDEsBtFxSNhxkB +SWaL3wypGFqWEFhuOUx9tTqOqGyEqjm3IBRJmntydxzNwoFiL6t0uFgt1hoSzMAn +3iKDop4mIObXmog5lDX7tBWNGitKijZ6zgZ1j72fVJA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDw7LB9HoWuqZuta6izAjXbnO5cw +VmD4dgc7tWGdNnkzcOqk4Fm7sViK5DKd2js/6ZlxiDaPv8cRs2vMYOEkKMTbuO/5 +UG3YvQJHVNwY2C7nwUv2NSx1zcqB3PX9ANmug1kG5c43skZaBEnIpB+rrrncRu0D +OIMHEBJpkqCONFn7Tpi0Y1dcpX1eeIp2tMEtu7ZcgaAOFIrk2kK2DSeKNhEFausC +ve67eFbGL+z/elQugvU2PTfe/trTgqV5rTN7zsAiURRgGCuef5NFfSPfcYgyZQrg +5hMa6jbdK7BxZcpzLLdSHgU3ik0BTET+/N/5zhjs3TMAsEqx9EUbaiLDuwIDAQAB +o1IwUDAdBgNVHQ4EFgQUfQXrwPLbXrZ3NRa0PC56o3u67kEwHwYDVR0jBBgwFoAU +IUKwPcbwZPO9BaM+rUytxZ6kVMMwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCOuLJtAi3Dhei9sQRIOyLueiov5uQs/sLpDj9Crbo96OAgkeDBCnMy +ixkePyNW+LcWeaa3oiRt8jvRconFtbo/0nSA1XfWpKtQS9xslYDMJT9XwzrkLsMK +5kfJnZxiBlLZ94pYdvg+xghtJq9Ib8LENh4Mj3En/Zt+N624mZ3MdWffzcUP+gUu +BDg9wahaKmM5AVhSFnCTuYg7/Et0ALRrJunS65f9yidEOaGx/FgajRvbpuHsbfJo +aqJDWNGA8klu01JAcNqCEvVjVkEfZKnlJuO3i9Ug4I9sYrSag8EQPU5fBAb58yT5 +ePS2ijCf8bkPxCzGhrFTDHNKLqczVxkX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwz3rNxqssSsWxoDMEe/muc50ZLTu +MSSDefkaxOK4wz7dVi4WcpF3ah0EbFU4vuPeuY7g2iloMJ8W5vdlzCGYqgt+9TwP +wKZRp5fc5wpql9I7mqoF65BoxV9QEe8KvfaNfRHUu4etjN52ZsMfACRbXtSDnG+m +PjhwurxwjSE8T+3Yi0b31Jg+v4tv9+lGgOnZi6fCswLPAMkhhe6CTuwp8vN8MFfy +C7DJdiGL9U/Q/XETQsRrJZG/ERBAH2QEUS3l91ga8+1hwyIcjx4Iw7f6Stu8jzcY +LvvaQwj7R7IPR/oa1nbiaDvYN1lUkJ+tycCKRfeuX4zJ3V2qumPCgZUJfQIDAQAB +o1IwUDAdBgNVHQ4EFgQUkQeQt8yr+/IcNc+HYeq1j3votl8wHwYDVR0jBBgwFoAU +CibeuI0X5VgdrieES3tS9IUDYVIwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCgPORiWRJ75n7FwKwzNVgFl/HjhFiqZuJbVEjG29guP+CnzuAqUnsT +M8jLnlD0Qe3Ef2Kw4jCRflP8qeOtznRWvhE/Bjw2BeOWzP4AJsJkvuHKdxzSQi48 +URg9Zym2V/PRGC7SdyGoGlOyvW25efFsnp8EeLsAuvN/stFXkwjNYQ6upnUPa2Us +7oXrpv2XKzUEXKEGEvw9WbPO562dS7ZHzo2ireX5rN+UzyOYDocSuL/KapJ7CnJm +oRomFUJyPO5uOeM3Di6nvBpK6JLesKik9aqHLbw0ZDHtBe8XH6nCyVYsW7P0pvZZ +RgIg1s90pcG5j79yVBG51zUkFh3yGrgf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMjyEJrJXjrEjCr4AFsjXFfbxXr8uvCgYucpYOjm +9Gau338C0Tpr8KSP/HwgyJ9lA+J3nPOEkgdGnqWRV6TIguSLJB3uZoRvVjtT6Nez +ddxvR33+yVFV9skRoc0QOHnh+IXNVeELsf9asV5cg6ExuvZY/VJ/6m87TfurFl3d +s0s4sOW7D6dRis07DbIYgGva8hiaeuR0q3qHFIjISE1Zzmv1MRRZnSqHBZeUyOO+ +NoauZhul9qn/VeYhyIFqfmoJyhTRq/3oMvvdRu0jFeq4pk/iEYjw2V83enqxzTWb +m6fkwiRhrO5dBBTOrOW71I3W/9Rlzt4KegBRI7amT2A6+gkCAwEAAaNjMGEwHQYD +VR0OBBYEFAom3riNF+VYHa4nhEt7UvSFA2FSMB8GA1UdIwQYMBaAFAom3riNF+VY +Ha4nhEt7UvSFA2FSMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCQQsjsPf1mWSY5OLmB4uJ/sgCkEKBRhIwhHQbLXk2I +Fhb13iAPp8G7PqJoo9ytqbHTbmIbTqulTqdo/byL15UmQ/4CZ2auy/YJx9pJjg+C +9LO3TCulMgcNaCpN3qQ+0vEGTYXGTkSI+gvKlGpZKEOnqLZbLex1BagRAAdRaGEk +Tmbu3aClAHe9U2mYAekyyvTAPz34kNhqHvgCnRRM1sGKTTuFcoHx6UdqY5v/nJwu +gcfYh2MV7kxFTKuwiw6GkwM5/LVk+ejvQ1Qq7u204i8cj8tEraE8JZM/VufhCHvw +HkdydoTDdfACf0SR80L68EsUGW9kUVzDj/0J8FOp/v/R +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKMsPvMnIxLl+iDtnsEXos2oORFA4zz/0wU0XvWK +hbLDC1Oj+mpY7mO+B0+NWN9LeBAe8V7QtV0rBAFlJLk7M4ettdmbnRJp66O1eZrj +psyJZ/Hk6ijWDX6LVLllkuHZKFyEYCaRSHbh6oZnoyLcbH2S8/Aa0D2pIsDPGBzT +0V9LbDaLpFi/sthC1AECFsAEC/rJU5M6hlBVEMnU3IsrpoCdsbUC6glYRKZX0z+D +tRunRwMoOtk/HnrhVp4pJN9w4sxHZCzkJdPiV7gI/Oz0Ej2NsLJhcNH0vgx9Pnyl +7OHEFkR3jPFBkgyVPP5WICBwWbqie4LJcvaGIzEXN9jNZ10CAwEAAaNjMGEwHQYD +VR0OBBYEFCFCsD3G8GTzvQWjPq1MrcWepFTDMB8GA1UdIwQYMBaAFCFCsD3G8GTz +vQWjPq1MrcWepFTDMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCXfbF3sZ2ptsQcK8lL1x/07LJJTSLpGuR5QV/etEhB +KLksauT991sbrYRsArSPuqT8LOsD1w4m7CFyx2FUeKqdff5w6ksULoqsVJ1yMGGy +kBEPT850Rxnnmu3FrVl/A1XO8lNEszNIUhPC3gjHHndhVBSFho+3+CDWQBjP5t55 +cvghtv2yqDVm6Izyxx7p+Sn6cOwvwy9RDUb2IET7KZRj7iPRpajUv1fN6SF+/Wd6 +ZaApm+eLs93xIqujFRTzleZKBkXUT5xHudfVC63J/YpeNpi38rx6hxjrw/ABantY +fgawtinmHBrmqNlmahsxrQWXKXBRqChCyzCZg/h92yFb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUxMCAXDTAwMDEwMTAwMDAwMFoYDzI0MDAw +MTAxMDAwMDAwWjBNMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxFjAUBgNVBAMMDWlUZXh0VGVzdFNpZ24wggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7qDz8iE8SXtjzHotV726Cuo2B0n4Z +AxQCpppVeWhOuDhYNHHW+Ng2MyARH3K9NAeo4hYKyctWHBqwd55KpPdTZQg0k+uY +R6zlbze/fyrbU1s6bUKVPnpS7GzA6TpoZI/9CggWjQasxXLnPYKrgflexAdgVEof +GJ1qMRaOvNkJeUTmBQJsbm2rWvm3hG+uDxh1DjVr1tqczFN5Dar1nPPEn7KC6M/9 +PhuZlfwyO+lNKwQkjN7mz+qWzqODQ9VrqUJYwMpg9/NajQ+2l/mHSpSKkTic9xRH +6K8Lm73RRMOGoEzuKAtY5cCVxx86JbrG0/zl7jC+hmI6wsiFXinKWGitAgMBAAGj +UjBQMB0GA1UdDgQWBBTniUIgfjfakIVH5JmRgL2lYwNPGDAfBgNVHSMEGDAWgBQu +CEK2+b+3QbbgTOTGzJAOcs431DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQEL +BQADggEBABVtkPlV9/TM1z8B7c/lH4rcFJAz9+wiXu+eHPqTtPmP6RI6vMm4QqoW +9wUCnH/6VtKF7h3jzDqANg2Mfd+BpnFstWVYUAk9Uc1ucwKJOMr4++/xN4PnvG77 +uLvm33MOe+TeLh/KIDDyteSGo8RAJxeUroAksdfn2LE3DzohWh+ViGbrLrucJmCZ +t2sUDVxmDo3li+0eIZ1CpDTOV2H05DLI2Z36XppoHghsACk4GEjCUz1JVAHDJA8x +h1T7FRVW2SAP2Suqf42SVN1XhrKL2YwPUOR+F5ZZg+wH7oyr6g8VvA1TqoPDmWXx +ntG+D1v6mirFW/+tNlJMkQSRIhb1lSQ= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/crossSigning.yml b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/crossSigning.yml new file mode 100644 index 0000000000..cd62f5f181 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/crossSigning.yml @@ -0,0 +1,183 @@ +external-url-prefix: "http://localhost.test" +keysets: + testkeys: + keys: + r1: + path: keys/root1_key.pem + password: testpassphrase + r2: + path: keys/root2_key.pem + password: testpassphrase + ca1: + path: keys/im1_key.pem + password: testpassphrase + ca2a: + path: keys/im2_key.pem + password: testpassphrase + ca3a: + path: keys/im3_key.pem + password: testpassphrase + ca2b: + path: keys/im2_key.pem + password: testpassphrase + ca3b: + path: keys/im3_key.pem + password: testpassphrase + ca4: + path: keys/im4_key.pem + password: testpassphrase + ca5: + path: keys/im5_key.pem + password: testpassphrase + sign: + path: keys/sign1-key.pem + password: testpassphrase +pki-architectures: + default: + keyset: testkeys + entity-defaults: + country-name: BE + organization-name: iText + organizational-unit-name: Cross signing + entities: + r1: + common-name: iTextTestRoot1 + r2: + common-name: iTextTestRoot2 + ca1: + common-name: iTextTestIntermediate1 + ca2a: + common-name: iTextTestIntermediate2 + ca2b: + common-name: iTextTestIntermediate2 + ca3a: + common-name: iTextTestIntermediate3 + ca3b: + common-name: iTextTestIntermediate3 + ca4: + common-name: iTextTestIntermediate4 + ca5: + common-name: iTextTestIntermediate5 + sign: + common-name: iTextTestSign + certs: + r1: + subject: r1 + issuer: r1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2500-01-01T00:00:00+0000" + extensions: + - id: basic_constraints + critical: true + value: + ca: true + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign] + r2: + subject: r2 + issuer: r2 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2500-01-01T00:00:00+0000" + extensions: + - id: basic_constraints + critical: true + value: + ca: true + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign] + ca5: + issuer: r1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca4: + issuer: r2 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca3a: + issuer: ca4 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca2a: + issuer: ca5 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca3b: + issuer: ca2a + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca2b: + issuer: ca3a + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca1: + issuer: ca2b + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + sign: + issuer: ca1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2400-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation] \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/crl-key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/crl-key.pem new file mode 100644 index 0000000000..2d3cc82ac3 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/crl-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ+urJds/EcAU2OgmN +7A3GxgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEELjgW4C64QNqkHi/ +9UbE+ksEggTQdbe6Y1LtVHoDERy5p7sy0FEy1k7Co5xmUKPUOLhrFhEPBXs3Lawl +su/CemkwRXt2sdlOUl01wXkDazZEZIkGevGZ6v8COag8CUcMs/woh+dEFRYfSmj9 +fxfFLNCvtR726GLuUboztWmhbsS6jMbAOM2soQoVQwxK5C3P0xQQ2KwL4avK/nYp +OZibBvepGR7cFnkqCCw5Mk/wMe0uTiPqhHf27t7qcXrEXIh/vhT6R0RUDC3wZWRX +gRd+oQbCQ44yeisboPEMC1xs/qAHPd+tfQBX/z6uNeHcwoabwF3fOHxjJmB70ydz +R3vS86uSeOe9/xa0Fz4Vl5nelYek6p+MzhMhmom7OwyNHRlUQfRsemgy6RqXgVbe +hR91V1oH+lkv4cFeV3tBREOWWXbwvU1LUTW2gk2NskLYNZ8SLcURXo1+7M3jZ5EK +X4kTsgcWVJJ/DXVEDsKRQv5OWGZW7IYJkrhUEKAn1OOodlY5irNa7fR6Aj1qc86+ +D7zTF7Mr5VHHqjY0o/nQ145s8KGdx46gPQLvZGw1ipZfXh7ZSv/kRmdYfs6SEZRd +IMF2VOcsgw/SnGfHz3i0YH7SX+G1/lH3YKRr9j+4ZFdIim6qd68l0UlnoheTEKIq +4/5f8dYxmBgeEg2OR0oWvjtX55sXNOSRpoboM1AZlVHBRvXEKZuTXLaj8GjCP6Fy +ww58rug0ZakvcIcoGmZBw0QjS4n3FzoHmIU2U6pJAcYu92yYjhtgCy/BOhmOE/1e +wiLr8r9Jg4gRhGq8it1voNebK0PkpngVKW20gfIlrilww2q6zXlsEm2NBxa9yaif +FGolpBvxjCsPCPTC1/wjj659PCCnflnWu+YMJ7a8VPAeFlKW+D5DV5PXzmJTiIPM +H0BiwNj1wzJBtsqiFRdLlJHO1ys7kqEWVsh4rWJ7aqiq1Nfok2aM/z6TlcBQwtcs +qKmkD+eLKTXhyYByc1oGcV+sc5taAp2ktiMknFGen/jd4DThTxXg+F0E6Jrr0EJb +kKkVPfayQvVczDEoJpwluRuOFyjUWwUybkBvvhu845gi7CEei8T9NoZI+8waCMWq +tQKqIy6HqW4VqFDOmKaS1D0vXaWB64majlvUCRMzGW/XtTZYDnKIqWEcztCjlDNa +tOUUAHFu7NcRwOi9h9Y8tVCL19U2RRDOW4ZpLwcPCPYb1z9WAvLfW9QEhJLu10id +2R5WeCmrTglZpeTgSUsbjmMfyVPROK5Mfp4poNzWvnuyoj0wUk+y9PmExatCqZ+r +yBPJGhC5mYPGun3LaBDAE0vrW8Op3GdSBtdPpV70yZa2t4YqIrgrCSSylmXQSd/K +6fRAsLS/T0stsQ+t9v7nR08EWtEeKYz2DYP94GT21B+1Vi80UR/Rw3z0Wd1FyGMw +Rtp2eIotHGevA9spef1fG8ckjvVfZPow7TAsZsHBhnDZvSu8DByK/1hji1l++QSe +w4z+PwjQnTf1mK0j7R+NKrWOdI0lHKA+T9LfuC5W6T0jAqZxnMefGitOe//fPdKf +MzJd2XZYTCNTUYCZArCxQZwID6kE0dOnomv9f1NB3SrKnkRw3IDMtUsvDanuWHJo +XNEodRiuhObecRmNp7Zl0cX6WQTVyYoMUys/Kei7NVehkVsHmJ7xFd8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im1_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im1_key.pem new file mode 100644 index 0000000000..a409067a63 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im1_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQnSEvCbczuFOi5+c1 ++8mI/AICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEDkNRWiadXRU17g1 +HxDD3hYEggTQseRoT7dDHd+YL2lOEVtzJRcTDEBplgaPzeNaCS0JxN9g1Avp+LXY +xxJGjnfGnzqjtzN3YhzKSVDMkbnkaqegt8HPGzH8JljDm4+ZcUmx4UZHHIfEGHlm +p2DgLIDZkT7fT4BhhPbjqKHqe9wNT0JwBd7PRW2C603SJXozM+HJFGwqEIyOX8FX +XMLIe3MsdX5s41FzGJc/CjDSP5YSIdveqDGRederaG13d1U2XVl/ax/VQy/MgzWk +uW0j8cKn6JUM52KSNbBy82c0Xzal8gA3wP+oAaEIR/w7ofxzLmB0NsGqGan2NmYg +Ki6SYI0ZJQwUpDsKC9uvNWhdjp5LcSxN9G9uRi65OGR/0oOL22Ta65n9C1SWydZQ +DWJFRgW494NhLe6IhprU/8HbOTJP79HNjkrzHek603f+5OGqf7OCSEBW+zs7Tkyx +4JovvtZox0c+15t99FOA3dfB4ikFBvIBUfNdJ6U67rnxgqrl2DA027JyQwI8XwLy +WeUkSNDKx4/mI71hS+JrkLj/zK+rSaBfKsBqTGDr4BrzVy2VXt9OS7OF43zYWAvx +ykU9D/UYBMeYrb18Rvb3RvNn+CaJFZd7ktaNuq1uwhxJSmpkDDnrwGSRWyWn+XSI +BklnOsX50PcN5ri/rpurClIxFYV032PY/UaVbHsrSN5InQ1yez2CEzgvYInLyWGe +9qI4WWqg5BnhvDixp6UBBl1YNqQDwU1xpS1kF/HHxiWHQhH/CtRrT6Ks04qkyBpZ +p2Wdw23jI8nf+9Dvsy1gAKhacvR33tLO0/XVur2oPKQoptfD+0ulnirgqt9DasPR +Ba4+De2WjHscnsIrg2KXEbQjIZwietd8qBMAOOB6MZfidIAD3TVt9O40KsriS/by +2UeQsleUFLHwzotGr2q0iXQtWd9qcz6r6JZ1hgtldzyGLutBkHs6YeWG9mBdT3xT +5g6JeuAIRgnAnMMWn7yLDZkGty6ASL6T35QkuT3Kg/RS2QXm2Vc+ghsDnEES3NRa +tjRGXKP8SvW/xT3NL3FrxQD7l3WGbJkjab7weGxgsgxDoGQhtA2iapK+7n7dOLog +zziiVNcoxn1KI8PXWpZtNm/EbawzbCI1JgyWVR813UxEoG56PGktzy7HwITHTlST +mO9lJg3h9q/B212tjThgb3EZmr+Z06qOq1tsFyWtv9+qYjEryaBLw5alKpSs6AQA +WUXRa8kwAuf9lntqNxqQmoWAuDIEOwLbkE5t7G8neWim78WjlJw6xVDQlw7n0IXD +AZKhCoAFHhZLMZW8QUqYc2d72dhf5eB7zzsUZ9omlG/t0tIK2EloS4TDDHn7Hyxt +9nDTu8iXA2B5M4ydBG2oZyFm5ocQ03YFwhsHFtu9zKChZcFRSr4Fl+LRDPKMrroK +XhNvH5T75g7v8TNKICM5dXzvU9OX6cfArfuod/Gitb9Te51P+PMGLRlC+1aDOzgf +XAYprmo5V3Jkq2zBx01P1b4dlgp02d9oyoJ1lLglu8nOSO1EaSJweOgmcD4/EE1D +y4qc5zTx/vq2NUuGD3HbtRlpzIVwhft8xD7rFH0ohz9atGWGuOQAC4sg8++B4Pbr +wm1N8AphhoTqhjCqX+FGepdX/TqUd/clWt+TdfnwYOxFN0UfiB5fOns= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im2_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im2_key.pem new file mode 100644 index 0000000000..babff48c1e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im2_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQOfCa4hjrSpDxW5bZ +37Y60wICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEOTYj+pjy7awR9nK +6DMgSI8EggTQvHoQBwx4w/1b9REo10GCD68Xl97Hg3m5mn1Ji3sV8r8mLEKO3SUL +GytvPHfBTYMCtHb0UDEz9TQHEsOAutPtBIEHCNgQADgy20IXSkFCl/rfUTkQgbki +NQbqPpFXV+ubr1lz+kaSGl3LsauvVhVcQBCUrzTsLv6qgYlqte906HolzKyamJft +LsRaP+Y6blFStcZBfK5kj78ubbV0IE2iTVsh+PdPxQp3TgW6/R7BNuDBIFbJuOvB +9UYYvISIDA462rejukB4X61/s2N7MuiYZG83z9qv8XzMl0Jek9h4GU7ohg7NuzHn +1F0FqzAyXJDyv2L9+mtWIjl7Ff2//3y04mQTizUTL4SgW0SsFZpze6LdoEw+7lyK +eqkUTt+nXGGFy4XlkPiDzWN/TX9nUyI7hHl8sN742N4c9bqq5G/sTEwqIsVG1QVD +v0SqObrkFDw802jeiEn97spuXHOKST8z/6qwPv4kf3DZFNFBvSPSJlEn/he23aJp +H7ohyC0dycHanBLidfxu+tDnGWw4t93YKTBFKwYB/xT1kyNoaTZ/3xIblDxugNxy +HKuUPHn4/1EzTYZ0chPQ/xom/Pfhd0I03LOzPSwrthjpD9WCeWj+S7mVwUDbWOHB +qOCTjxF03WjNqLOoExSFJe126YdLgUZUyhSXoV0X59fbkDvlyBdVPUH/Itjxe/Tg +Cwp5qylznPUhtfOmAp4bfmmL6MTffHP2cPPTjPDEpbO4mq6LqncZzFoLT6eGnmuw +peawVORQUAwhpJpnKW+FpNMvZKDDhQyoZgzwvmdP//RhtZMGNa0Rh6KnSqm2Ghb6 +eiTs/tWgPBo0u+LAJUEzgrumd5dglvFBi1yCmPtUC7WueoTA+8AYquEDJWtbLATM +JlylO1EGfxyDiVLfyx5eLKrA+X/L6L0Fkznu4jSloL/1cV7f+OrLl2U5XU9uwBAx +UtFywvEiVF8wJmUWKBeQm4ct6FdSqmT0yZJFa1wEZQo5LQ1VLq1JkMcNugU7LKfV +XvIIavQmD9NTkuGN77tP7l1oZ/LKIARW5wOERy7cW4R61oKgKUqE/ggHTKqIvFG4 +ky5WgVGnixfwsoBCLD7tymLHrLEsctixeqNtIVSxcjK9dpS0UNK4EW/gqRrmUxIU +j6Hu2aqIHX+XS11AWOAz6pO+KceSu3gdTz+RTQXHI8FCPI1WSLW3iTOtoXD8CrRz +N8M796hKAG1X4WGuxNRhEAK5kl03ZoWBSRi/VrWiF8TczvaqRsXxsqXJlKfefiPN +kgDmPZ+AoR2E8ss7aJde96FDkhNWKSEoUbnkjW/g5tQQmUkrB5zoF7q0LJ9r5STh +Qq5NgFndmjFKtGcU7HeS2vxL6hT8z6CVzqKTwN3uFUStTjYE/sstWYlnZ3/YO7o3 +9TrZBRUs+iZVi8YAnbWhbm6CxdlcUmwWJCj20GJ7/i/Z1e8H4xyHp+7w+ND78jbl +P3ULSp5O3A+nRv16yGghl1FdUlx0nmMg+r7R7IJ9AmnkIS59jgHRWg2ani4NA1iD +oPeMHELzBcHRezzjvmc9fPIMZw8Q2oDphP78hNXTRA+/ooaZcsoG8JAOyzz5i24f +vo5XasjAOGMuKydy4xSaZ9wjPn0oqM0CflLPXEEMAIVWooqFcW5eFuY= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im3_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im3_key.pem new file mode 100644 index 0000000000..b88dc27341 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im3_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ59abx7rqho4TMMoV +Z/durwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEHNUYpmlqTtrp34g +qpfMckoEggTQf9h8LCecuPuTHpf+jDsDwz8Be8ftx7Esm/oGNaDFKU10GGMx9oyL +ClrU4RryxwWDflQ3CCceVvtAOj4T7Gmwg/rNjcNMyJAAJv8RfWijcYf/sdpGYH5V +hgpy63g3K2aic03tD/N1n0rrzBj5mHs/j5GiJxLSlbrlX+ulJawgRitSvbkx66HX +cnRSf5tBJLnd196c/ZG5nYOCfElvGrl4vdyOoDvAf/3HYhsGiRBtpVMqnH5wwAKy +mV7CXUCr13KCXf2Co+6AzcDs50PR+n/peUzrM8Yt/Aka8JhjnOoLotwr0DqN9flo +BEvPPdTmzxfekZmjasmckwOtn2vXeuxClIHGx1vipbB+9zNDiVCpeCNEqiU+bige +m3znGSmT1OuZdEoYXFD6yibJmL+K0flyxTQDnyChXi2IYWIv3jWTE4QQjKT9MB+S +gdVuQ0Rk/1VZiIlRuupFytwn92K9kCu4fQknhDBkeUa3ByPhNkufAIYkqAS9yiTv +cO4IXIlO4VPA+1Kciw1iXVK0NgPRN/Hxc9dAJihbN3mQf25SMkrwL3eee2dr3fU2 +LOva51mGvXL9LQAoz14q2gwtmsQi8vin+7sJBYhiKTgitdEki78oK45pIQAENYdQ +ZFppGF1CfbJ0MF2NqxSlpHY6qpQTjlGMcVWoQ7ASYMlCB0JEv5K0CHEcHciV8nKp +9kzlDHnRj37m3LVPmpZL+jYcS/czJohxwyR9gjD63750ox92PHrxhfxULbYai7Av +VKrmRpZvHuEa6Kt3KwlNqbf6I3A8yMk5H/Bn0OOeN3RBJJrqrIVfCNMFcWge/wF6 +Txv0TzlNIgstaC+vPYiN4d7J3e8Gnuwx6Fofy9IfzqGpq/01dyH9qpM25smHdklz +EqhJLbtiPAB7etEKJzgb2lEL+Cg6kw1j8f7L3lh9nJVI/G/fuZ6V8mGDijcIuixI +H0oUeDymmyZcyuDruCjpIrBV1kQowHdgdRPR3wRHA0FJer95isY2CQw3O2S+e4la ++h/pZ9SRaqAP4VFl/La1ko33a8VizzhWlV6NvNIAHtQ0zdWH+xdryQ3NycRP3CGT +ejT7vAWlVLH293JJJqw77Ev0pFgF9s4Vj5ofipP7UUsVhrB18vMoqbS73Z6DRFgP +YzbdN1/J2v2GWAEf/Urjn7fgqwd6sfq5Bgfxnsn1XWiCOwARDgbSdsfNxC1N6rmI +A0ln5LVbNEgQDuZcs3OLh1O+Y4eNqcvE7TNl5mYI+pV+c/0l+sJUsmbFqrG1fSG9 +OC2vIpF++CbY9voL8ThTTAJpPv0+zklsoU39FsTPsgyP22c3bJYvoGubv7RKeQaT +VgkI1AkMfi4y4VkDJ1UWLN69ETOWo+sFVjMTI4vz+JwDRxNCpZgpfaJnTB0sRVMT +oFP1/gcHmoUDQPqp1h9TM+KgfTRvkjFW7zrRLeOK6AasJc+nowh1ZwL0pLNbAr36 +sP/M04GNnRZ22M5ASGr/Ft/Arz92HU/73rPd9+xw6eeue8wp1hzmqlC1heSLd6qS +HN507U7dHH6UzTU+IGa1aVy3tDg4M0EDNnwOucC45Cq5Aj9e0mQsewB6vnmIi5iR +T1+nOwmHEmE8cR6E2r0QlPpnEyA5LKK+Dlqm7MI7dBbTxeNAxnVZAB8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im4_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im4_key.pem new file mode 100644 index 0000000000..027d82a815 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im4_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQPv4QSl2z8n6sPSys +T3ba1wICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEL2/kRFpc0iBKKXV +iIlhfqYEggTQyAeYsSH26sE1bK6/AzSPxSqzL1XrFij/9SsUATm8g/0oO/XbXpL2 +EOhs8fCtWKXllOcu3icGrs2BCYgOb/CaW3F4NMUNJQJccCDoBiOADa7VZkjeCUEQ +v90ygiEfjOgTkL5ITvegTSfPbaDpUjhfHmvkcfV1NsT3dfg0wdvNqv83fb8BTI7V +J31wTrfm0RVBjzZl1SntrKAiaD0qVxpw7Xr796mWfLi6QYW8+JGnl1NzU7d9M9BW +F1uKTnzwyeOZIOMGd8mZH8brNKgVlhsXIjaNwiuaWlIG7RGY0o1m46xlrhOtEjNI +D5Umu64mTvSqlObvDk/bgn7Ni3rc5b61lhD1HHVpTHLsPITtkOnIfLxgVMjSTiao +j0HDsDVXeMVdgGL0d37kKHkazmj+3MBnBdy/mPs0ywfhgxbXZ5B8Q4wxPy/aLGSU +i3VAM3LAyeXfe1Ww5JFHrxyD3+iNMvbkz72QPuZKy92rQz6QCQEUE0K0Ksjobmu2 +s1sGanD0flPkU8/46qj7YR41Z+natApEhhPgLHspesdHZCiJxLigKtVj8X8OVjyw +kOKdc1yE/wtvDpB83NJYAICgqhgFm5fwVr9i4GPqFX8tmZ1K2UoMCmXXW8Xi7Qaf +SIO+Xj5VDspm/DJe6PKuPOh9BfxGNamdC2gnqIvgqLzhudiiNyhabCp4dlwcdGQC +tNq7KG5w9EbSwCD/hpbhh51ni/2r+uclXepSMgC2ef1RxNxjIzyxNsItGkeWcVnW +dbEr0PZO6mnjvFUiq6O64oFZlEbTV6QqT4dvoRIJxOTpU6vXNvDUKttBh9jhP5u9 +DAgM1nOoOiCtuuSVB3SgDAJ0c4hoiO4IwbRHLSVkGBG/tCX5JmSwL+jUVYNW6PTH +QJC85L/lvQtUMlgeY5/y/dS5e8ncwbEJNae/DTdQJRmUNOJ2k6INJXSZdRRnfM5m +4u1v8EYxssC7klnI2pHDlEDcIStLCDw49RRw5E9hojNCUPk3WJosQSbnyBF7tq7R +C0iq9jNkuBRRMMgJbatz/y+HJtxy7kzwquT4h9f5dSBabS+2+eRcm6PrenLOv2yl +61eI/3RcT02CqYV4nQVGTS988NxIV0481MV5exhpGtrXTEzBV6mR40wgVDK2errk +Q0pXwQNV0pETlCclU/N+i8H/ppeIzyIZXxaIRphpjsvAF3/36kGw4Y1B5siBECW8 +QobBhXxOEX5jBCkFwosaDlN5FPLWgmPPTw52oQ7MwSHNtvQPV0ZFLrSIIieFImZs +VKOL8zqBFx+vMwTEZsEEPyqrRtDweAWCWVl6gm2zbJh8/FDCapbzX0F9sA4W65Sq +rHKys5nPNApL9TPz0fU4fD5ehV6mWI7OG3R8o1cYeMB0m/3j7pKIiCpa5k7HabHH ++AFdtLDHZzeQMu8wcuKWU+mkhZoZ0lZ8FzsXV9b38g/kyrnSKDGKqRjptv2JHCHd +1umZJYhx7lzpOYhkPFCKDlqKj7bUmuZlQ4Xk852u6/VEWXNvRZXXQmaHxKvNQzUV +Hz8rJRdi/kRP8WcKmcr4+3RK+wexaPGBZrMfyT7Qy4n0HMU8PBTD1RoloVzn85VZ +wRm0cNERLu5F4W/qokusATHST3Xxj3AvXZqaIDiCSqweXpalqd19TEg= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im5_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im5_key.pem new file mode 100644 index 0000000000..54b048d2f7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im5_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ9nBkgSwd4rgsmITH +501lzgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEPTQefKt5NHTLJeR +ABUMLLMEggTQXGr0CsL1r0AetwCUb9onh/gvL6w7SYi9X4mRRs6oTEdzjLHMo5ku +Tx+6o4Q0lyfqNVnwx5ddTFJlz2WO2zEYQiZn9HjtTbCaq9EsBjhHNtdKFo1L6nlv +tRc52vPcyqQwTQ+OBVrFudiuK0sVIXAbwxABQoeIb871lpoXx78KGRqMpkl00UMb +WocMaevt8vbCwYzP31+MTdjGIEr7AIaBK3KCKElfzu/szP50AHFy1xm5k4rLPhpp +h7ZWsZXj25sOaqgHnOaeYJt/IK09d0Z1oNFp/TaimVjQOp4gz5SnK6iK8aQF8LIN +9arFPleNLVe4TlqA8Yp6vXGuFK8zvuQ4puNbIwkGNRXuEJ/E6yIw8YVGoXDmirl9 +aJuJrngxzRitb5V/bt8RK3NaCmQ4aYRLAX+htUWQ6Wy0Q/WaMTxq5GNyMo1NTVIc +WnGb6qlcqXIrx830pXaW1dlJjDzHKyihgJ+Jg+WnPuKYTKrRegL7aPBRzw1x6F2z +1DxJ0G4YwX87eNgA7rYIsDjnVexxT8c8y9Hmlw+d17TptW0hkQHVLYIekxgJrCPN +AELI9R86y/3MwP2iw1v5LxAqC1t44fDqMd3674WyqBB+0SYXqxmrUyj2IZUYcKeG +TRZGKuLvwjdeOD8Ds0EAJeJtKLHFAv3XWQcc3eTV34gtC/ti3zkoJ7oNNMeUihXn +s/BCOHXNbEODLmtU/WInN/dEU5GwkI6laoBWfHDyNqLWD0N/5r4SvkXLCCzo/4OB +7eb9zBIyYzGiYGI21TOpeM+AZkqDpjEp8eSCd9U9R9dDA/3wMpZQxNIpYkfAEeJt +Di8QLgiU2IYpwKRsUzI9RMFGGX4xoW+UUW7vIiJTiKkK3PzNC9AevUQ7oeOwwUG6 +ZitWKrHfRTgaq/TOxrFaZOJAfAu/JUECNCFONaiKxt2ZsFelvD/6hst3kv5vbsvw ++TjtRuvDVA3ztRkItOzc6WagMO0234IC19MUKN2JR9r+1o97MuQslDJfGurXNiK3 +FY6aUMT9H9H3Ot2HXdcOiofO8MR5JRfQia5JG5kA9fN9P4hEro48KFyIu7W1soqd +gwh/SLu2gySPN9OQ9sPSxBa1q71p8T9CREw1LTvJ0ZA+5UOiDd6O1aCUjO6MIsSd +buoAotFsCt2cQZZ/Bs+4rpQcdJ9I7rY0mO3Ojirx0j+EnOS/otYU6DzlMmsZ8ZjJ +zc10igcZqDVrCBh+OhmsAaatlwwe1WA8/NvcZTIvcioUXNBG7A+AsE6xl6b8L4FZ +SUI83B3id/cIgkVe84H/t+xONcHZisW1cIBDDfJIgdBRqeuSSGHbPMPs+nG9GEgV +QCdfUQsrxLlOJ0d36DxZnxNv8JaBSoFxI/d0fCqYSpi0lql69sP0umfeUKUKm6Am +s3FK0mIcx0g3ZuLBol6q+mEXUOf40vuY5N6Js5pnH48UlM3fJ7cpz/sjGVpLofnX +udf/Ag3Y8P4OP8zoWvz6IxlDag41Oo6i1fabJ0ghlJ0J74AG7GKY2jrpl6WC0RQO +fMs66HMe5A6Znx3AZvIz/5glOSj4BvyrYlIdR2YpE4iq7gGSLlJFH2zk3msQDjlg +Dxd1af4uFpxo9Qdvtx+LTcp44FkguIYvoMThtEdponaBxTPSw4ZAdXI= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im_key.pem new file mode 100644 index 0000000000..3ba75b5380 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/im_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ3MrI44qDJ1HV28m3 +64fDSAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEJMmQPDYjRL7Xj3a +kdVCihUEggTQPUogB6yfRJrKa7T1GngdDkcLrbTo5IPb30bKoEuCLvvq72+rRSH/ +PgKAMWJRvvEtVj7c/EPeRxryo+m92ljFF4A36xAedBBQKcQGwF0a/Jp7uNsofOrr +ZWa013g3SBYCh75s0+7sW9CJ/TeAb4TwVeWXsQZMzAtYcG7QPXYSd4CDTuVYBhh0 +zfGn6DNggfvNwxPIq1MHyY1wGyfkSp/ILRBR4XQ4hF/BdWV190ol7ewtae2GuREk +gDp0XReYvKXKa5k0J3tdIUwCsGxtnmD9tWeBQpPFNahtcx0Ga7RBxnQyJVsY4naf +20RzT8l0bfCv62nHyLU1afMivT1A9uZAngvZXz2eW2vYsCsFxAOoc/6BcCa5ivV8 +X4iFWa9kQPk1nbslaExK/ZsYKsdkpwX8/g+8iVdHGO/D64C0ohiXdSf5XBe/2EJ4 +bFAUR+Ku6+EhUK4ceysq9hSC4eqCyN2e8FR4YHu48jrwiyPyI9oqGuvNic0aPyyW +gUYfpgI2PP/Q6bO9YwM+2wfpQXcfpQy8i+JOlbd6m8YGafYj3rXGvwHEHOUmhdg6 +5jkA92lNrrYR6gvA+QZnYn2AcM+aToi1mx3eJ1sEzXn0UgQJUcCPDFJeGhhhpK+e +j17vltRo9W61qr1ttQ+y9UQGmNCkLUO20NW/0EFLoFrFzB8qhIX/CjA1mPIllaiG +R8Xf/Q1Mdhe/ZbQ/ufc4VuM3p7pf3udYyGAGY+/TadIECXd6ZEllzCOXQfoO0T5o +Sb6rvW2G1LulZ797EAAdLpPjinIHv/snEhLBSyYZUN+XTIpTdG+zxFE/wCyG4ML3 +1GHNmd/OfngRpkqb9rB1K2xCBvnZaJK9t1G799EGLF/EIK9Tc24O3bTcFoA2wKPh +NVmHEHXad2iZuQO8gQvQCezgwHKyk4Z4B5Klmd1uG0nMB6c1q5VpW3x3cgQs72uz +/X/vbdrPitP5fZNb3DrpoIOGFd8HeyMUryoebHducCj6W19xkaHATbyLdnd3Dl1i +fzLPzPnfDv9XyPjizZjyg3MCM9TaJ8YY+zry0x4VwadYM3XZfPGCLUxlEFlM0I9T +N+52ahoWh1U/6E6lr/mQcpKa+BJ/caU5L1X3j1cVU3KKtjz9FJVida/lbZgJS7tJ +aWEFCjq95ihfireDuoOfLDIiKfFU0yQd5q45dEgyuoWsHC1qt4iM+zwS+1fUmrQV +m49S3fm8nsaPrSc2bVp/F8KKi0eeAhfzXICtwVcTTHAoVz3XREbWQ0BpLZxWIkvk +DRK2BCa1HLbtOwwZ/tmgcmOgVdwvdXAUnlXN2ZA0KwfKDY3v0pvwzEnatSU7DH+T +K28EqBDnPY4mrelYaGT3qRZo7R4itH2fvC7M/hwzaX8mR0lyMkJADzOleWHC288W +Ku2uV4LGo0gtenICTdogcUctK8AgUAz4qF8oa8Xij0ZaB2ncYL837ZCOYiguHFQs +LrbsO6zB3wyi00PcozmjNUjgsni51ku9ftLpneR5t6d3dF6jkZlggXRRiGmbVNpb +OHkLyGEt4kryQGzw8Y+uf11Zoffzr0UjzTnTKpPHniqjUSb5YCKEG2erwb+HN0D/ +27AXRMlMACYOwoX7krgGcGrYeJJa3h9Y442TNMtMMpd3yJKOMr8OEaw= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root1_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root1_key.pem new file mode 100644 index 0000000000..d9ccb48aa6 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root1_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ7mZEb+MK7wa9E8ok +SxehSwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEGrZdz25wy5HU0A4 +bclAxksEggTQ9jQnkb43ajoc6GN/UzxdF4rnlXQZ8xa7FoHebExryZfJ2jZgg+CA +sSVR6tBk0d3aMJL5urA/fgkSS8CV1cAiI34rsTfKeI+zutYYuQkIh/ihM5WNd2hZ +HQFIlKBHK1W9ZbkadwYCdXMJ1cIsiJLvzST1aYZ7MACOtWkd9L+oYk2gLn+efqz7 +ruJR+a7CWuxbGddK6kl2Y2jMJKBJjdCnSuiQPppQZfVUrvCB9f6PJ+tpkIy94Gig +Zlqojrbi75u81yvbLfbaNnp0Qr1+urhYjHlNWAPY1s6oLfA+aj7w4daj8AA1tJ8w +BwiBx5rCeDxszXQut0XbQHlI1u1U+hR7TgaUWMo9JrY+oFDJd9RHgCx1lVGc46C7 +PGZ5dpynkhR2bQvqpvco60XWmnsXRM9N2zo1kS/4vsXuvpa1epYvHiIgXXsF1E2i +xt0Sy8Sndu7AyvuOkBSQbeM52Mt5kw/6i+ZLRdu1STdwKvEx/PDcBSEGlhro7rly +UtbCPDKjwFL9jjQ090/qalz2PlPB6bbKkhF2WVjJAy9eggn/4xQnf3qY/wSli8tO +6JfBzlgTNq9X39uB5tum69XsL7yIBhQiJ0rE9M8mYWacKoiNVuEkB9W3/IeUQJh5 +WzbJ9yqCsKJLJWZz11V59Ryk1KXEmiZa7OUvAG79eweQBkbMAOWgJyBexOd4drvb +WsUQuo0jtn1S3Hzb63Q7rr6cbf2wQUHUwprS/o/HLUXzPbfII3uuDtVLy9cJPBAe +KS8SJA4L6tiHKH0Am80oL8Oz+uA18c2KuNbEQrENtlDK64lco8LqLvu6PW5uYWnX +QldfpxHsapyuAHQ5oM9GDah4TCMeK3iVkY8bjPyNHJqzxt3O3Prvxle/UDwmTvgZ +ziBk377yjr4QAqyYLMaVtgBK3BVKfjF8YTgVilXcMrLMeitfPIRb5MhgdzeCbrMv +uUse+wjI+wyFWRCMxFptwFwsH80aSmN6sCJJdkz9Uo7aYwJ/i+vSmkVLWCQ0gE2c +W5rlTmwvQ/NpaDrxdY5sXkgqeXkg9giZvBB5pxXyJ44ixEl+Y0nZZ2eSAsFKr1Hc +VfnVmxDkS09cnEn0Tw/+h0EH3S87HYh36/rqNnvvy+daKxcAModFu8Sp9F3NVqe0 +XyDnK9fzA3vyTwfRJWHUPiTug9HmonLwmMV+74OjphKfUbCJwDXwNJjNepb1c7c8 +BWguot8Mvgo+hJweUqerLhNwQX4Z8Viip4o6rS18rp1JY2hiWA1tE+XxvwnoVI78 +ddMtZSkKLaNYuSVjNdCoV2Ei9xsDkdhlr3grXvg8LPgyuuTJlbdWdkPQ2c90C6WT +Uq6U829/L0DLWmW7v9hLOXLPlPdHtGOJbFIRHdpZO/ny9Rj/6LdSWq0vqDB0ThxW +8jprU6QIHjBZYsZQ05H8lD2CRdGT1mLyuF2rQfFsBE1T6lakX0CBQrfdNMGEER5l +QnJW6LCpRD190aCcIEI5wuGUTOC2l6xeJYGfay3caPGyw1JqXYRmf31g+9ZkGfP2 +qvGIX3juH3f20FJgjcSaMswR+aocBwOquMLjs4/3zfD/2lxDG5hR2iTtOmrSZ0xP +eIVSfXvTLvKGIS1W/zP2J59ihYI5EriDITo14jXbU6FDIE+mvcbvoak= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root2_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root2_key.pem new file mode 100644 index 0000000000..27e854f5d2 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root2_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQYj28FmoP0nWIBz+i +uMFayAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEA73W2+mCDYGMx0G +p26ZZFMEggTQxeiKLrihK8CpL9bDBzh4n5BFbvQLGo8TnU2qzYoHT0k+FcGLCbH4 +ZxoH2Km4AOCFWic5YFRqjneLDFfhSnX+RJndpPJ5jCafGaoZs0lHzOwhLugAFn0K +q70Xcb5xJ67vtschGxvw+vwLyAlzZxpOR1IaBDP9io0yHT7ZoOTSfykgbUis0uNw +NnrUNcaIhmJufaeOYbEdPQ8Z8ql/rYhG8qyJlkQ/LFuMreMeGOHah3/rm1aF1F5/ +GW8QYaXbL3fJpChDtYKjDAOS8hvXAv5Fs469XVGtPsTnEnyRxwT/dV42TQl+Wmag +ZjccPNs6QoHijdMCMCBCAux1J8vcukORU9oxPAyKnfN/DZHF5kMAJYhKyVV83ADR +X+tCKT98U9RX/YW0a8Ep7wtBQ5rPqXZewqK6SreGVdtuYiYeGYO+DOfUhaGDDun7 +eobE1zuLO+vAu0+8P71mrMnS7et8rEbMqkkpSHPPij71Y20wwAgNLuX/vZCc98gJ +mc9QqaRtOsiYU0AfKNR3PpCQvHGVaQp9D9wfbjvs4VHJ2qAwDsgzaO7O5ejKGPzS +y+otnzJvcAp9F4Wn7c/1lOkUKztftAeFQ5ITuJlp4Qut/kgapps6FlWyUqKJRApb +Sw3KTD7Ft7HtnVSdg/V9cNsRUFZuC4ECLZtG7FouOTUDxg0ZpQKNq3Fj2TLeu9VP +zxq5PQxXGeMrLXdt7bZ9wT5iBzs2tHTElWAw48bkxjxXLB3vh+RiD15/7YRVGaPm +8hmd4yKcJ/xyMTNPWhfGy+55wxheRhUp/GCt6KCnOzdWpOJ7BtJowcThX80eQ99D +ZOYBdDMbw1OAFjmO+RCRW16+vY6b7YSFhyt/6+Qh7ei1CitatUccSXvJsTpSgUBi +2eqrmqTzof0NjbVj1y12ILADU4vgQ2anxfEvq0pQfzqVjqrgOtUluxmJJG9uc601 +rLQKXo4ZnV+q8NZQddSvDomUez5P8x6Ag3iJAm+fXO1GTBxaxEXgIt5oPZIecB0J +swgqwZGUD/YtBDzpvzJVKw6oPrWuA6NAh+XBdEO85hyZ5BY26SGJUx5VJHerwqt3 +q8qBmlmWZzCKzNVpEyRGUB8JWBvDZ2g8qfWGF7w8WlCuTNdPFuXIvtj8g7tknVtD +3KoJ5amjqyN+4eCgGVssPX8R+7K3vt43vWBZ+FJV4bRerBKG9ug4GHh1V1yJagvo +NmP/De+a81p/Ewge/MQVFCKYwfLrHuuuHiXgMdCvbeic2iyIIjfvqeLfeD3YD9SM +z6qWS5JSjTFgWvgU338E1OAieG4Z+bbrlqt9RPHE98FjJDUjHGRs/yT4jOxp4/QG +3/NRciUDJXRMYfoyoNSdBgXlxkxBcxEyKFi7QKrKT+ISdypNlj1nNzc5HVgTERoE +jRMz8rdAWR0GvL3otTR5uJVMk2/eZm1Ck5y/fKww+kGiz4ucDCi4nnZVdJ915pyt +PcZIGyFXaBOmbcFuBIniOYFDTz6PM43Wp2zaUerHI8H5QNZVcomgT5uDRhZVf6d7 +L/8ihc533F9XRUOJOiQEb0wPgAOirVuIEm1TK5xRrIABrGiVLlSs4zdsmELQfv31 +XOYcOOEpz2zzvdCBRlWiTqNPOWHCS/Zm/SVCc9M3ddPxS+VADNmw9S8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root_key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root_key.pem new file mode 100644 index 0000000000..3c8d16b9c4 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/root_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQCCEV6O6sip4xlX6V +9cfMcAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEGMdp4t7kRReyjMr +R/DJhnwEggTQCtpkMGabpm+2IipjEdhnw+rXUkNSNFqg7nN5A+zXE9W3V/mPFJdu +/AVCkagFCUM7z5Wx4k4GIfwX0q/S1TDorcDisg9sgGWO5TYwqHCJRffOcFkf9GoJ +TSUABpYyctbpC6gbUhOAG9xCeWkYwhQ5RdIKd4I7xuPFmJm/aYclCNpFx2ymydIc +0lC+OmfrosIMlhCpX7WMB/zwubMUD7NDtxOqzvoE2HOKljfOWGWgbW6I4BGKiU7z +vZV4nJXOpcthK/qqTZbuxZDwzY3ZHYgPh9bUTTRg53jSPi6wQT+DFOjYa+HXco62 +Zsyr8ER9vdnX+GNZCRyY7AYpJZv8aIk5hh7c88/kQSluWiz6twDlSG211eMV6tOW +6N1QyscQoyay8+Ug3XxMpd3KA+rVNNBvmixj8hk6L9Aek3jGbMM+X7EcgZ66z3Q0 +kXuweb4cynaBVpryAQLT0zbUj3J5xdnJmE7+4/8PE4qKw3aZOKfL2+WlrejiUfP9 +lXa6GYhlPL435RdFw/Kv6huJ6vAL1az07G7GysImvkcLWxs4EhsSjxNB6ecGjhG0 +eAqXtMDK7yFweALT2RJSNhlKXiEyvs9Nm+kGDyBrCAqk7GTpp1fXLtKr4Nf9dTKO +6TyqjadT0hJLUVnoTxX+L8peYm2JVSeS/oCi0Im9bq1zW6MXQ74mDeSdLXWfXJjA +J9dA+CojSH9i07E/yalQxtA4nED74XmOSNK8Y8NSuZpdrZMvRmpOoWkZzMA46HQL +za0QtVNaMiHfiFV3a7ktbDCNFmAZyXz+L+4qB4V19k8Y13RgMbhDYYkwp5z1Z+Md +875DYb5QTxGDQfuYrCyDMR5TGezJ7QAvBRtN6ytxHJttqCP6pBSOOcyIsJxg5FnV +mjfGf/C7V9pkXne83IG+S9pF7IncTGRmql9QEfd7PMThuUoY16E9HN0ynCYO/x+Z +5quPMukfwh9d2fSNtpFptyXrcHGLOrvh2l4Hxypx6g+WG49q1cyUKoOldloY1o6Z +W2+LoFj1o+lJUoIAADrSTsRUEBazSygz3LevHWA+3nh1ljDfTd3eV02+CNB7xdHe +kpt8WU7yrA2a/MOgsfcUvZOaBwgDqf0mzGuPmZITjTXJzTrWoMlJKaMpw+1lPSnS +7k1RRs6KGso1E7S1JIgHeo0DZgP95+IoFL5APGwBZHX3w4LHtciR0spIVQ0lI9Um +WtDYHugnfR+j4GRmpnC9WUCBv+kRgsZxBzcPd53NfIVWu/1Vk0GH6qcCNngGwlLn +SJZncwG5bZj5IH82dNzZrtnahxLJ4n72aU3SFevxu/9KokB39doJYQU9Ifud2YwM +kYWIhDBtukpE4FWdcO7dt4Xwh9ThFttTG4VAkLNYFHOg2OINW2WmoPInD/HnYkik +qTRF1q4ItJHY9I8Tj0wTKvtqCoO1HjhVgkWdk7+BgEOII19V7OSFOeTvG+6hmCSj +WBSA+bth2RlsjCgxLx8YshbctBFhBJ/Vqm08InjRTCYmqFJm7WdUtssfZWCog63f +3TJBwwq8TPQIle8gTAsuPPjqnm+7mjzLVe6a3MY36rNB55zsxbkc9BysDKRMLDOh +0EXYDWgavFGlaycsK5HohOovpwtR9YFJ/QWHGONb3ABF48yQHq3IogE= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign-key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign-key.pem new file mode 100644 index 0000000000..ca58df688f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ19Lc6P09f69/8SfZ +XiijZgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEFDB/s9gDONS6aOH +lX2oEnEEggTQDm6xQuhgWpBClEy0wjynzXFvQvEL+IQxBauz81wr0wQvlHiDgBS/ +BDtojvYNXbaNtpt8c5vV41twVtBu0JUCfL17EMpOUq0XAYQhEWul+DcMGXy+g9A9 +WMaXBUTz96KLUk1n9B0mwZvcttNA5mq0bxRL/wc3lPSKOMDVrxUruu7et1dzC8jU +y/K5W7clmivxwLUiRrkMYVWlesDQSa+TqpdcA/K0vJXfMF6jY5ssNRhcs2EWzQwo +27U5EVTaTV3c32y+UgYAaOnmy7vlw0rhc8AR5vbUHCSKa4UTRLzlJbk47tYW/rKM +YvjeV+GZqaInkQkCoF81GoR3UF/4QQVkT0rYQEUtvSsz24MYU+irT0KBdvkxj7ah +gYSFcDXlPGBuHot8+ZwB7ofARai/O41vLnqMsLogKK9KiuIxvwJlSE1yGtZMmd/w +oJ+qpH0dY+gUCN+Cwcd9z7vyRwPfmh8e22aO97UKoA3X+wtFYt7jUycZHFe85FLW +e8N1/Ly5P2E5aSdku6x07ye596RYEi8kw+KrAL1NCSOfiejaKxpzcHaO7C6C5SGq +dTDVpi4moH5GOG2ksqlL928EwmLklMoFMgMs0CnBcKVAHOdUleIA87blVTFh8U3r +8CSStkohnhPHPgptwoXppl4wbACiZ257jDgo24GEWx82Kdaff4KReZZtlwEUUAa4 +jd+OGbAClAYJW6DGYKBcoXXYCs8Kuaoyze3YNozAXl2n9W00FS/mAG3GTK6HbzEz +7KnrpgPNWQh/jjm9YnS02pTy1g2Gk2LW0CV1HxMkTOBRRdMM4ZZejLQPPftouYnv +ZebDCUUC8fV9vEowJ0FDqgcI2k640x3xDJwtQee3GUDPtietyYHV2QvsStcVbDdg +pGaMBYnbppafyJrh5nUT8Lyvolq3G1ejd1GEFatLuFxXTCUbJ+NKwl1dC0xaexVs +439ExdWlzGwkqSMEvyB9cV79ZWaYVtIf/SpGquO0ywTu/uU8FAossWuX907OVQtz +3LOIhGDcYrpZUqeK/gc8FrOjA27UwI9/+NGaLE18On1EkYIqnN2ncguPhZrGXwGR +dfuGgmpJxSSm55Wd4WvVmLYgX0xIUKVAUv6nl8oMPOh8GRAycFRAW50yNUWjriuw +RCGO2cWBeLQodtZ1G9+5oWq5T6KBsbeFjagUONVWo8aZX4cULLZsUD5Ay3yRLdnd +ACGI0bJ1HtRfHX6hMlXj7VCosaA/4IpjSUg5yOry5bzYQ5aOyWiLGY+EV9zM5Wl5 +/tfvGFGHVi1T6yjLlHytriq9xhbWdwA+D6jEGv24c05zQUoOsNUGUncEuonx4eBN +oSVmv5TIMxK/umqnZ6LrUMxDLi+B/CWnN/sNskZP4QRKnG56/KMVk9XdmYT1ql4m +Q0yTTsy9TbXmOkIkUmm+XTRPuLH/NFjX4+zE0O2jf4PvtzYyEzHCiA0uWwEq6zrv +gsuWsCr1Y588qK6W/VC9zgfqgh/2HhSnmv/uNi5bNqnj82m3eEyrlmp4b9wtRR3k +bgoq7PyOHmP2Bj4wdUQe2+QOMLySBJm3odA7NWkBeCaq6M3ZqdHf56q/nKVReUlS +9THEOrp3W81kStFZ0ueilyviJalJq575FAQntnlFy1wgBqBmk0/0qaU= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign1-key.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign1-key.pem new file mode 100644 index 0000000000..7f964e00f1 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/keys/sign1-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ8V4UToxZDtvRoYQL +Pb1pmgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEKcpioTRxLTCaZYD +kmawmQcEggTQMbouqjCM9SVo7duYkOE4k7gq8Pfzz0qAsZTacxXF8/KifjDCoalt +5gJa2ULEYXaCEy6x75WfE3R2rpZGPHYvFPZTVCOUo8Kn7KIhTTXipLzfuA84i1Jp +A40DZ2nMS6NOXY68TXG8i6DK01jv2QdgWluYA++pvsI/V8zVHN4xWDd3TXCmUi+W +NFN56fnYyY5nq84fp65GkGepeto6zxJigpDVFDtyDvR2WRxLpiCRdwMBM8Tpb29D +fm//JubpA4W7PgPeP03YfafnH+NT8IA+zGgijwtUlIxzbadj2cdVAulEhpKJxEvR +kzhV2xuTe+PeAOgl/PHBPqgGDP1mSkwLK8yxoA85e3ThvGz/B2y1B1l/QPl8S5KP +semhbnum07U8G0dyoHbz2oUL0dgUQrl+OOjXkVpCXsaaouB2FRSPtmTKGLDuVCbQ +Hl8zPfEsW4AyB5OcbtTDghPE3u3b8NJk7ar9RYNRtCoRhWWg/36LiZAsRUcnPwDg ++P2J2+7VZyz6An2I9QoerpqnCnUJzov9BdUrmOqCv/qQWdqCmvJTs+w/VQznhZXW +382T1VtefR8xQyenEScxAU3mA4ze16ytm1h71Zs1qpMu5lPL/YYqmSJA8Rvon51U +fLuGlSop9WaNucbuVbXjxrGw/FOPvy3dyCit6U1fQ+u9nVN0m21vvBzucMuvfioC +eYI14HeQj/LrJkQPiG0U3gGumiewDUYYUgN0gY1CJxSYYPzwhomWzp1FeW5fbfno +PpI/Ag2ZSBs/bP82AoGadRvURgxcoI7iwdDMBVWY7PqXP8/FCsEKEYWLXyX6rsKQ +4UYMoQD0Wm2dMAmOWM7fiQAissteJHYiiQUapZXBWv7SCP7AUOE8FAYxmMUVHRT3 +2idpUvcCRnOzpI5B5U9J35iJXFZHLDKJjMbrFIgGtz8P4tv1Gn1VLoR0lcqjM2K0 +PNQp5IPvrIzf2ofsqjzrz82UjANtJghEYqcGm9Jfg0axTYGvz0eOIta6zyxvLolm +xx+EloifA4pvW6LiKSs4mMmQTHD9JoUl48U0LEegXRCWXvhjdZblgihEr1auGi03 +i0tAUyeCqw5gNdqSlBGSYrrLEQK7DjI1hdWDJGLI+layqwF5PgCe2njz1CNSNSXW +lAp6uKYFmWpCkstGrS05MpNlSToJpjSkdVUvKBCVg2uXDXhzQRMEPniytmqRadzr +aSymVejJUn45wTGada9/3Q60CHRrukJq764CIeQItBNZxPR5USQWGWaJ+5Yt65Wy +kJ9DhWbcNicpppVnRz+C8m+f9SsiVSOwPRKX141xCUyXV9NRz7i1hUc4VwTJ9uxa +RgwjbwwF7hWOd7TN+Qp2lwrGaHQCKfg5a0lI2T1B8bXDVGRliT6zHKrLBh4t2PPT +0inTCfyG1yrCVssmriJXPwGeEtN2eeNKFgaV0Di1dkT79foHjyZYM0pVCUJtgSNU +iyxpRjG6yD4nUT5np1Lo3lvJpblL638NWvRqmeGRG42WyjoKeP5iAs2kTunX4hlG +WFOwSvAqDqLb0dj2P9sMQlEkWKQkLiPFXdyrHVwgmYz4JuiRk7kihvPmLJFkrn2c +fy5vEFoWPiByYBRTsrfYEvgDvny7Gkmx4CFDxNOeRAk4BR93dPfNcqQ= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram small.svg b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram small.svg new file mode 100644 index 0000000000..2707cf19b7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram small.svg @@ -0,0 +1,4 @@ + + + +
r1
r2
ca3




ca2




ca5
ca4
ca2b
ca2a
ca3b
ca3a
ca1
sign
\ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram.svg b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram.svg new file mode 100644 index 0000000000..e769f93b99 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/pathDiagram.svg @@ -0,0 +1,4 @@ + + + +
r1
r2
ca3




ca2




ca5
ca4
ca2b
ca2a
ca3b
ca3a
ca1
sign
\ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r1.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r1.cert.pem new file mode 100644 index 0000000000..c8859f0583 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r1.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMjyEJrJXjrEjCr4AFsjXFfbxXr8uvCgYucpYOjm +9Gau338C0Tpr8KSP/HwgyJ9lA+J3nPOEkgdGnqWRV6TIguSLJB3uZoRvVjtT6Nez +ddxvR33+yVFV9skRoc0QOHnh+IXNVeELsf9asV5cg6ExuvZY/VJ/6m87TfurFl3d +s0s4sOW7D6dRis07DbIYgGva8hiaeuR0q3qHFIjISE1Zzmv1MRRZnSqHBZeUyOO+ +NoauZhul9qn/VeYhyIFqfmoJyhTRq/3oMvvdRu0jFeq4pk/iEYjw2V83enqxzTWb +m6fkwiRhrO5dBBTOrOW71I3W/9Rlzt4KegBRI7amT2A6+gkCAwEAAaNjMGEwHQYD +VR0OBBYEFAom3riNF+VYHa4nhEt7UvSFA2FSMB8GA1UdIwQYMBaAFAom3riNF+VY +Ha4nhEt7UvSFA2FSMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCQQsjsPf1mWSY5OLmB4uJ/sgCkEKBRhIwhHQbLXk2I +Fhb13iAPp8G7PqJoo9ytqbHTbmIbTqulTqdo/byL15UmQ/4CZ2auy/YJx9pJjg+C +9LO3TCulMgcNaCpN3qQ+0vEGTYXGTkSI+gvKlGpZKEOnqLZbLex1BagRAAdRaGEk +Tmbu3aClAHe9U2mYAekyyvTAPz34kNhqHvgCnRRM1sGKTTuFcoHx6UdqY5v/nJwu +gcfYh2MV7kxFTKuwiw6GkwM5/LVk+ejvQ1Qq7u204i8cj8tEraE8JZM/VufhCHvw +HkdydoTDdfACf0SR80L68EsUGW9kUVzDj/0J8FOp/v/R +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r2.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r2.cert.pem new file mode 100644 index 0000000000..ee9ee531e7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/r2.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKMsPvMnIxLl+iDtnsEXos2oORFA4zz/0wU0XvWK +hbLDC1Oj+mpY7mO+B0+NWN9LeBAe8V7QtV0rBAFlJLk7M4ettdmbnRJp66O1eZrj +psyJZ/Hk6ijWDX6LVLllkuHZKFyEYCaRSHbh6oZnoyLcbH2S8/Aa0D2pIsDPGBzT +0V9LbDaLpFi/sthC1AECFsAEC/rJU5M6hlBVEMnU3IsrpoCdsbUC6glYRKZX0z+D +tRunRwMoOtk/HnrhVp4pJN9w4sxHZCzkJdPiV7gI/Oz0Ej2NsLJhcNH0vgx9Pnyl +7OHEFkR3jPFBkgyVPP5WICBwWbqie4LJcvaGIzEXN9jNZ10CAwEAAaNjMGEwHQYD +VR0OBBYEFCFCsD3G8GTzvQWjPq1MrcWepFTDMB8GA1UdIwQYMBaAFCFCsD3G8GTz +vQWjPq1MrcWepFTDMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCXfbF3sZ2ptsQcK8lL1x/07LJJTSLpGuR5QV/etEhB +KLksauT991sbrYRsArSPuqT8LOsD1w4m7CFyx2FUeKqdff5w6ksULoqsVJ1yMGGy +kBEPT850Rxnnmu3FrVl/A1XO8lNEszNIUhPC3gjHHndhVBSFho+3+CDWQBjP5t55 +cvghtv2yqDVm6Izyxx7p+Sn6cOwvwy9RDUb2IET7KZRj7iPRpajUv1fN6SF+/Wd6 +ZaApm+eLs93xIqujFRTzleZKBkXUT5xHudfVC63J/YpeNpi38rx6hxjrw/ABantY +fgawtinmHBrmqNlmahsxrQWXKXBRqChCyzCZg/h92yFb +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/sign.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/sign.cert.pem new file mode 100644 index 0000000000..7bc1364758 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/crossSigned/sign.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUxMCAXDTAwMDEwMTAwMDAwMFoYDzI0MDAw +MTAxMDAwMDAwWjBNMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxFjAUBgNVBAMMDWlUZXh0VGVzdFNpZ24wggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7qDz8iE8SXtjzHotV726Cuo2B0n4Z +AxQCpppVeWhOuDhYNHHW+Ng2MyARH3K9NAeo4hYKyctWHBqwd55KpPdTZQg0k+uY +R6zlbze/fyrbU1s6bUKVPnpS7GzA6TpoZI/9CggWjQasxXLnPYKrgflexAdgVEof +GJ1qMRaOvNkJeUTmBQJsbm2rWvm3hG+uDxh1DjVr1tqczFN5Dar1nPPEn7KC6M/9 +PhuZlfwyO+lNKwQkjN7mz+qWzqODQ9VrqUJYwMpg9/NajQ+2l/mHSpSKkTic9xRH +6K8Lm73RRMOGoEzuKAtY5cCVxx86JbrG0/zl7jC+hmI6wsiFXinKWGitAgMBAAGj +UjBQMB0GA1UdDgQWBBTniUIgfjfakIVH5JmRgL2lYwNPGDAfBgNVHSMEGDAWgBQu +CEK2+b+3QbbgTOTGzJAOcs431DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQEL +BQADggEBABVtkPlV9/TM1z8B7c/lH4rcFJAz9+wiXu+eHPqTtPmP6RI6vMm4QqoW +9wUCnH/6VtKF7h3jzDqANg2Mfd+BpnFstWVYUAk9Uc1ucwKJOMr4++/xN4PnvG77 +uLvm33MOe+TeLh/KIDDyteSGo8RAJxeUroAksdfn2LE3DzohWh+ViGbrLrucJmCZ +t2sUDVxmDo3li+0eIZ1CpDTOV2H05DLI2Z36XppoHghsACk4GEjCUz1JVAHDJA8x +h1T7FRVW2SAP2Suqf42SVN1XhrKL2YwPUOR+F5ZZg+wH7oyr6g8VvA1TqoPDmWXx +ntG+D1v6mirFW/+tNlJMkQSRIhb1lSQ= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/certs/ts_mobile_eidas_qca_g2.p7c b/sign/src/test/resources/com/itextpdf/signatures/certs/ts_mobile_eidas_qca_g2.p7c new file mode 100644 index 0000000000..4b48ea1816 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/certs/ts_mobile_eidas_qca_g2.p7c @@ -0,0 +1,60 @@ +-----BEGIN PKCS7----- +MIIKxwYJKoZIhvcNAQcCoIIKuDCCCrQCAQExADALBgkqhkiG9w0BBwGgggqcMIIF +zzCCA7egAwIBAgIUTuBrwDTFrOYZWKf4piw4MVf29w0wDQYJKoZIhvcNAQELBQAw +gYQxCzAJBgNVBAYTAlJPMRgwFgYDVQQKDA9UcmFucyBTcGVkIFMuQS4xFzAVBgNV +BGEMDlZBVFJPLTEyNDU4OTI0MSIwIAYDVQQLDBlUcmFucyBTcGVkIFRydXN0IFNl +cnZpY2VzMR4wHAYDVQQDDBVUcmFucyBTcGVkIFJvb3QgQ0EgRzMwHhcNMjMxMDMx +MjAyNjQ4WhcNMjYxMTA2MjAyNjQ3WjByMQswCQYDVQQGEwJSTzEXMBUGA1UECgwO +VHJhbnMgU3BlZCBTUkwxITAfBgNVBAsMGEluZGl2aWR1YWwgU3Vic2NyaWJlciBD +QTEnMCUGA1UEAwweVHJhbnMgU3BlZCBNb2JpbGUgZUlEQVMgUUNBIEcyMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3BHY3CN+UsqMX6OWd35+0AzS7bBV +sSWHjS98sRj4kRAJ7tt5HkxgmSBJG/yNmhZqa7K5VAb3sjfbH4x+NWKxzHUD+8pK +SaeJQplaIbnPboqYXHwP88pn+B3QL7o8ZCbJXMGgQtWFvE6g0GgpbIOVNXw+nSxx +hSZy6r760nxcWc24q657BGtkicR1ve2FrJbFsafRHKeZzMcuYQm852Ef9mLvQ3Db +VKHwfE7dzr8BnvvX8gAwYV0HXMHdPAGVhbnU3eH0BTtky7nEQCxf7EULGBlIUn6s +pgy9uRyCvNyeSQeX1n5BMCZ7bYHZWllRNnxjWGM9fhAEi2MMGDPW0CgKlQIDAQAB +o4IBSDCCAUQwEgYDVR0TAQH/BAgwBgEB/wIBADAfBgNVHSMEGDAWgBRzwM8w84Tu +9WsQH3OvAYPGCLfkczBKBggrBgEFBQcBAQQ+MDwwOgYIKwYBBQUHMAKGLmh0dHA6 +Ly93d3cudHJhbnNzcGVkLnJvL2NhY2VydHMvdHNfcm9vdF9nMy5wN2MwVQYDVR0g +BE4wTDAJBgcEAIvsQAECMD8GCysGAQQBgrgdBAEBMDAwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cudHJhbnNzcGVkLnJvL3JlcG9zaXRvcnkwOwYDVR0fBDQwMjAwoC6g +LIYqaHR0cDovL3d3dy50cmFuc3NwZWQucm8vY3JsL3RzX3Jvb3RfZzMuY3JsMB0G +A1UdDgQWBBQdUE5FiyNAFNVrF3oX1lo2689N/TAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggIBADLk/sqAALwCA6a5JwTWeIwl2W1W7EDkk+DPhZl/sKGO +PBdL+tncIAYZedRxizGBHW49mnqYZ5i7WIwQBZ85MkiPHArztycB1t6CDms9wZT3 +pJzO6DwEv0xh2yvn2ss/FO6gegAehHGYW7SrIPdRP5cj+PpSHiMG0rucNLQCPNCj +EN3OYRFQhQEJDi474gOrm95x1HqRgC6bSWwV3WGvqv/DrImTLQpdEwdiKSFIQE6A +l1NHHONC+4N1PkQVdn059BZYmBRPr6NiHHkfQTcSJfc8I0WvMTa9Tt3bTeSSQbjc +BlTRplG0Ptt+c6DQuhj/ppB31D1kjTIXW8jmlrU7eyFxK2QV2S6XnXEqXgX+ZgIS +wUxCArivYNxQN07CpJbVYK+e5DzSKyMPzhNyR1rfh/orELO0DyWDDRPdrUNoAI6X +BVV8puwzOPm7D/nNZs47V6lYoASkaIRy+4oZ2zN/iKjzeZhzjTS78r2zsYtBXZ2t +z/rJxu3MhWfDAdtgDGpO7OYYuZtYEro9ZQvreRh+I6vRU09v9D6Vn6VLV34ZVXE2 +9x9zD2omsMIvRfa3rs6sIHXgN4EOKeV4aLEuU06wNx7VBAAB5JBq6jSEYFa/pKhj +6E3zZBU0hLDssT05LyHfdEb1A6mTkpyfL/PFDIzxBBJ0+tWGFESbIgW5+ziCQWKw +MIIExTCCA62gAwIBAgIKYR5uTAAAAAAABzANBgkqhkiG9w0BAQsFADBeMQswCQYD +VQQGEwJSTzEXMBUGA1UEChMOVHJhbnMgU3BlZCBTUkwxFjAUBgNVBAsTDVRyYW5z +IFNwZWQgQ0ExHjAcBgNVBAMTFVRyYW5zIFNwZWQgUm9vdCBDQSBHMjAeFw0xNzAz +MTUxNDQ3MzVaFw0yNzAzMTUxNDU3MzVaMHIxCzAJBgNVBAYTAlJPMRcwFQYDVQQK +Ew5UcmFucyBTcGVkIFNSTDEhMB8GA1UECxMYSW5kaXZpZHVhbCBTdWJzY3JpYmVy +IENBMScwJQYDVQQDEx5UcmFucyBTcGVkIE1vYmlsZSBlSURBUyBRQ0EgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDcEdjcI35Syoxfo5Z3fn7QDNLt +sFWxJYeNL3yxGPiREAnu23keTGCZIEkb/I2aFmprsrlUBveyN9sfjH41YrHMdQP7 +ykpJp4lCmVohuc9uiphcfA/zymf4HdAvujxkJslcwaBC1YW8TqDQaClsg5U1fD6d +LHGFJnLqvvrSfFxZzbirrnsEa2SJxHW97YWslsWxp9Ecp5nMxy5hCbznYR/2Yu9D +cNtUofB8Tt3OvwGe+9fyADBhXQdcwd08AZWFudTd4fQFO2TLucRALF/sRQsYGUhS +fqymDL25HIK83J5JB5fWfkEwJnttgdlaWVE2fGNYYz1+EASLYwwYM9bQKAqVAgMB +AAGjggFvMIIBazAdBgNVHQ4EFgQUHVBORYsjQBTVaxd6F9ZaNuvPTf0wHwYDVR0j +BBgwFoAUpAiP4TJEvj/KXNEN+ZibVAZk/rkwOwYDVR0fBDQwMjAwoC6gLIYqaHR0 +cDovL3d3dy50cmFuc3NwZWQucm8vY3JsL3RzX3Jvb3RfZzIuY3JsMHEGCCsGAQUF +BwEBBGUwYzA6BggrBgEFBQcwAoYuaHR0cDovL3d3dy50cmFuc3NwZWQucm8vY2Fj +ZXJ0cy90c19yb290X2cyLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudHJh +bnNzcGVkLnJvLzBVBgNVHSAETjBMMAkGBwQAi+xAAQIwPwYLKwYBBAGCuB0EAQEw +MDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy50cmFuc3NwZWQucm8vcmVwb3NpdG9y +eTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0B +AQsFAAOCAQEAp4oxlc1U5lzbHtf1eDPQvO9jQGkNhxhyaQIeLaXXtFWEAtegbmuq +Z1g/q4iUb3XOfXSr4fV8DEuw/DuzKirOFmSOzytBYbuWPh5+uV47Gw9EpfPLqRrY +Qr0Xnl68AX0I3t/u1caIwrYEewwgEr3tlBUV2QFVvJauvMDouT8rb5yxK/F6r+gt +m7N3UjJWWYJIklfjnDWvry/SK0tzIBSOVe0TwyPB7EtA3uDXbVgiskvXU2ZUUwJJ +qLkfl+QUBN0ZYZFuMHOGYYLi9jeVg3mCeGrDvauENHwfqXTJrIXMRTDebPWScuff +kHLiQxkjfrOEV3/ZVa83GF2PaLtSkMUYXjEA +-----END PKCS7----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/font/FreeSans.ttf b/sign/src/test/resources/com/itextpdf/signatures/font/FreeSans.ttf index 4b06bd7822..6de62ebf67 100644 Binary files a/sign/src/test/resources/com/itextpdf/signatures/font/FreeSans.ttf and b/sign/src/test/resources/com/itextpdf/signatures/font/FreeSans.ttf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/font/GNU General Public License.txt b/sign/src/test/resources/com/itextpdf/signatures/font/GNU General Public License.txt new file mode 100644 index 0000000000..3b6dc96b30 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/font/GNU General Public License.txt @@ -0,0 +1,219 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright © 2007 Free Software Foundation, Inc. + + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + + Preamble + The GNU General Public License is a free, copyleft license for software and other kinds of works. + + The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + + Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and modification follow. + + TERMS AND CONDITIONS + 0. Definitions. + “This License” refers to version 3 of the GNU General Public License. + + “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + + “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + + To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + + A “covered work” means either the unmodified Program or a work based on the Program. + + To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + + To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + + 1. Source Code. + The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + + A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + + The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + + The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + + The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + + The Corresponding Source for a work in source code form is that same work. + + 2. Basic Permissions. + All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + + When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + + 4. Conveying Verbatim Copies. + You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + + 6. Conveying Non-Source Forms. + You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + + A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + + “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + + If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + + The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + + 7. Additional Terms. + “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + + 8. Termination. + You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + + However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + + Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + + 9. Acceptance Not Required for Having Copies. + You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + + An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + + 11. Patents. + A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + + A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + + In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + + If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + + A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + + 14. Revised Versions of this License. + The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + + Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + + 15. Disclaimer of Warranty. + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + + You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + + The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/font/NOTICE.txt b/sign/src/test/resources/com/itextpdf/signatures/font/NOTICE.txt new file mode 100644 index 0000000000..187c5fc9a0 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/font/NOTICE.txt @@ -0,0 +1,3 @@ +This software uses the following test resources under the following licenses: + +FreeSans.ttf | GPL license | GNU General Public License.txt | Based on "https://savannah.gnu.org/projects/freefont" (28.01.2026) \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedFieldWithDAEntry.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedFieldWithDAEntry.pdf new file mode 100644 index 0000000000..8c68172cb3 Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedFieldWithDAEntry.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedTwiceDocWithDAEntry.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedTwiceDocWithDAEntry.pdf new file mode 100644 index 0000000000..ce8b81c4bd Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/cmp_signedTwiceDocWithDAEntry.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signatureFieldWithDAEntry.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signatureFieldWithDAEntry.pdf new file mode 100644 index 0000000000..e5d045f4bd Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signatureFieldWithDAEntry.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signedOnceDocWithDAEntry.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signedOnceDocWithDAEntry.pdf new file mode 100644 index 0000000000..4e6350ec22 Binary files /dev/null and b/sign/src/test/resources/com/itextpdf/signatures/sign/AnnotationsSigningTest/signedOnceDocWithDAEntry.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_signPdfCades.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_signPdfCades.pdf index 4b1bb4354b..05ffc2dd0a 100644 Binary files a/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_signPdfCades.pdf and b/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_signPdfCades.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_simpleSignature.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_simpleSignature.pdf index ab9cbb6426..ac13dd762f 100644 Binary files a/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_simpleSignature.pdf and b/sign/src/test/resources/com/itextpdf/signatures/sign/PdfASigningTest/cmp_simpleSignature.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/sign/SignedAppearanceTextTest/cmp_defaultSignedPDFAAppearanceTextTest.pdf b/sign/src/test/resources/com/itextpdf/signatures/sign/SignedAppearanceTextTest/cmp_defaultSignedPDFAAppearanceTextTest.pdf index abf06f06d8..d69953e8b1 100644 Binary files a/sign/src/test/resources/com/itextpdf/signatures/sign/SignedAppearanceTextTest/cmp_defaultSignedPDFAAppearanceTextTest.pdf and b/sign/src/test/resources/com/itextpdf/signatures/sign/SignedAppearanceTextTest/cmp_defaultSignedPDFAAppearanceTextTest.pdf differ diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca1.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca1.cert.pem new file mode 100644 index 0000000000..8848c26e47 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca1.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCMWxqTOU295HIjOZGJ +RfwYrIMsVST5paF6jj3pTR+XkMmAA78cqcpy8Z6/kiIIxFoU88zoxgHlCyuy66+Z +xQSZcOlv6Hlu0qGoLSOYDBhZpTq8YKBbkIaBLK0LAdsLr+w2ZRWnCqykkjiDOqJ9 +CI+RyL5Mpx7ewGLDbaFhAw3cB+i849Q14mef/+LZ55uHBiz3BTIDxOaMkkyQBulX +0DkCZ1bjxsVpM7UtHf9/gGg8GuCxG253qA6JNBbI3GixtJVFekCafv3QWttRAyhp +VQOJIf9D1Natr66TYpZFV9t40zcM1B6wPJUSKNL91gxsKqYi0LkyZBabhBqLRG/1 +3GShAgMBAAGjUjBQMB0GA1UdDgQWBBQuCEK2+b+3QbbgTOTGzJAOcs431DAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBABiBpRdlRJ/OQOJ3g/ZLj5E1FlYHQOzGUkyrryiaUiEI +7v1IjZU1/DHlDdUQ3tfEFZ+/n5fZMpwvZMUxqIOuXLkEBx3PQfqN/T3tbDmBN4SC +c5mKSK7xbrI3NU8m/ftuwCqFPDws91y2TnJ9HIifd5/szkJGNOhKujObZDysU9Lr +Rk9wKGFfDzLRmB5/4nzw3uyqzFBd1d+AhabwCOyuI2JnTKcfnA2QWHbO8WewdB6J +4PYHilWm7ERXmmwfdiHjk3fmIneRlz0c3JcwI56u4AEkuEIOwxGk8tucE+oG38nh +y952eJbtohXU98gZBfsCU0yomeje8qT49w+u57Ol0L0= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2a.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2a.cert.pem new file mode 100644 index 0000000000..450d3c0442 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2a.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBSRB5C3zKv78hw1z4dh6rWPe+i2XzAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAH7cnJrNMxT4laRWYlWIiqW/cRLiItX7Ec0cPwGBN4Hb +Vjb3Nwdtvd8hJt2nLnLV2p9FN0jXAg0rRFeKohGtdnhejaVH+4oVrq5vyaPinRNv +J6CyM1nztSQIwC8Z6XfsveiXFAG9uFLcgBnDVNpK9Vy1mWqdv1EBIn1MZNmf+/62 +N2DRoiQbj0Ualgl3vuodrDzv1X+26NlmJ7da3mAPpMA0DGzIgEz2WzQewjhYLjbA +uZJbRj4vq34eEXZglKqk3Qa2HungWlufzordYgyM45ei0hvpzOjJy2AFZwhOkIUX +Ac0XdyWr6p759zjWk/jNPpCjT9K/IXJ3336TgX+Gzco= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2b.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2b.cert.pem new file mode 100644 index 0000000000..6f81ac257e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca2b.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUzMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBQSYUp1y3hT/S6R66CijJYusuPlxjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBADb8KK59Ifr+LH+u+HFszRXBw8ZQXx9eOxfIL6gCi4tQ +PfQSQAUkdbUsD9qzC9pXA8lelWlYBxXbRJXwKyfdAZqqA7Bv6xrKaThVzdUmH8Ot +NUyxze0qNgBH4tglBRS9QWqGSTHDIVc40ZhB+vto0Q2Y/f5m3pYRnrHYNgqaQKU3 +oJAG5zc8lrKKYY7oKUvocrAcAe8/6K5+VrD2bjcNPoIGsUcNCRh/IVsXzfSVq8b+ +wDw0vNPBFhhWabdngRzvWFINTsDCi9jrmLuwUM2gJaFW/nWpvqR9I/Pk9Z+CfCwp +zbYnPhG28ukovOOxyub4cNhCWqkLz/Y0kYvg1KZVArI= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3a.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3a.cert.pem new file mode 100644 index 0000000000..7933cdaccb --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3a.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBR9BevA8ttetnc1FrQ8Lnqje7ruQTAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAIWxbilzPX2nxcGQftvELd7vGVU0QPQYJ+n7dfM564Ay +SlGYjV3u3YCLrQuB2GYKJyqFKEnUV/PvQFjkAB5eNIByAvJs9PCNZlt0SOWv82EN +6QfiP+yZ1ttTKxIi4W9YIMLYNWTvJnZWesuBqNyxvKxJ5+jKubVsuRohwstophv3 +zJIS6UBizLoMxiLNvYFxTQGW18E0SYOKt3FRdyUBkhHz1wZfGutIC4hcPhzlwXhw +F2+uiTwugCUHB9lHTM5dtGcBjbMtD2HFvdjF07lVtcn3HjnRJTDA6vCmAEh4IstG +GvbPk7NduipwuouVD2WxFYbbTJVSdZ+48ECWYqLHdrg= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3b.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3b.cert.pem new file mode 100644 index 0000000000..9216038fd3 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca3b.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAAIhpRfCsvDKLBnztbeBRHMN9bXaHPkndF6xzIkTshP4 +lkf/RW6RaoGs65ucih178ToLnSsd48MwumVtB7plLaAU77N4Xt+ct2YygYhdZl0r +t3+zA3jjfoMJpq1EQ97b+wsWK5M8tmeLyBO6h7f5AEWcPsUwhpkTiDTo87ZyWJ3g +XcF3+JpmbtWOBh2hSb9+tl7OXlR9uqjaYvYcXY7vHVR1+LGzdCnDEsBtFxSNhxkB +SWaL3wypGFqWEFhuOUx9tTqOqGyEqjm3IBRJmntydxzNwoFiL6t0uFgt1hoSzMAn +3iKDop4mIObXmog5lDX7tBWNGitKijZ6zgZ1j72fVJA= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca4.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca4.cert.pem new file mode 100644 index 0000000000..72065cf67f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca4.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDw7LB9HoWuqZuta6izAjXbnO5cw +VmD4dgc7tWGdNnkzcOqk4Fm7sViK5DKd2js/6ZlxiDaPv8cRs2vMYOEkKMTbuO/5 +UG3YvQJHVNwY2C7nwUv2NSx1zcqB3PX9ANmug1kG5c43skZaBEnIpB+rrrncRu0D +OIMHEBJpkqCONFn7Tpi0Y1dcpX1eeIp2tMEtu7ZcgaAOFIrk2kK2DSeKNhEFausC +ve67eFbGL+z/elQugvU2PTfe/trTgqV5rTN7zsAiURRgGCuef5NFfSPfcYgyZQrg +5hMa6jbdK7BxZcpzLLdSHgU3ik0BTET+/N/5zhjs3TMAsEqx9EUbaiLDuwIDAQAB +o1IwUDAdBgNVHQ4EFgQUfQXrwPLbXrZ3NRa0PC56o3u67kEwHwYDVR0jBBgwFoAU +IUKwPcbwZPO9BaM+rUytxZ6kVMMwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCOuLJtAi3Dhei9sQRIOyLueiov5uQs/sLpDj9Crbo96OAgkeDBCnMy +ixkePyNW+LcWeaa3oiRt8jvRconFtbo/0nSA1XfWpKtQS9xslYDMJT9XwzrkLsMK +5kfJnZxiBlLZ94pYdvg+xghtJq9Ib8LENh4Mj3En/Zt+N624mZ3MdWffzcUP+gUu +BDg9wahaKmM5AVhSFnCTuYg7/Et0ALRrJunS65f9yidEOaGx/FgajRvbpuHsbfJo +aqJDWNGA8klu01JAcNqCEvVjVkEfZKnlJuO3i9Ug4I9sYrSag8EQPU5fBAb58yT5 +ePS2ijCf8bkPxCzGhrFTDHNKLqczVxkX +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca5.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca5.cert.pem new file mode 100644 index 0000000000..e6a2b33d4c --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/ca5.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwz3rNxqssSsWxoDMEe/muc50ZLTu +MSSDefkaxOK4wz7dVi4WcpF3ah0EbFU4vuPeuY7g2iloMJ8W5vdlzCGYqgt+9TwP +wKZRp5fc5wpql9I7mqoF65BoxV9QEe8KvfaNfRHUu4etjN52ZsMfACRbXtSDnG+m +PjhwurxwjSE8T+3Yi0b31Jg+v4tv9+lGgOnZi6fCswLPAMkhhe6CTuwp8vN8MFfy +C7DJdiGL9U/Q/XETQsRrJZG/ERBAH2QEUS3l91ga8+1hwyIcjx4Iw7f6Stu8jzcY +LvvaQwj7R7IPR/oa1nbiaDvYN1lUkJ+tycCKRfeuX4zJ3V2qumPCgZUJfQIDAQAB +o1IwUDAdBgNVHQ4EFgQUkQeQt8yr+/IcNc+HYeq1j3votl8wHwYDVR0jBBgwFoAU +CibeuI0X5VgdrieES3tS9IUDYVIwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCgPORiWRJ75n7FwKwzNVgFl/HjhFiqZuJbVEjG29guP+CnzuAqUnsT +M8jLnlD0Qe3Ef2Kw4jCRflP8qeOtznRWvhE/Bjw2BeOWzP4AJsJkvuHKdxzSQi48 +URg9Zym2V/PRGC7SdyGoGlOyvW25efFsnp8EeLsAuvN/stFXkwjNYQ6upnUPa2Us +7oXrpv2XKzUEXKEGEvw9WbPO562dS7ZHzo2ireX5rN+UzyOYDocSuL/KapJ7CnJm +oRomFUJyPO5uOeM3Di6nvBpK6JLesKik9aqHLbw0ZDHtBe8XH6nCyVYsW7P0pvZZ +RgIg1s90pcG5j79yVBG51zUkFh3yGrgf +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/chain.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/chain.pem new file mode 100644 index 0000000000..3838eb2153 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/chain.pem @@ -0,0 +1,210 @@ +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCMWxqTOU295HIjOZGJ +RfwYrIMsVST5paF6jj3pTR+XkMmAA78cqcpy8Z6/kiIIxFoU88zoxgHlCyuy66+Z +xQSZcOlv6Hlu0qGoLSOYDBhZpTq8YKBbkIaBLK0LAdsLr+w2ZRWnCqykkjiDOqJ9 +CI+RyL5Mpx7ewGLDbaFhAw3cB+i849Q14mef/+LZ55uHBiz3BTIDxOaMkkyQBulX +0DkCZ1bjxsVpM7UtHf9/gGg8GuCxG253qA6JNBbI3GixtJVFekCafv3QWttRAyhp +VQOJIf9D1Natr66TYpZFV9t40zcM1B6wPJUSKNL91gxsKqYi0LkyZBabhBqLRG/1 +3GShAgMBAAGjUjBQMB0GA1UdDgQWBBQuCEK2+b+3QbbgTOTGzJAOcs431DAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBABiBpRdlRJ/OQOJ3g/ZLj5E1FlYHQOzGUkyrryiaUiEI +7v1IjZU1/DHlDdUQ3tfEFZ+/n5fZMpwvZMUxqIOuXLkEBx3PQfqN/T3tbDmBN4SC +c5mKSK7xbrI3NU8m/ftuwCqFPDws91y2TnJ9HIifd5/szkJGNOhKujObZDysU9Lr +Rk9wKGFfDzLRmB5/4nzw3uyqzFBd1d+AhabwCOyuI2JnTKcfnA2QWHbO8WewdB6J +4PYHilWm7ERXmmwfdiHjk3fmIneRlz0c3JcwI56u4AEkuEIOwxGk8tucE+oG38nh +y952eJbtohXU98gZBfsCU0yomeje8qT49w+u57Ol0L0= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBSRB5C3zKv78hw1z4dh6rWPe+i2XzAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAH7cnJrNMxT4laRWYlWIiqW/cRLiItX7Ec0cPwGBN4Hb +Vjb3Nwdtvd8hJt2nLnLV2p9FN0jXAg0rRFeKohGtdnhejaVH+4oVrq5vyaPinRNv +J6CyM1nztSQIwC8Z6XfsveiXFAG9uFLcgBnDVNpK9Vy1mWqdv1EBIn1MZNmf+/62 +N2DRoiQbj0Ualgl3vuodrDzv1X+26NlmJ7da3mAPpMA0DGzIgEz2WzQewjhYLjbA +uZJbRj4vq34eEXZglKqk3Qa2HungWlufzordYgyM45ei0hvpzOjJy2AFZwhOkIUX +Ac0XdyWr6p759zjWk/jNPpCjT9K/IXJ3336TgX+Gzco= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUzMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDayx/Dr9YZGocGu+Zh +bbkK810xLr8Ka//UvX6LfZNzuenigkLTNw+TlgvgQq3U/xaLWqscpYDoCRwWQY1p +bYKIVC+kBClMZO949dbhOCfyvmlhoF5FyjWTCBfQl0oKFZkURsPrBDHNSqQrwXYs +HpIkV5+PPtIX8XbsaQB3OTctkKp4ZTuBKDY4JvtiLtYOm9420JohNQAUk+KQVHLw +/+ZwKZhbNG0uMVUWXeU8p0kACy96YSCos1X3D1QwTJV3UU3Dx741OXvwFFP549/L +jqAZuf6m4WMZd6ijfav2pIhWR2EqXwtK2Gj6+M69HkEw4f5sUNOjcjoCH5E+f8MR +NhPXAgMBAAGjUjBQMB0GA1UdDgQWBBTysBx3PBzldql57AK4/aCHlD93jjAfBgNV +HSMEGDAWgBQSYUp1y3hT/S6R66CijJYusuPlxjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBADb8KK59Ifr+LH+u+HFszRXBw8ZQXx9eOxfIL6gCi4tQ +PfQSQAUkdbUsD9qzC9pXA8lelWlYBxXbRJXwKyfdAZqqA7Bv6xrKaThVzdUmH8Ot +NUyxze0qNgBH4tglBRS9QWqGSTHDIVc40ZhB+vto0Q2Y/f5m3pYRnrHYNgqaQKU3 +oJAG5zc8lrKKYY7oKUvocrAcAe8/6K5+VrD2bjcNPoIGsUcNCRh/IVsXzfSVq8b+ +wDw0vNPBFhhWabdngRzvWFINTsDCi9jrmLuwUM2gJaFW/nWpvqR9I/Pk9Z+CfCwp +zbYnPhG28ukovOOxyub4cNhCWqkLz/Y0kYvg1KZVArI= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBR9BevA8ttetnc1FrQ8Lnqje7ruQTAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAIWxbilzPX2nxcGQftvELd7vGVU0QPQYJ+n7dfM564Ay +SlGYjV3u3YCLrQuB2GYKJyqFKEnUV/PvQFjkAB5eNIByAvJs9PCNZlt0SOWv82EN +6QfiP+yZ1ttTKxIi4W9YIMLYNWTvJnZWesuBqNyxvKxJ5+jKubVsuRohwstophv3 +zJIS6UBizLoMxiLNvYFxTQGW18E0SYOKt3FRdyUBkhHz1wZfGutIC4hcPhzlwXhw +F2+uiTwugCUHB9lHTM5dtGcBjbMtD2HFvdjF07lVtcn3HjnRJTDA6vCmAEh4IstG +GvbPk7NduipwuouVD2WxFYbbTJVSdZ+48ECWYqLHdrg= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUyMCAXDTAwMDEwMTAwMDAwMFoYDzI0NTAw +MTAxMDAwMDAwWjBWMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxHzAdBgNVBAMMFmlUZXh0VGVzdEludGVybWVkaWF0 +ZTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW1twOuIX9z7GaZjBy +h6Ljue6TYnStl/pDPL6SjpU6uHHyKA09kTI4dutMXCmJdBJfFsxO7Lo9T3HIommk +ruS53oCfduZ3SiCVIXmtTWD2L8Sj0hnf+VPQaJPUzQ33TywXx38CbOQsd9Kuqaaw +EMxWf5ISe6y7gGmgoDHxxsoNJPWJF9Nulj57mhVEwDFHkoNAgIQ64Utpckqu637c +hfrNhUvqXuAvcR/LVSEBDmr1oyMvr5TGTYaraEPVOGi6v0jfHFgFfu2HuHIbHUb7 +5hRugJf5HgYavD/cUvvQzDBcnmykktSk9V2gkRwrARQcnP4+Sz1PxE/0jSaNJRfp +P69dAgMBAAGjUjBQMB0GA1UdDgQWBBQSYUp1y3hT/S6R66CijJYusuPlxjAfBgNV +HSMEGDAWgBTysBx3PBzldql57AK4/aCHlD93jjAOBgNVHQ8BAf8EBAMCAeYwDQYJ +KoZIhvcNAQELBQADggEBAAIhpRfCsvDKLBnztbeBRHMN9bXaHPkndF6xzIkTshP4 +lkf/RW6RaoGs65ucih178ToLnSsd48MwumVtB7plLaAU77N4Xt+ct2YygYhdZl0r +t3+zA3jjfoMJpq1EQ97b+wsWK5M8tmeLyBO6h7f5AEWcPsUwhpkTiDTo87ZyWJ3g +XcF3+JpmbtWOBh2hSb9+tl7OXlR9uqjaYvYcXY7vHVR1+LGzdCnDEsBtFxSNhxkB +SWaL3wypGFqWEFhuOUx9tTqOqGyEqjm3IBRJmntydxzNwoFiL6t0uFgt1hoSzMAn +3iKDop4mIObXmog5lDX7tBWNGitKijZ6zgZ1j72fVJA= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU0MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxDw7LB9HoWuqZuta6izAjXbnO5cw +VmD4dgc7tWGdNnkzcOqk4Fm7sViK5DKd2js/6ZlxiDaPv8cRs2vMYOEkKMTbuO/5 +UG3YvQJHVNwY2C7nwUv2NSx1zcqB3PX9ANmug1kG5c43skZaBEnIpB+rrrncRu0D +OIMHEBJpkqCONFn7Tpi0Y1dcpX1eeIp2tMEtu7ZcgaAOFIrk2kK2DSeKNhEFausC +ve67eFbGL+z/elQugvU2PTfe/trTgqV5rTN7zsAiURRgGCuef5NFfSPfcYgyZQrg +5hMa6jbdK7BxZcpzLLdSHgU3ik0BTET+/N/5zhjs3TMAsEqx9EUbaiLDuwIDAQAB +o1IwUDAdBgNVHQ4EFgQUfQXrwPLbXrZ3NRa0PC56o3u67kEwHwYDVR0jBBgwFoAU +IUKwPcbwZPO9BaM+rUytxZ6kVMMwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCOuLJtAi3Dhei9sQRIOyLueiov5uQs/sLpDj9Crbo96OAgkeDBCnMy +ixkePyNW+LcWeaa3oiRt8jvRconFtbo/0nSA1XfWpKtQS9xslYDMJT9XwzrkLsMK +5kfJnZxiBlLZ94pYdvg+xghtJq9Ib8LENh4Mj3En/Zt+N624mZ3MdWffzcUP+gUu +BDg9wahaKmM5AVhSFnCTuYg7/Et0ALRrJunS65f9yidEOaGx/FgajRvbpuHsbfJo +aqJDWNGA8klu01JAcNqCEvVjVkEfZKnlJuO3i9Ug4I9sYrSag8EQPU5fBAb58yT5 +ePS2ijCf8bkPxCzGhrFTDHNKLqczVxkX +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDdDCCAlygAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNDUwMDEwMTAwMDAw +MFowVjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMR8wHQYDVQQDDBZpVGV4dFRlc3RJbnRlcm1lZGlhdGU1MIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwz3rNxqssSsWxoDMEe/muc50ZLTu +MSSDefkaxOK4wz7dVi4WcpF3ah0EbFU4vuPeuY7g2iloMJ8W5vdlzCGYqgt+9TwP +wKZRp5fc5wpql9I7mqoF65BoxV9QEe8KvfaNfRHUu4etjN52ZsMfACRbXtSDnG+m +PjhwurxwjSE8T+3Yi0b31Jg+v4tv9+lGgOnZi6fCswLPAMkhhe6CTuwp8vN8MFfy +C7DJdiGL9U/Q/XETQsRrJZG/ERBAH2QEUS3l91ga8+1hwyIcjx4Iw7f6Stu8jzcY +LvvaQwj7R7IPR/oa1nbiaDvYN1lUkJ+tycCKRfeuX4zJ3V2qumPCgZUJfQIDAQAB +o1IwUDAdBgNVHQ4EFgQUkQeQt8yr+/IcNc+HYeq1j3votl8wHwYDVR0jBBgwFoAU +CibeuI0X5VgdrieES3tS9IUDYVIwDgYDVR0PAQH/BAQDAgHmMA0GCSqGSIb3DQEB +CwUAA4IBAQCgPORiWRJ75n7FwKwzNVgFl/HjhFiqZuJbVEjG29guP+CnzuAqUnsT +M8jLnlD0Qe3Ef2Kw4jCRflP8qeOtznRWvhE/Bjw2BeOWzP4AJsJkvuHKdxzSQi48 +URg9Zym2V/PRGC7SdyGoGlOyvW25efFsnp8EeLsAuvN/stFXkwjNYQ6upnUPa2Us +7oXrpv2XKzUEXKEGEvw9WbPO562dS7ZHzo2ireX5rN+UzyOYDocSuL/KapJ7CnJm +oRomFUJyPO5uOeM3Di6nvBpK6JLesKik9aqHLbw0ZDHtBe8XH6nCyVYsW7P0pvZZ +RgIg1s90pcG5j79yVBG51zUkFh3yGrgf +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMjyEJrJXjrEjCr4AFsjXFfbxXr8uvCgYucpYOjm +9Gau338C0Tpr8KSP/HwgyJ9lA+J3nPOEkgdGnqWRV6TIguSLJB3uZoRvVjtT6Nez +ddxvR33+yVFV9skRoc0QOHnh+IXNVeELsf9asV5cg6ExuvZY/VJ/6m87TfurFl3d +s0s4sOW7D6dRis07DbIYgGva8hiaeuR0q3qHFIjISE1Zzmv1MRRZnSqHBZeUyOO+ +NoauZhul9qn/VeYhyIFqfmoJyhTRq/3oMvvdRu0jFeq4pk/iEYjw2V83enqxzTWb +m6fkwiRhrO5dBBTOrOW71I3W/9Rlzt4KegBRI7amT2A6+gkCAwEAAaNjMGEwHQYD +VR0OBBYEFAom3riNF+VYHa4nhEt7UvSFA2FSMB8GA1UdIwQYMBaAFAom3riNF+VY +Ha4nhEt7UvSFA2FSMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCQQsjsPf1mWSY5OLmB4uJ/sgCkEKBRhIwhHQbLXk2I +Fhb13iAPp8G7PqJoo9ytqbHTbmIbTqulTqdo/byL15UmQ/4CZ2auy/YJx9pJjg+C +9LO3TCulMgcNaCpN3qQ+0vEGTYXGTkSI+gvKlGpZKEOnqLZbLex1BagRAAdRaGEk +Tmbu3aClAHe9U2mYAekyyvTAPz34kNhqHvgCnRRM1sGKTTuFcoHx6UdqY5v/nJwu +gcfYh2MV7kxFTKuwiw6GkwM5/LVk+ejvQ1Qq7u204i8cj8tEraE8JZM/VufhCHvw +HkdydoTDdfACf0SR80L68EsUGW9kUVzDj/0J8FOp/v/R +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKMsPvMnIxLl+iDtnsEXos2oORFA4zz/0wU0XvWK +hbLDC1Oj+mpY7mO+B0+NWN9LeBAe8V7QtV0rBAFlJLk7M4ettdmbnRJp66O1eZrj +psyJZ/Hk6ijWDX6LVLllkuHZKFyEYCaRSHbh6oZnoyLcbH2S8/Aa0D2pIsDPGBzT +0V9LbDaLpFi/sthC1AECFsAEC/rJU5M6hlBVEMnU3IsrpoCdsbUC6glYRKZX0z+D +tRunRwMoOtk/HnrhVp4pJN9w4sxHZCzkJdPiV7gI/Oz0Ej2NsLJhcNH0vgx9Pnyl +7OHEFkR3jPFBkgyVPP5WICBwWbqie4LJcvaGIzEXN9jNZ10CAwEAAaNjMGEwHQYD +VR0OBBYEFCFCsD3G8GTzvQWjPq1MrcWepFTDMB8GA1UdIwQYMBaAFCFCsD3G8GTz +vQWjPq1MrcWepFTDMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCXfbF3sZ2ptsQcK8lL1x/07LJJTSLpGuR5QV/etEhB +KLksauT991sbrYRsArSPuqT8LOsD1w4m7CFyx2FUeKqdff5w6ksULoqsVJ1yMGGy +kBEPT850Rxnnmu3FrVl/A1XO8lNEszNIUhPC3gjHHndhVBSFho+3+CDWQBjP5t55 +cvghtv2yqDVm6Izyxx7p+Sn6cOwvwy9RDUb2IET7KZRj7iPRpajUv1fN6SF+/Wd6 +ZaApm+eLs93xIqujFRTzleZKBkXUT5xHudfVC63J/YpeNpi38rx6hxjrw/ABantY +fgawtinmHBrmqNlmahsxrQWXKXBRqChCyzCZg/h92yFb +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUxMCAXDTAwMDEwMTAwMDAwMFoYDzI0MDAw +MTAxMDAwMDAwWjBNMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxFjAUBgNVBAMMDWlUZXh0VGVzdFNpZ24wggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7qDz8iE8SXtjzHotV726Cuo2B0n4Z +AxQCpppVeWhOuDhYNHHW+Ng2MyARH3K9NAeo4hYKyctWHBqwd55KpPdTZQg0k+uY +R6zlbze/fyrbU1s6bUKVPnpS7GzA6TpoZI/9CggWjQasxXLnPYKrgflexAdgVEof +GJ1qMRaOvNkJeUTmBQJsbm2rWvm3hG+uDxh1DjVr1tqczFN5Dar1nPPEn7KC6M/9 +PhuZlfwyO+lNKwQkjN7mz+qWzqODQ9VrqUJYwMpg9/NajQ+2l/mHSpSKkTic9xRH +6K8Lm73RRMOGoEzuKAtY5cCVxx86JbrG0/zl7jC+hmI6wsiFXinKWGitAgMBAAGj +UjBQMB0GA1UdDgQWBBTniUIgfjfakIVH5JmRgL2lYwNPGDAfBgNVHSMEGDAWgBQu +CEK2+b+3QbbgTOTGzJAOcs431DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQEL +BQADggEBABVtkPlV9/TM1z8B7c/lH4rcFJAz9+wiXu+eHPqTtPmP6RI6vMm4QqoW +9wUCnH/6VtKF7h3jzDqANg2Mfd+BpnFstWVYUAk9Uc1ucwKJOMr4++/xN4PnvG77 +uLvm33MOe+TeLh/KIDDyteSGo8RAJxeUroAksdfn2LE3DzohWh+ViGbrLrucJmCZ +t2sUDVxmDo3li+0eIZ1CpDTOV2H05DLI2Z36XppoHghsACk4GEjCUz1JVAHDJA8x +h1T7FRVW2SAP2Suqf42SVN1XhrKL2YwPUOR+F5ZZg+wH7oyr6g8VvA1TqoPDmWXx +ntG+D1v6mirFW/+tNlJMkQSRIhb1lSQ= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/crossSigning.yml b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/crossSigning.yml new file mode 100644 index 0000000000..cd62f5f181 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/crossSigning.yml @@ -0,0 +1,183 @@ +external-url-prefix: "http://localhost.test" +keysets: + testkeys: + keys: + r1: + path: keys/root1_key.pem + password: testpassphrase + r2: + path: keys/root2_key.pem + password: testpassphrase + ca1: + path: keys/im1_key.pem + password: testpassphrase + ca2a: + path: keys/im2_key.pem + password: testpassphrase + ca3a: + path: keys/im3_key.pem + password: testpassphrase + ca2b: + path: keys/im2_key.pem + password: testpassphrase + ca3b: + path: keys/im3_key.pem + password: testpassphrase + ca4: + path: keys/im4_key.pem + password: testpassphrase + ca5: + path: keys/im5_key.pem + password: testpassphrase + sign: + path: keys/sign1-key.pem + password: testpassphrase +pki-architectures: + default: + keyset: testkeys + entity-defaults: + country-name: BE + organization-name: iText + organizational-unit-name: Cross signing + entities: + r1: + common-name: iTextTestRoot1 + r2: + common-name: iTextTestRoot2 + ca1: + common-name: iTextTestIntermediate1 + ca2a: + common-name: iTextTestIntermediate2 + ca2b: + common-name: iTextTestIntermediate2 + ca3a: + common-name: iTextTestIntermediate3 + ca3b: + common-name: iTextTestIntermediate3 + ca4: + common-name: iTextTestIntermediate4 + ca5: + common-name: iTextTestIntermediate5 + sign: + common-name: iTextTestSign + certs: + r1: + subject: r1 + issuer: r1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2500-01-01T00:00:00+0000" + extensions: + - id: basic_constraints + critical: true + value: + ca: true + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign] + r2: + subject: r2 + issuer: r2 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2500-01-01T00:00:00+0000" + extensions: + - id: basic_constraints + critical: true + value: + ca: true + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign] + ca5: + issuer: r1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca4: + issuer: r2 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca3a: + issuer: ca4 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca2a: + issuer: ca5 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca3b: + issuer: ca2a + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca2b: + issuer: ca3a + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + ca1: + issuer: ca2b + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2450-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation, key_encipherment, key_cert_sign, crl_sign] + sign: + issuer: ca1 + validity: + valid-from: "2000-01-01T00:00:00+0000" + valid-to: "2400-01-01T00:00:00+0000" + extensions: + - id: key_usage + critical: true + smart-value: + schema: key-usage + params: [digital_signature, non_repudiation] \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/crl-key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/crl-key.pem new file mode 100644 index 0000000000..2d3cc82ac3 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/crl-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ+urJds/EcAU2OgmN +7A3GxgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEELjgW4C64QNqkHi/ +9UbE+ksEggTQdbe6Y1LtVHoDERy5p7sy0FEy1k7Co5xmUKPUOLhrFhEPBXs3Lawl +su/CemkwRXt2sdlOUl01wXkDazZEZIkGevGZ6v8COag8CUcMs/woh+dEFRYfSmj9 +fxfFLNCvtR726GLuUboztWmhbsS6jMbAOM2soQoVQwxK5C3P0xQQ2KwL4avK/nYp +OZibBvepGR7cFnkqCCw5Mk/wMe0uTiPqhHf27t7qcXrEXIh/vhT6R0RUDC3wZWRX +gRd+oQbCQ44yeisboPEMC1xs/qAHPd+tfQBX/z6uNeHcwoabwF3fOHxjJmB70ydz +R3vS86uSeOe9/xa0Fz4Vl5nelYek6p+MzhMhmom7OwyNHRlUQfRsemgy6RqXgVbe +hR91V1oH+lkv4cFeV3tBREOWWXbwvU1LUTW2gk2NskLYNZ8SLcURXo1+7M3jZ5EK +X4kTsgcWVJJ/DXVEDsKRQv5OWGZW7IYJkrhUEKAn1OOodlY5irNa7fR6Aj1qc86+ +D7zTF7Mr5VHHqjY0o/nQ145s8KGdx46gPQLvZGw1ipZfXh7ZSv/kRmdYfs6SEZRd +IMF2VOcsgw/SnGfHz3i0YH7SX+G1/lH3YKRr9j+4ZFdIim6qd68l0UlnoheTEKIq +4/5f8dYxmBgeEg2OR0oWvjtX55sXNOSRpoboM1AZlVHBRvXEKZuTXLaj8GjCP6Fy +ww58rug0ZakvcIcoGmZBw0QjS4n3FzoHmIU2U6pJAcYu92yYjhtgCy/BOhmOE/1e +wiLr8r9Jg4gRhGq8it1voNebK0PkpngVKW20gfIlrilww2q6zXlsEm2NBxa9yaif +FGolpBvxjCsPCPTC1/wjj659PCCnflnWu+YMJ7a8VPAeFlKW+D5DV5PXzmJTiIPM +H0BiwNj1wzJBtsqiFRdLlJHO1ys7kqEWVsh4rWJ7aqiq1Nfok2aM/z6TlcBQwtcs +qKmkD+eLKTXhyYByc1oGcV+sc5taAp2ktiMknFGen/jd4DThTxXg+F0E6Jrr0EJb +kKkVPfayQvVczDEoJpwluRuOFyjUWwUybkBvvhu845gi7CEei8T9NoZI+8waCMWq +tQKqIy6HqW4VqFDOmKaS1D0vXaWB64majlvUCRMzGW/XtTZYDnKIqWEcztCjlDNa +tOUUAHFu7NcRwOi9h9Y8tVCL19U2RRDOW4ZpLwcPCPYb1z9WAvLfW9QEhJLu10id +2R5WeCmrTglZpeTgSUsbjmMfyVPROK5Mfp4poNzWvnuyoj0wUk+y9PmExatCqZ+r +yBPJGhC5mYPGun3LaBDAE0vrW8Op3GdSBtdPpV70yZa2t4YqIrgrCSSylmXQSd/K +6fRAsLS/T0stsQ+t9v7nR08EWtEeKYz2DYP94GT21B+1Vi80UR/Rw3z0Wd1FyGMw +Rtp2eIotHGevA9spef1fG8ckjvVfZPow7TAsZsHBhnDZvSu8DByK/1hji1l++QSe +w4z+PwjQnTf1mK0j7R+NKrWOdI0lHKA+T9LfuC5W6T0jAqZxnMefGitOe//fPdKf +MzJd2XZYTCNTUYCZArCxQZwID6kE0dOnomv9f1NB3SrKnkRw3IDMtUsvDanuWHJo +XNEodRiuhObecRmNp7Zl0cX6WQTVyYoMUys/Kei7NVehkVsHmJ7xFd8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im1_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im1_key.pem new file mode 100644 index 0000000000..a409067a63 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im1_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQnSEvCbczuFOi5+c1 ++8mI/AICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEDkNRWiadXRU17g1 +HxDD3hYEggTQseRoT7dDHd+YL2lOEVtzJRcTDEBplgaPzeNaCS0JxN9g1Avp+LXY +xxJGjnfGnzqjtzN3YhzKSVDMkbnkaqegt8HPGzH8JljDm4+ZcUmx4UZHHIfEGHlm +p2DgLIDZkT7fT4BhhPbjqKHqe9wNT0JwBd7PRW2C603SJXozM+HJFGwqEIyOX8FX +XMLIe3MsdX5s41FzGJc/CjDSP5YSIdveqDGRederaG13d1U2XVl/ax/VQy/MgzWk +uW0j8cKn6JUM52KSNbBy82c0Xzal8gA3wP+oAaEIR/w7ofxzLmB0NsGqGan2NmYg +Ki6SYI0ZJQwUpDsKC9uvNWhdjp5LcSxN9G9uRi65OGR/0oOL22Ta65n9C1SWydZQ +DWJFRgW494NhLe6IhprU/8HbOTJP79HNjkrzHek603f+5OGqf7OCSEBW+zs7Tkyx +4JovvtZox0c+15t99FOA3dfB4ikFBvIBUfNdJ6U67rnxgqrl2DA027JyQwI8XwLy +WeUkSNDKx4/mI71hS+JrkLj/zK+rSaBfKsBqTGDr4BrzVy2VXt9OS7OF43zYWAvx +ykU9D/UYBMeYrb18Rvb3RvNn+CaJFZd7ktaNuq1uwhxJSmpkDDnrwGSRWyWn+XSI +BklnOsX50PcN5ri/rpurClIxFYV032PY/UaVbHsrSN5InQ1yez2CEzgvYInLyWGe +9qI4WWqg5BnhvDixp6UBBl1YNqQDwU1xpS1kF/HHxiWHQhH/CtRrT6Ks04qkyBpZ +p2Wdw23jI8nf+9Dvsy1gAKhacvR33tLO0/XVur2oPKQoptfD+0ulnirgqt9DasPR +Ba4+De2WjHscnsIrg2KXEbQjIZwietd8qBMAOOB6MZfidIAD3TVt9O40KsriS/by +2UeQsleUFLHwzotGr2q0iXQtWd9qcz6r6JZ1hgtldzyGLutBkHs6YeWG9mBdT3xT +5g6JeuAIRgnAnMMWn7yLDZkGty6ASL6T35QkuT3Kg/RS2QXm2Vc+ghsDnEES3NRa +tjRGXKP8SvW/xT3NL3FrxQD7l3WGbJkjab7weGxgsgxDoGQhtA2iapK+7n7dOLog +zziiVNcoxn1KI8PXWpZtNm/EbawzbCI1JgyWVR813UxEoG56PGktzy7HwITHTlST +mO9lJg3h9q/B212tjThgb3EZmr+Z06qOq1tsFyWtv9+qYjEryaBLw5alKpSs6AQA +WUXRa8kwAuf9lntqNxqQmoWAuDIEOwLbkE5t7G8neWim78WjlJw6xVDQlw7n0IXD +AZKhCoAFHhZLMZW8QUqYc2d72dhf5eB7zzsUZ9omlG/t0tIK2EloS4TDDHn7Hyxt +9nDTu8iXA2B5M4ydBG2oZyFm5ocQ03YFwhsHFtu9zKChZcFRSr4Fl+LRDPKMrroK +XhNvH5T75g7v8TNKICM5dXzvU9OX6cfArfuod/Gitb9Te51P+PMGLRlC+1aDOzgf +XAYprmo5V3Jkq2zBx01P1b4dlgp02d9oyoJ1lLglu8nOSO1EaSJweOgmcD4/EE1D +y4qc5zTx/vq2NUuGD3HbtRlpzIVwhft8xD7rFH0ohz9atGWGuOQAC4sg8++B4Pbr +wm1N8AphhoTqhjCqX+FGepdX/TqUd/clWt+TdfnwYOxFN0UfiB5fOns= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im2_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im2_key.pem new file mode 100644 index 0000000000..babff48c1e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im2_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQOfCa4hjrSpDxW5bZ +37Y60wICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEOTYj+pjy7awR9nK +6DMgSI8EggTQvHoQBwx4w/1b9REo10GCD68Xl97Hg3m5mn1Ji3sV8r8mLEKO3SUL +GytvPHfBTYMCtHb0UDEz9TQHEsOAutPtBIEHCNgQADgy20IXSkFCl/rfUTkQgbki +NQbqPpFXV+ubr1lz+kaSGl3LsauvVhVcQBCUrzTsLv6qgYlqte906HolzKyamJft +LsRaP+Y6blFStcZBfK5kj78ubbV0IE2iTVsh+PdPxQp3TgW6/R7BNuDBIFbJuOvB +9UYYvISIDA462rejukB4X61/s2N7MuiYZG83z9qv8XzMl0Jek9h4GU7ohg7NuzHn +1F0FqzAyXJDyv2L9+mtWIjl7Ff2//3y04mQTizUTL4SgW0SsFZpze6LdoEw+7lyK +eqkUTt+nXGGFy4XlkPiDzWN/TX9nUyI7hHl8sN742N4c9bqq5G/sTEwqIsVG1QVD +v0SqObrkFDw802jeiEn97spuXHOKST8z/6qwPv4kf3DZFNFBvSPSJlEn/he23aJp +H7ohyC0dycHanBLidfxu+tDnGWw4t93YKTBFKwYB/xT1kyNoaTZ/3xIblDxugNxy +HKuUPHn4/1EzTYZ0chPQ/xom/Pfhd0I03LOzPSwrthjpD9WCeWj+S7mVwUDbWOHB +qOCTjxF03WjNqLOoExSFJe126YdLgUZUyhSXoV0X59fbkDvlyBdVPUH/Itjxe/Tg +Cwp5qylznPUhtfOmAp4bfmmL6MTffHP2cPPTjPDEpbO4mq6LqncZzFoLT6eGnmuw +peawVORQUAwhpJpnKW+FpNMvZKDDhQyoZgzwvmdP//RhtZMGNa0Rh6KnSqm2Ghb6 +eiTs/tWgPBo0u+LAJUEzgrumd5dglvFBi1yCmPtUC7WueoTA+8AYquEDJWtbLATM +JlylO1EGfxyDiVLfyx5eLKrA+X/L6L0Fkznu4jSloL/1cV7f+OrLl2U5XU9uwBAx +UtFywvEiVF8wJmUWKBeQm4ct6FdSqmT0yZJFa1wEZQo5LQ1VLq1JkMcNugU7LKfV +XvIIavQmD9NTkuGN77tP7l1oZ/LKIARW5wOERy7cW4R61oKgKUqE/ggHTKqIvFG4 +ky5WgVGnixfwsoBCLD7tymLHrLEsctixeqNtIVSxcjK9dpS0UNK4EW/gqRrmUxIU +j6Hu2aqIHX+XS11AWOAz6pO+KceSu3gdTz+RTQXHI8FCPI1WSLW3iTOtoXD8CrRz +N8M796hKAG1X4WGuxNRhEAK5kl03ZoWBSRi/VrWiF8TczvaqRsXxsqXJlKfefiPN +kgDmPZ+AoR2E8ss7aJde96FDkhNWKSEoUbnkjW/g5tQQmUkrB5zoF7q0LJ9r5STh +Qq5NgFndmjFKtGcU7HeS2vxL6hT8z6CVzqKTwN3uFUStTjYE/sstWYlnZ3/YO7o3 +9TrZBRUs+iZVi8YAnbWhbm6CxdlcUmwWJCj20GJ7/i/Z1e8H4xyHp+7w+ND78jbl +P3ULSp5O3A+nRv16yGghl1FdUlx0nmMg+r7R7IJ9AmnkIS59jgHRWg2ani4NA1iD +oPeMHELzBcHRezzjvmc9fPIMZw8Q2oDphP78hNXTRA+/ooaZcsoG8JAOyzz5i24f +vo5XasjAOGMuKydy4xSaZ9wjPn0oqM0CflLPXEEMAIVWooqFcW5eFuY= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im3_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im3_key.pem new file mode 100644 index 0000000000..b88dc27341 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im3_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ59abx7rqho4TMMoV +Z/durwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEHNUYpmlqTtrp34g +qpfMckoEggTQf9h8LCecuPuTHpf+jDsDwz8Be8ftx7Esm/oGNaDFKU10GGMx9oyL +ClrU4RryxwWDflQ3CCceVvtAOj4T7Gmwg/rNjcNMyJAAJv8RfWijcYf/sdpGYH5V +hgpy63g3K2aic03tD/N1n0rrzBj5mHs/j5GiJxLSlbrlX+ulJawgRitSvbkx66HX +cnRSf5tBJLnd196c/ZG5nYOCfElvGrl4vdyOoDvAf/3HYhsGiRBtpVMqnH5wwAKy +mV7CXUCr13KCXf2Co+6AzcDs50PR+n/peUzrM8Yt/Aka8JhjnOoLotwr0DqN9flo +BEvPPdTmzxfekZmjasmckwOtn2vXeuxClIHGx1vipbB+9zNDiVCpeCNEqiU+bige +m3znGSmT1OuZdEoYXFD6yibJmL+K0flyxTQDnyChXi2IYWIv3jWTE4QQjKT9MB+S +gdVuQ0Rk/1VZiIlRuupFytwn92K9kCu4fQknhDBkeUa3ByPhNkufAIYkqAS9yiTv +cO4IXIlO4VPA+1Kciw1iXVK0NgPRN/Hxc9dAJihbN3mQf25SMkrwL3eee2dr3fU2 +LOva51mGvXL9LQAoz14q2gwtmsQi8vin+7sJBYhiKTgitdEki78oK45pIQAENYdQ +ZFppGF1CfbJ0MF2NqxSlpHY6qpQTjlGMcVWoQ7ASYMlCB0JEv5K0CHEcHciV8nKp +9kzlDHnRj37m3LVPmpZL+jYcS/czJohxwyR9gjD63750ox92PHrxhfxULbYai7Av +VKrmRpZvHuEa6Kt3KwlNqbf6I3A8yMk5H/Bn0OOeN3RBJJrqrIVfCNMFcWge/wF6 +Txv0TzlNIgstaC+vPYiN4d7J3e8Gnuwx6Fofy9IfzqGpq/01dyH9qpM25smHdklz +EqhJLbtiPAB7etEKJzgb2lEL+Cg6kw1j8f7L3lh9nJVI/G/fuZ6V8mGDijcIuixI +H0oUeDymmyZcyuDruCjpIrBV1kQowHdgdRPR3wRHA0FJer95isY2CQw3O2S+e4la ++h/pZ9SRaqAP4VFl/La1ko33a8VizzhWlV6NvNIAHtQ0zdWH+xdryQ3NycRP3CGT +ejT7vAWlVLH293JJJqw77Ev0pFgF9s4Vj5ofipP7UUsVhrB18vMoqbS73Z6DRFgP +YzbdN1/J2v2GWAEf/Urjn7fgqwd6sfq5Bgfxnsn1XWiCOwARDgbSdsfNxC1N6rmI +A0ln5LVbNEgQDuZcs3OLh1O+Y4eNqcvE7TNl5mYI+pV+c/0l+sJUsmbFqrG1fSG9 +OC2vIpF++CbY9voL8ThTTAJpPv0+zklsoU39FsTPsgyP22c3bJYvoGubv7RKeQaT +VgkI1AkMfi4y4VkDJ1UWLN69ETOWo+sFVjMTI4vz+JwDRxNCpZgpfaJnTB0sRVMT +oFP1/gcHmoUDQPqp1h9TM+KgfTRvkjFW7zrRLeOK6AasJc+nowh1ZwL0pLNbAr36 +sP/M04GNnRZ22M5ASGr/Ft/Arz92HU/73rPd9+xw6eeue8wp1hzmqlC1heSLd6qS +HN507U7dHH6UzTU+IGa1aVy3tDg4M0EDNnwOucC45Cq5Aj9e0mQsewB6vnmIi5iR +T1+nOwmHEmE8cR6E2r0QlPpnEyA5LKK+Dlqm7MI7dBbTxeNAxnVZAB8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im4_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im4_key.pem new file mode 100644 index 0000000000..027d82a815 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im4_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQPv4QSl2z8n6sPSys +T3ba1wICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEL2/kRFpc0iBKKXV +iIlhfqYEggTQyAeYsSH26sE1bK6/AzSPxSqzL1XrFij/9SsUATm8g/0oO/XbXpL2 +EOhs8fCtWKXllOcu3icGrs2BCYgOb/CaW3F4NMUNJQJccCDoBiOADa7VZkjeCUEQ +v90ygiEfjOgTkL5ITvegTSfPbaDpUjhfHmvkcfV1NsT3dfg0wdvNqv83fb8BTI7V +J31wTrfm0RVBjzZl1SntrKAiaD0qVxpw7Xr796mWfLi6QYW8+JGnl1NzU7d9M9BW +F1uKTnzwyeOZIOMGd8mZH8brNKgVlhsXIjaNwiuaWlIG7RGY0o1m46xlrhOtEjNI +D5Umu64mTvSqlObvDk/bgn7Ni3rc5b61lhD1HHVpTHLsPITtkOnIfLxgVMjSTiao +j0HDsDVXeMVdgGL0d37kKHkazmj+3MBnBdy/mPs0ywfhgxbXZ5B8Q4wxPy/aLGSU +i3VAM3LAyeXfe1Ww5JFHrxyD3+iNMvbkz72QPuZKy92rQz6QCQEUE0K0Ksjobmu2 +s1sGanD0flPkU8/46qj7YR41Z+natApEhhPgLHspesdHZCiJxLigKtVj8X8OVjyw +kOKdc1yE/wtvDpB83NJYAICgqhgFm5fwVr9i4GPqFX8tmZ1K2UoMCmXXW8Xi7Qaf +SIO+Xj5VDspm/DJe6PKuPOh9BfxGNamdC2gnqIvgqLzhudiiNyhabCp4dlwcdGQC +tNq7KG5w9EbSwCD/hpbhh51ni/2r+uclXepSMgC2ef1RxNxjIzyxNsItGkeWcVnW +dbEr0PZO6mnjvFUiq6O64oFZlEbTV6QqT4dvoRIJxOTpU6vXNvDUKttBh9jhP5u9 +DAgM1nOoOiCtuuSVB3SgDAJ0c4hoiO4IwbRHLSVkGBG/tCX5JmSwL+jUVYNW6PTH +QJC85L/lvQtUMlgeY5/y/dS5e8ncwbEJNae/DTdQJRmUNOJ2k6INJXSZdRRnfM5m +4u1v8EYxssC7klnI2pHDlEDcIStLCDw49RRw5E9hojNCUPk3WJosQSbnyBF7tq7R +C0iq9jNkuBRRMMgJbatz/y+HJtxy7kzwquT4h9f5dSBabS+2+eRcm6PrenLOv2yl +61eI/3RcT02CqYV4nQVGTS988NxIV0481MV5exhpGtrXTEzBV6mR40wgVDK2errk +Q0pXwQNV0pETlCclU/N+i8H/ppeIzyIZXxaIRphpjsvAF3/36kGw4Y1B5siBECW8 +QobBhXxOEX5jBCkFwosaDlN5FPLWgmPPTw52oQ7MwSHNtvQPV0ZFLrSIIieFImZs +VKOL8zqBFx+vMwTEZsEEPyqrRtDweAWCWVl6gm2zbJh8/FDCapbzX0F9sA4W65Sq +rHKys5nPNApL9TPz0fU4fD5ehV6mWI7OG3R8o1cYeMB0m/3j7pKIiCpa5k7HabHH ++AFdtLDHZzeQMu8wcuKWU+mkhZoZ0lZ8FzsXV9b38g/kyrnSKDGKqRjptv2JHCHd +1umZJYhx7lzpOYhkPFCKDlqKj7bUmuZlQ4Xk852u6/VEWXNvRZXXQmaHxKvNQzUV +Hz8rJRdi/kRP8WcKmcr4+3RK+wexaPGBZrMfyT7Qy4n0HMU8PBTD1RoloVzn85VZ +wRm0cNERLu5F4W/qokusATHST3Xxj3AvXZqaIDiCSqweXpalqd19TEg= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im5_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im5_key.pem new file mode 100644 index 0000000000..54b048d2f7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im5_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ9nBkgSwd4rgsmITH +501lzgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEPTQefKt5NHTLJeR +ABUMLLMEggTQXGr0CsL1r0AetwCUb9onh/gvL6w7SYi9X4mRRs6oTEdzjLHMo5ku +Tx+6o4Q0lyfqNVnwx5ddTFJlz2WO2zEYQiZn9HjtTbCaq9EsBjhHNtdKFo1L6nlv +tRc52vPcyqQwTQ+OBVrFudiuK0sVIXAbwxABQoeIb871lpoXx78KGRqMpkl00UMb +WocMaevt8vbCwYzP31+MTdjGIEr7AIaBK3KCKElfzu/szP50AHFy1xm5k4rLPhpp +h7ZWsZXj25sOaqgHnOaeYJt/IK09d0Z1oNFp/TaimVjQOp4gz5SnK6iK8aQF8LIN +9arFPleNLVe4TlqA8Yp6vXGuFK8zvuQ4puNbIwkGNRXuEJ/E6yIw8YVGoXDmirl9 +aJuJrngxzRitb5V/bt8RK3NaCmQ4aYRLAX+htUWQ6Wy0Q/WaMTxq5GNyMo1NTVIc +WnGb6qlcqXIrx830pXaW1dlJjDzHKyihgJ+Jg+WnPuKYTKrRegL7aPBRzw1x6F2z +1DxJ0G4YwX87eNgA7rYIsDjnVexxT8c8y9Hmlw+d17TptW0hkQHVLYIekxgJrCPN +AELI9R86y/3MwP2iw1v5LxAqC1t44fDqMd3674WyqBB+0SYXqxmrUyj2IZUYcKeG +TRZGKuLvwjdeOD8Ds0EAJeJtKLHFAv3XWQcc3eTV34gtC/ti3zkoJ7oNNMeUihXn +s/BCOHXNbEODLmtU/WInN/dEU5GwkI6laoBWfHDyNqLWD0N/5r4SvkXLCCzo/4OB +7eb9zBIyYzGiYGI21TOpeM+AZkqDpjEp8eSCd9U9R9dDA/3wMpZQxNIpYkfAEeJt +Di8QLgiU2IYpwKRsUzI9RMFGGX4xoW+UUW7vIiJTiKkK3PzNC9AevUQ7oeOwwUG6 +ZitWKrHfRTgaq/TOxrFaZOJAfAu/JUECNCFONaiKxt2ZsFelvD/6hst3kv5vbsvw ++TjtRuvDVA3ztRkItOzc6WagMO0234IC19MUKN2JR9r+1o97MuQslDJfGurXNiK3 +FY6aUMT9H9H3Ot2HXdcOiofO8MR5JRfQia5JG5kA9fN9P4hEro48KFyIu7W1soqd +gwh/SLu2gySPN9OQ9sPSxBa1q71p8T9CREw1LTvJ0ZA+5UOiDd6O1aCUjO6MIsSd +buoAotFsCt2cQZZ/Bs+4rpQcdJ9I7rY0mO3Ojirx0j+EnOS/otYU6DzlMmsZ8ZjJ +zc10igcZqDVrCBh+OhmsAaatlwwe1WA8/NvcZTIvcioUXNBG7A+AsE6xl6b8L4FZ +SUI83B3id/cIgkVe84H/t+xONcHZisW1cIBDDfJIgdBRqeuSSGHbPMPs+nG9GEgV +QCdfUQsrxLlOJ0d36DxZnxNv8JaBSoFxI/d0fCqYSpi0lql69sP0umfeUKUKm6Am +s3FK0mIcx0g3ZuLBol6q+mEXUOf40vuY5N6Js5pnH48UlM3fJ7cpz/sjGVpLofnX +udf/Ag3Y8P4OP8zoWvz6IxlDag41Oo6i1fabJ0ghlJ0J74AG7GKY2jrpl6WC0RQO +fMs66HMe5A6Znx3AZvIz/5glOSj4BvyrYlIdR2YpE4iq7gGSLlJFH2zk3msQDjlg +Dxd1af4uFpxo9Qdvtx+LTcp44FkguIYvoMThtEdponaBxTPSw4ZAdXI= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im_key.pem new file mode 100644 index 0000000000..3ba75b5380 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/im_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ3MrI44qDJ1HV28m3 +64fDSAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEJMmQPDYjRL7Xj3a +kdVCihUEggTQPUogB6yfRJrKa7T1GngdDkcLrbTo5IPb30bKoEuCLvvq72+rRSH/ +PgKAMWJRvvEtVj7c/EPeRxryo+m92ljFF4A36xAedBBQKcQGwF0a/Jp7uNsofOrr +ZWa013g3SBYCh75s0+7sW9CJ/TeAb4TwVeWXsQZMzAtYcG7QPXYSd4CDTuVYBhh0 +zfGn6DNggfvNwxPIq1MHyY1wGyfkSp/ILRBR4XQ4hF/BdWV190ol7ewtae2GuREk +gDp0XReYvKXKa5k0J3tdIUwCsGxtnmD9tWeBQpPFNahtcx0Ga7RBxnQyJVsY4naf +20RzT8l0bfCv62nHyLU1afMivT1A9uZAngvZXz2eW2vYsCsFxAOoc/6BcCa5ivV8 +X4iFWa9kQPk1nbslaExK/ZsYKsdkpwX8/g+8iVdHGO/D64C0ohiXdSf5XBe/2EJ4 +bFAUR+Ku6+EhUK4ceysq9hSC4eqCyN2e8FR4YHu48jrwiyPyI9oqGuvNic0aPyyW +gUYfpgI2PP/Q6bO9YwM+2wfpQXcfpQy8i+JOlbd6m8YGafYj3rXGvwHEHOUmhdg6 +5jkA92lNrrYR6gvA+QZnYn2AcM+aToi1mx3eJ1sEzXn0UgQJUcCPDFJeGhhhpK+e +j17vltRo9W61qr1ttQ+y9UQGmNCkLUO20NW/0EFLoFrFzB8qhIX/CjA1mPIllaiG +R8Xf/Q1Mdhe/ZbQ/ufc4VuM3p7pf3udYyGAGY+/TadIECXd6ZEllzCOXQfoO0T5o +Sb6rvW2G1LulZ797EAAdLpPjinIHv/snEhLBSyYZUN+XTIpTdG+zxFE/wCyG4ML3 +1GHNmd/OfngRpkqb9rB1K2xCBvnZaJK9t1G799EGLF/EIK9Tc24O3bTcFoA2wKPh +NVmHEHXad2iZuQO8gQvQCezgwHKyk4Z4B5Klmd1uG0nMB6c1q5VpW3x3cgQs72uz +/X/vbdrPitP5fZNb3DrpoIOGFd8HeyMUryoebHducCj6W19xkaHATbyLdnd3Dl1i +fzLPzPnfDv9XyPjizZjyg3MCM9TaJ8YY+zry0x4VwadYM3XZfPGCLUxlEFlM0I9T +N+52ahoWh1U/6E6lr/mQcpKa+BJ/caU5L1X3j1cVU3KKtjz9FJVida/lbZgJS7tJ +aWEFCjq95ihfireDuoOfLDIiKfFU0yQd5q45dEgyuoWsHC1qt4iM+zwS+1fUmrQV +m49S3fm8nsaPrSc2bVp/F8KKi0eeAhfzXICtwVcTTHAoVz3XREbWQ0BpLZxWIkvk +DRK2BCa1HLbtOwwZ/tmgcmOgVdwvdXAUnlXN2ZA0KwfKDY3v0pvwzEnatSU7DH+T +K28EqBDnPY4mrelYaGT3qRZo7R4itH2fvC7M/hwzaX8mR0lyMkJADzOleWHC288W +Ku2uV4LGo0gtenICTdogcUctK8AgUAz4qF8oa8Xij0ZaB2ncYL837ZCOYiguHFQs +LrbsO6zB3wyi00PcozmjNUjgsni51ku9ftLpneR5t6d3dF6jkZlggXRRiGmbVNpb +OHkLyGEt4kryQGzw8Y+uf11Zoffzr0UjzTnTKpPHniqjUSb5YCKEG2erwb+HN0D/ +27AXRMlMACYOwoX7krgGcGrYeJJa3h9Y442TNMtMMpd3yJKOMr8OEaw= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root1_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root1_key.pem new file mode 100644 index 0000000000..d9ccb48aa6 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root1_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ7mZEb+MK7wa9E8ok +SxehSwICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEGrZdz25wy5HU0A4 +bclAxksEggTQ9jQnkb43ajoc6GN/UzxdF4rnlXQZ8xa7FoHebExryZfJ2jZgg+CA +sSVR6tBk0d3aMJL5urA/fgkSS8CV1cAiI34rsTfKeI+zutYYuQkIh/ihM5WNd2hZ +HQFIlKBHK1W9ZbkadwYCdXMJ1cIsiJLvzST1aYZ7MACOtWkd9L+oYk2gLn+efqz7 +ruJR+a7CWuxbGddK6kl2Y2jMJKBJjdCnSuiQPppQZfVUrvCB9f6PJ+tpkIy94Gig +Zlqojrbi75u81yvbLfbaNnp0Qr1+urhYjHlNWAPY1s6oLfA+aj7w4daj8AA1tJ8w +BwiBx5rCeDxszXQut0XbQHlI1u1U+hR7TgaUWMo9JrY+oFDJd9RHgCx1lVGc46C7 +PGZ5dpynkhR2bQvqpvco60XWmnsXRM9N2zo1kS/4vsXuvpa1epYvHiIgXXsF1E2i +xt0Sy8Sndu7AyvuOkBSQbeM52Mt5kw/6i+ZLRdu1STdwKvEx/PDcBSEGlhro7rly +UtbCPDKjwFL9jjQ090/qalz2PlPB6bbKkhF2WVjJAy9eggn/4xQnf3qY/wSli8tO +6JfBzlgTNq9X39uB5tum69XsL7yIBhQiJ0rE9M8mYWacKoiNVuEkB9W3/IeUQJh5 +WzbJ9yqCsKJLJWZz11V59Ryk1KXEmiZa7OUvAG79eweQBkbMAOWgJyBexOd4drvb +WsUQuo0jtn1S3Hzb63Q7rr6cbf2wQUHUwprS/o/HLUXzPbfII3uuDtVLy9cJPBAe +KS8SJA4L6tiHKH0Am80oL8Oz+uA18c2KuNbEQrENtlDK64lco8LqLvu6PW5uYWnX +QldfpxHsapyuAHQ5oM9GDah4TCMeK3iVkY8bjPyNHJqzxt3O3Prvxle/UDwmTvgZ +ziBk377yjr4QAqyYLMaVtgBK3BVKfjF8YTgVilXcMrLMeitfPIRb5MhgdzeCbrMv +uUse+wjI+wyFWRCMxFptwFwsH80aSmN6sCJJdkz9Uo7aYwJ/i+vSmkVLWCQ0gE2c +W5rlTmwvQ/NpaDrxdY5sXkgqeXkg9giZvBB5pxXyJ44ixEl+Y0nZZ2eSAsFKr1Hc +VfnVmxDkS09cnEn0Tw/+h0EH3S87HYh36/rqNnvvy+daKxcAModFu8Sp9F3NVqe0 +XyDnK9fzA3vyTwfRJWHUPiTug9HmonLwmMV+74OjphKfUbCJwDXwNJjNepb1c7c8 +BWguot8Mvgo+hJweUqerLhNwQX4Z8Viip4o6rS18rp1JY2hiWA1tE+XxvwnoVI78 +ddMtZSkKLaNYuSVjNdCoV2Ei9xsDkdhlr3grXvg8LPgyuuTJlbdWdkPQ2c90C6WT +Uq6U829/L0DLWmW7v9hLOXLPlPdHtGOJbFIRHdpZO/ny9Rj/6LdSWq0vqDB0ThxW +8jprU6QIHjBZYsZQ05H8lD2CRdGT1mLyuF2rQfFsBE1T6lakX0CBQrfdNMGEER5l +QnJW6LCpRD190aCcIEI5wuGUTOC2l6xeJYGfay3caPGyw1JqXYRmf31g+9ZkGfP2 +qvGIX3juH3f20FJgjcSaMswR+aocBwOquMLjs4/3zfD/2lxDG5hR2iTtOmrSZ0xP +eIVSfXvTLvKGIS1W/zP2J59ihYI5EriDITo14jXbU6FDIE+mvcbvoak= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root2_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root2_key.pem new file mode 100644 index 0000000000..27e854f5d2 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root2_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQYj28FmoP0nWIBz+i +uMFayAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEA73W2+mCDYGMx0G +p26ZZFMEggTQxeiKLrihK8CpL9bDBzh4n5BFbvQLGo8TnU2qzYoHT0k+FcGLCbH4 +ZxoH2Km4AOCFWic5YFRqjneLDFfhSnX+RJndpPJ5jCafGaoZs0lHzOwhLugAFn0K +q70Xcb5xJ67vtschGxvw+vwLyAlzZxpOR1IaBDP9io0yHT7ZoOTSfykgbUis0uNw +NnrUNcaIhmJufaeOYbEdPQ8Z8ql/rYhG8qyJlkQ/LFuMreMeGOHah3/rm1aF1F5/ +GW8QYaXbL3fJpChDtYKjDAOS8hvXAv5Fs469XVGtPsTnEnyRxwT/dV42TQl+Wmag +ZjccPNs6QoHijdMCMCBCAux1J8vcukORU9oxPAyKnfN/DZHF5kMAJYhKyVV83ADR +X+tCKT98U9RX/YW0a8Ep7wtBQ5rPqXZewqK6SreGVdtuYiYeGYO+DOfUhaGDDun7 +eobE1zuLO+vAu0+8P71mrMnS7et8rEbMqkkpSHPPij71Y20wwAgNLuX/vZCc98gJ +mc9QqaRtOsiYU0AfKNR3PpCQvHGVaQp9D9wfbjvs4VHJ2qAwDsgzaO7O5ejKGPzS +y+otnzJvcAp9F4Wn7c/1lOkUKztftAeFQ5ITuJlp4Qut/kgapps6FlWyUqKJRApb +Sw3KTD7Ft7HtnVSdg/V9cNsRUFZuC4ECLZtG7FouOTUDxg0ZpQKNq3Fj2TLeu9VP +zxq5PQxXGeMrLXdt7bZ9wT5iBzs2tHTElWAw48bkxjxXLB3vh+RiD15/7YRVGaPm +8hmd4yKcJ/xyMTNPWhfGy+55wxheRhUp/GCt6KCnOzdWpOJ7BtJowcThX80eQ99D +ZOYBdDMbw1OAFjmO+RCRW16+vY6b7YSFhyt/6+Qh7ei1CitatUccSXvJsTpSgUBi +2eqrmqTzof0NjbVj1y12ILADU4vgQ2anxfEvq0pQfzqVjqrgOtUluxmJJG9uc601 +rLQKXo4ZnV+q8NZQddSvDomUez5P8x6Ag3iJAm+fXO1GTBxaxEXgIt5oPZIecB0J +swgqwZGUD/YtBDzpvzJVKw6oPrWuA6NAh+XBdEO85hyZ5BY26SGJUx5VJHerwqt3 +q8qBmlmWZzCKzNVpEyRGUB8JWBvDZ2g8qfWGF7w8WlCuTNdPFuXIvtj8g7tknVtD +3KoJ5amjqyN+4eCgGVssPX8R+7K3vt43vWBZ+FJV4bRerBKG9ug4GHh1V1yJagvo +NmP/De+a81p/Ewge/MQVFCKYwfLrHuuuHiXgMdCvbeic2iyIIjfvqeLfeD3YD9SM +z6qWS5JSjTFgWvgU338E1OAieG4Z+bbrlqt9RPHE98FjJDUjHGRs/yT4jOxp4/QG +3/NRciUDJXRMYfoyoNSdBgXlxkxBcxEyKFi7QKrKT+ISdypNlj1nNzc5HVgTERoE +jRMz8rdAWR0GvL3otTR5uJVMk2/eZm1Ck5y/fKww+kGiz4ucDCi4nnZVdJ915pyt +PcZIGyFXaBOmbcFuBIniOYFDTz6PM43Wp2zaUerHI8H5QNZVcomgT5uDRhZVf6d7 +L/8ihc533F9XRUOJOiQEb0wPgAOirVuIEm1TK5xRrIABrGiVLlSs4zdsmELQfv31 +XOYcOOEpz2zzvdCBRlWiTqNPOWHCS/Zm/SVCc9M3ddPxS+VADNmw9S8= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root_key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root_key.pem new file mode 100644 index 0000000000..3c8d16b9c4 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/root_key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQCCEV6O6sip4xlX6V +9cfMcAICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEGMdp4t7kRReyjMr +R/DJhnwEggTQCtpkMGabpm+2IipjEdhnw+rXUkNSNFqg7nN5A+zXE9W3V/mPFJdu +/AVCkagFCUM7z5Wx4k4GIfwX0q/S1TDorcDisg9sgGWO5TYwqHCJRffOcFkf9GoJ +TSUABpYyctbpC6gbUhOAG9xCeWkYwhQ5RdIKd4I7xuPFmJm/aYclCNpFx2ymydIc +0lC+OmfrosIMlhCpX7WMB/zwubMUD7NDtxOqzvoE2HOKljfOWGWgbW6I4BGKiU7z +vZV4nJXOpcthK/qqTZbuxZDwzY3ZHYgPh9bUTTRg53jSPi6wQT+DFOjYa+HXco62 +Zsyr8ER9vdnX+GNZCRyY7AYpJZv8aIk5hh7c88/kQSluWiz6twDlSG211eMV6tOW +6N1QyscQoyay8+Ug3XxMpd3KA+rVNNBvmixj8hk6L9Aek3jGbMM+X7EcgZ66z3Q0 +kXuweb4cynaBVpryAQLT0zbUj3J5xdnJmE7+4/8PE4qKw3aZOKfL2+WlrejiUfP9 +lXa6GYhlPL435RdFw/Kv6huJ6vAL1az07G7GysImvkcLWxs4EhsSjxNB6ecGjhG0 +eAqXtMDK7yFweALT2RJSNhlKXiEyvs9Nm+kGDyBrCAqk7GTpp1fXLtKr4Nf9dTKO +6TyqjadT0hJLUVnoTxX+L8peYm2JVSeS/oCi0Im9bq1zW6MXQ74mDeSdLXWfXJjA +J9dA+CojSH9i07E/yalQxtA4nED74XmOSNK8Y8NSuZpdrZMvRmpOoWkZzMA46HQL +za0QtVNaMiHfiFV3a7ktbDCNFmAZyXz+L+4qB4V19k8Y13RgMbhDYYkwp5z1Z+Md +875DYb5QTxGDQfuYrCyDMR5TGezJ7QAvBRtN6ytxHJttqCP6pBSOOcyIsJxg5FnV +mjfGf/C7V9pkXne83IG+S9pF7IncTGRmql9QEfd7PMThuUoY16E9HN0ynCYO/x+Z +5quPMukfwh9d2fSNtpFptyXrcHGLOrvh2l4Hxypx6g+WG49q1cyUKoOldloY1o6Z +W2+LoFj1o+lJUoIAADrSTsRUEBazSygz3LevHWA+3nh1ljDfTd3eV02+CNB7xdHe +kpt8WU7yrA2a/MOgsfcUvZOaBwgDqf0mzGuPmZITjTXJzTrWoMlJKaMpw+1lPSnS +7k1RRs6KGso1E7S1JIgHeo0DZgP95+IoFL5APGwBZHX3w4LHtciR0spIVQ0lI9Um +WtDYHugnfR+j4GRmpnC9WUCBv+kRgsZxBzcPd53NfIVWu/1Vk0GH6qcCNngGwlLn +SJZncwG5bZj5IH82dNzZrtnahxLJ4n72aU3SFevxu/9KokB39doJYQU9Ifud2YwM +kYWIhDBtukpE4FWdcO7dt4Xwh9ThFttTG4VAkLNYFHOg2OINW2WmoPInD/HnYkik +qTRF1q4ItJHY9I8Tj0wTKvtqCoO1HjhVgkWdk7+BgEOII19V7OSFOeTvG+6hmCSj +WBSA+bth2RlsjCgxLx8YshbctBFhBJ/Vqm08InjRTCYmqFJm7WdUtssfZWCog63f +3TJBwwq8TPQIle8gTAsuPPjqnm+7mjzLVe6a3MY36rNB55zsxbkc9BysDKRMLDOh +0EXYDWgavFGlaycsK5HohOovpwtR9YFJ/QWHGONb3ABF48yQHq3IogE= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign-key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign-key.pem new file mode 100644 index 0000000000..ca58df688f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ19Lc6P09f69/8SfZ +XiijZgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEFDB/s9gDONS6aOH +lX2oEnEEggTQDm6xQuhgWpBClEy0wjynzXFvQvEL+IQxBauz81wr0wQvlHiDgBS/ +BDtojvYNXbaNtpt8c5vV41twVtBu0JUCfL17EMpOUq0XAYQhEWul+DcMGXy+g9A9 +WMaXBUTz96KLUk1n9B0mwZvcttNA5mq0bxRL/wc3lPSKOMDVrxUruu7et1dzC8jU +y/K5W7clmivxwLUiRrkMYVWlesDQSa+TqpdcA/K0vJXfMF6jY5ssNRhcs2EWzQwo +27U5EVTaTV3c32y+UgYAaOnmy7vlw0rhc8AR5vbUHCSKa4UTRLzlJbk47tYW/rKM +YvjeV+GZqaInkQkCoF81GoR3UF/4QQVkT0rYQEUtvSsz24MYU+irT0KBdvkxj7ah +gYSFcDXlPGBuHot8+ZwB7ofARai/O41vLnqMsLogKK9KiuIxvwJlSE1yGtZMmd/w +oJ+qpH0dY+gUCN+Cwcd9z7vyRwPfmh8e22aO97UKoA3X+wtFYt7jUycZHFe85FLW +e8N1/Ly5P2E5aSdku6x07ye596RYEi8kw+KrAL1NCSOfiejaKxpzcHaO7C6C5SGq +dTDVpi4moH5GOG2ksqlL928EwmLklMoFMgMs0CnBcKVAHOdUleIA87blVTFh8U3r +8CSStkohnhPHPgptwoXppl4wbACiZ257jDgo24GEWx82Kdaff4KReZZtlwEUUAa4 +jd+OGbAClAYJW6DGYKBcoXXYCs8Kuaoyze3YNozAXl2n9W00FS/mAG3GTK6HbzEz +7KnrpgPNWQh/jjm9YnS02pTy1g2Gk2LW0CV1HxMkTOBRRdMM4ZZejLQPPftouYnv +ZebDCUUC8fV9vEowJ0FDqgcI2k640x3xDJwtQee3GUDPtietyYHV2QvsStcVbDdg +pGaMBYnbppafyJrh5nUT8Lyvolq3G1ejd1GEFatLuFxXTCUbJ+NKwl1dC0xaexVs +439ExdWlzGwkqSMEvyB9cV79ZWaYVtIf/SpGquO0ywTu/uU8FAossWuX907OVQtz +3LOIhGDcYrpZUqeK/gc8FrOjA27UwI9/+NGaLE18On1EkYIqnN2ncguPhZrGXwGR +dfuGgmpJxSSm55Wd4WvVmLYgX0xIUKVAUv6nl8oMPOh8GRAycFRAW50yNUWjriuw +RCGO2cWBeLQodtZ1G9+5oWq5T6KBsbeFjagUONVWo8aZX4cULLZsUD5Ay3yRLdnd +ACGI0bJ1HtRfHX6hMlXj7VCosaA/4IpjSUg5yOry5bzYQ5aOyWiLGY+EV9zM5Wl5 +/tfvGFGHVi1T6yjLlHytriq9xhbWdwA+D6jEGv24c05zQUoOsNUGUncEuonx4eBN +oSVmv5TIMxK/umqnZ6LrUMxDLi+B/CWnN/sNskZP4QRKnG56/KMVk9XdmYT1ql4m +Q0yTTsy9TbXmOkIkUmm+XTRPuLH/NFjX4+zE0O2jf4PvtzYyEzHCiA0uWwEq6zrv +gsuWsCr1Y588qK6W/VC9zgfqgh/2HhSnmv/uNi5bNqnj82m3eEyrlmp4b9wtRR3k +bgoq7PyOHmP2Bj4wdUQe2+QOMLySBJm3odA7NWkBeCaq6M3ZqdHf56q/nKVReUlS +9THEOrp3W81kStFZ0ueilyviJalJq575FAQntnlFy1wgBqBmk0/0qaU= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign1-key.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign1-key.pem new file mode 100644 index 0000000000..7f964e00f1 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/keys/sign1-key.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQ8V4UToxZDtvRoYQL +Pb1pmgICCAAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEKcpioTRxLTCaZYD +kmawmQcEggTQMbouqjCM9SVo7duYkOE4k7gq8Pfzz0qAsZTacxXF8/KifjDCoalt +5gJa2ULEYXaCEy6x75WfE3R2rpZGPHYvFPZTVCOUo8Kn7KIhTTXipLzfuA84i1Jp +A40DZ2nMS6NOXY68TXG8i6DK01jv2QdgWluYA++pvsI/V8zVHN4xWDd3TXCmUi+W +NFN56fnYyY5nq84fp65GkGepeto6zxJigpDVFDtyDvR2WRxLpiCRdwMBM8Tpb29D +fm//JubpA4W7PgPeP03YfafnH+NT8IA+zGgijwtUlIxzbadj2cdVAulEhpKJxEvR +kzhV2xuTe+PeAOgl/PHBPqgGDP1mSkwLK8yxoA85e3ThvGz/B2y1B1l/QPl8S5KP +semhbnum07U8G0dyoHbz2oUL0dgUQrl+OOjXkVpCXsaaouB2FRSPtmTKGLDuVCbQ +Hl8zPfEsW4AyB5OcbtTDghPE3u3b8NJk7ar9RYNRtCoRhWWg/36LiZAsRUcnPwDg ++P2J2+7VZyz6An2I9QoerpqnCnUJzov9BdUrmOqCv/qQWdqCmvJTs+w/VQznhZXW +382T1VtefR8xQyenEScxAU3mA4ze16ytm1h71Zs1qpMu5lPL/YYqmSJA8Rvon51U +fLuGlSop9WaNucbuVbXjxrGw/FOPvy3dyCit6U1fQ+u9nVN0m21vvBzucMuvfioC +eYI14HeQj/LrJkQPiG0U3gGumiewDUYYUgN0gY1CJxSYYPzwhomWzp1FeW5fbfno +PpI/Ag2ZSBs/bP82AoGadRvURgxcoI7iwdDMBVWY7PqXP8/FCsEKEYWLXyX6rsKQ +4UYMoQD0Wm2dMAmOWM7fiQAissteJHYiiQUapZXBWv7SCP7AUOE8FAYxmMUVHRT3 +2idpUvcCRnOzpI5B5U9J35iJXFZHLDKJjMbrFIgGtz8P4tv1Gn1VLoR0lcqjM2K0 +PNQp5IPvrIzf2ofsqjzrz82UjANtJghEYqcGm9Jfg0axTYGvz0eOIta6zyxvLolm +xx+EloifA4pvW6LiKSs4mMmQTHD9JoUl48U0LEegXRCWXvhjdZblgihEr1auGi03 +i0tAUyeCqw5gNdqSlBGSYrrLEQK7DjI1hdWDJGLI+layqwF5PgCe2njz1CNSNSXW +lAp6uKYFmWpCkstGrS05MpNlSToJpjSkdVUvKBCVg2uXDXhzQRMEPniytmqRadzr +aSymVejJUn45wTGada9/3Q60CHRrukJq764CIeQItBNZxPR5USQWGWaJ+5Yt65Wy +kJ9DhWbcNicpppVnRz+C8m+f9SsiVSOwPRKX141xCUyXV9NRz7i1hUc4VwTJ9uxa +RgwjbwwF7hWOd7TN+Qp2lwrGaHQCKfg5a0lI2T1B8bXDVGRliT6zHKrLBh4t2PPT +0inTCfyG1yrCVssmriJXPwGeEtN2eeNKFgaV0Di1dkT79foHjyZYM0pVCUJtgSNU +iyxpRjG6yD4nUT5np1Lo3lvJpblL638NWvRqmeGRG42WyjoKeP5iAs2kTunX4hlG +WFOwSvAqDqLb0dj2P9sMQlEkWKQkLiPFXdyrHVwgmYz4JuiRk7kihvPmLJFkrn2c +fy5vEFoWPiByYBRTsrfYEvgDvny7Gkmx4CFDxNOeRAk4BR93dPfNcqQ= +-----END ENCRYPTED PRIVATE KEY----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram small.svg b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram small.svg new file mode 100644 index 0000000000..2707cf19b7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram small.svg @@ -0,0 +1,4 @@ + + + +
r1
r2
ca3




ca2




ca5
ca4
ca2b
ca2a
ca3b
ca3a
ca1
sign
\ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram.svg b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram.svg new file mode 100644 index 0000000000..e769f93b99 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/pathDiagram.svg @@ -0,0 +1,4 @@ + + + +
r1
r2
ca3




ca2




ca5
ca4
ca2b
ca2a
ca3b
ca3a
ca1
sign
\ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r1.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r1.cert.pem new file mode 100644 index 0000000000..c8859f0583 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r1.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MTAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAMjyEJrJXjrEjCr4AFsjXFfbxXr8uvCgYucpYOjm +9Gau338C0Tpr8KSP/HwgyJ9lA+J3nPOEkgdGnqWRV6TIguSLJB3uZoRvVjtT6Nez +ddxvR33+yVFV9skRoc0QOHnh+IXNVeELsf9asV5cg6ExuvZY/VJ/6m87TfurFl3d +s0s4sOW7D6dRis07DbIYgGva8hiaeuR0q3qHFIjISE1Zzmv1MRRZnSqHBZeUyOO+ +NoauZhul9qn/VeYhyIFqfmoJyhTRq/3oMvvdRu0jFeq4pk/iEYjw2V83enqxzTWb +m6fkwiRhrO5dBBTOrOW71I3W/9Rlzt4KegBRI7amT2A6+gkCAwEAAaNjMGEwHQYD +VR0OBBYEFAom3riNF+VYHa4nhEt7UvSFA2FSMB8GA1UdIwQYMBaAFAom3riNF+VY +Ha4nhEt7UvSFA2FSMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCQQsjsPf1mWSY5OLmB4uJ/sgCkEKBRhIwhHQbLXk2I +Fhb13iAPp8G7PqJoo9ytqbHTbmIbTqulTqdo/byL15UmQ/4CZ2auy/YJx9pJjg+C +9LO3TCulMgcNaCpN3qQ+0vEGTYXGTkSI+gvKlGpZKEOnqLZbLex1BagRAAdRaGEk +Tmbu3aClAHe9U2mYAekyyvTAPz34kNhqHvgCnRRM1sGKTTuFcoHx6UdqY5v/nJwu +gcfYh2MV7kxFTKuwiw6GkwM5/LVk+ejvQ1Qq7u204i8cj8tEraE8JZM/VufhCHvw +HkdydoTDdfACf0SR80L68EsUGW9kUVzDj/0J8FOp/v/R +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r2.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r2.cert.pem new file mode 100644 index 0000000000..ee9ee531e7 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/r2.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMRcwFQYDVQQD +DA5pVGV4dFRlc3RSb290MjAgFw0wMDAxMDEwMDAwMDBaGA8yNTAwMDEwMTAwMDAw +MFowTjELMAkGA1UEBhMCQkUxDjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9z +cyBzaWduaW5nMRcwFQYDVQQDDA5pVGV4dFRlc3RSb290MjCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKMsPvMnIxLl+iDtnsEXos2oORFA4zz/0wU0XvWK +hbLDC1Oj+mpY7mO+B0+NWN9LeBAe8V7QtV0rBAFlJLk7M4ettdmbnRJp66O1eZrj +psyJZ/Hk6ijWDX6LVLllkuHZKFyEYCaRSHbh6oZnoyLcbH2S8/Aa0D2pIsDPGBzT +0V9LbDaLpFi/sthC1AECFsAEC/rJU5M6hlBVEMnU3IsrpoCdsbUC6glYRKZX0z+D +tRunRwMoOtk/HnrhVp4pJN9w4sxHZCzkJdPiV7gI/Oz0Ej2NsLJhcNH0vgx9Pnyl +7OHEFkR3jPFBkgyVPP5WICBwWbqie4LJcvaGIzEXN9jNZ10CAwEAAaNjMGEwHQYD +VR0OBBYEFCFCsD3G8GTzvQWjPq1MrcWepFTDMB8GA1UdIwQYMBaAFCFCsD3G8GTz +vQWjPq1MrcWepFTDMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgLkMA0G +CSqGSIb3DQEBCwUAA4IBAQCXfbF3sZ2ptsQcK8lL1x/07LJJTSLpGuR5QV/etEhB +KLksauT991sbrYRsArSPuqT8LOsD1w4m7CFyx2FUeKqdff5w6ksULoqsVJ1yMGGy +kBEPT850Rxnnmu3FrVl/A1XO8lNEszNIUhPC3gjHHndhVBSFho+3+CDWQBjP5t55 +cvghtv2yqDVm6Izyxx7p+Sn6cOwvwy9RDUb2IET7KZRj7iPRpajUv1fN6SF+/Wd6 +ZaApm+eLs93xIqujFRTzleZKBkXUT5xHudfVC63J/YpeNpi38rx6hxjrw/ABantY +fgawtinmHBrmqNlmahsxrQWXKXBRqChCyzCZg/h92yFb +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/sign.cert.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/sign.cert.pem new file mode 100644 index 0000000000..7bc1364758 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/CertificateChainValidatorTest/crossSigned/sign.cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCQkUx +DjAMBgNVBAoMBWlUZXh0MRYwFAYDVQQLDA1Dcm9zcyBzaWduaW5nMR8wHQYDVQQD +DBZpVGV4dFRlc3RJbnRlcm1lZGlhdGUxMCAXDTAwMDEwMTAwMDAwMFoYDzI0MDAw +MTAxMDAwMDAwWjBNMQswCQYDVQQGEwJCRTEOMAwGA1UECgwFaVRleHQxFjAUBgNV +BAsMDUNyb3NzIHNpZ25pbmcxFjAUBgNVBAMMDWlUZXh0VGVzdFNpZ24wggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7qDz8iE8SXtjzHotV726Cuo2B0n4Z +AxQCpppVeWhOuDhYNHHW+Ng2MyARH3K9NAeo4hYKyctWHBqwd55KpPdTZQg0k+uY +R6zlbze/fyrbU1s6bUKVPnpS7GzA6TpoZI/9CggWjQasxXLnPYKrgflexAdgVEof +GJ1qMRaOvNkJeUTmBQJsbm2rWvm3hG+uDxh1DjVr1tqczFN5Dar1nPPEn7KC6M/9 +PhuZlfwyO+lNKwQkjN7mz+qWzqODQ9VrqUJYwMpg9/NajQ+2l/mHSpSKkTic9xRH +6K8Lm73RRMOGoEzuKAtY5cCVxx86JbrG0/zl7jC+hmI6wsiFXinKWGitAgMBAAGj +UjBQMB0GA1UdDgQWBBTniUIgfjfakIVH5JmRgL2lYwNPGDAfBgNVHSMEGDAWgBQu +CEK2+b+3QbbgTOTGzJAOcs431DAOBgNVHQ8BAf8EBAMCBsAwDQYJKoZIhvcNAQEL +BQADggEBABVtkPlV9/TM1z8B7c/lH4rcFJAz9+wiXu+eHPqTtPmP6RI6vMm4QqoW +9wUCnH/6VtKF7h3jzDqANg2Mfd+BpnFstWVYUAk9Uc1ucwKJOMr4++/xN4PnvG77 +uLvm33MOe+TeLh/KIDDyteSGo8RAJxeUroAksdfn2LE3DzohWh+ViGbrLrucJmCZ +t2sUDVxmDo3li+0eIZ1CpDTOV2H05DLI2Z36XppoHghsACk4GEjCUz1JVAHDJA8x +h1T7FRVW2SAP2Suqf42SVN1XhrKL2YwPUOR+F5ZZg+wH7oyr6g8VvA1TqoPDmWXx +ntG+D1v6mirFW/+tNlJMkQSRIhb1lSQ= +-----END CERTIFICATE----- diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/cjcpipopnimkioddpoijmbghdjckkbdp b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/cjcpipopnimkioddpoijmbghdjckkbdp new file mode 100644 index 0000000000..c0ab2b66f0 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/cjcpipopnimkioddpoijmbghdjckkbdp @@ -0,0 +1,905 @@ + + + + 5 + 7 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/BRlist + + Instituto Nacional De Tecnologia Da Informação ITI + National Institute of Information Technology ITI + Instituto Nacional de Tecnologías de la Información ITI + Instituto Nacional de Tecnología de la Información ITI + + + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + + https://www.gov.br/iti + https://www.gov.br/iti + https://www.gov.br/iti + https://www.gov.br/iti + + + + BR: A Lista de Confiança contém informações relacionadas com Raízes de Confiança Qualificadas da ICP-Brasil de acordo com a MP 2200-2 de Agosto de 2001, com a Lei 14063 de Setembro de 2020 e com o Decreto 12.376, de 6 de fevereiro de 2025 + BR: The Trust List contains information related to ICP-Brasil Qualified Roots of Trust in accordance with MP 2200-2 of August 2001 and Law 14063 of September 2020 + BR: La Lista de Fideicomiso contiene información relacionada con Raíces de Fideicomiso Calificadas ICP-Brasil de acuerdo con la MP 2200-2 de agosto de 2001 y la Ley 14063 de septiembre de 2020 + BR: Lista de Fideicomisos oguereko marandu ojoajúva ICP-Brasil Calificado Raíces de Confianza rehe he’iháicha MP 2200-2 agosto 2001-pe ha Ley 14063 jasypoteĩ 2020-pe + + + https://www.gov.br/iti/pt-br/assuntos/icp-brasil + https://www.gov.br/iti/pt-br/assuntos/icp-brasil + https://www.gov.br/iti/pt-br/assuntos/icp-brasil + https://www.gov.br/iti/pt-br/assuntos/icp-brasil + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/BRdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + + BR + + O quadro jurídico aplicável à presente implementação desta TSL (Trusted-Service Status List) é o Acordo do Mercosul, decreto 12.376 de 6 de defeveiro de 2025 e as diretrizes estabelecidas pelo Comite Gestor da ICP-Brasil + The legal framework applicable to the present implementation of this TSL (Trusted-Service Status List) is the Mercosur Agreement and the guidelines established by the ICP-Brasil Management Committee + El marco legal aplicable a la presente implementación de esta TSL (Trusted-Service Status List) es el Acuerdo del Mercosur y las directrices establecidas por el Comité de Gestión ICP-Brasil + Pe marco jurídico ojeporúva ko TSL (Lista de Estatus de Servicio Confiable) ñemboguatarã ko’ágã ha’e Acuerdo Mercosur ha umi directriz omopyendáva Comité de Gestión ICP-Brasil + + 65535 + + + + + + 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 + + + + https://validar.iti.gov.br/trustlist/trust-list-MB.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/MBlistofthelists + + + MB + + + application/vnd.etsi.tsl+xml + + + + Secretaria do Mercosul + Secretaria del Mercosul + Mercosur Secretariat + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + + + + + + + + + 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 + + + + https://validar.iti.gov.br/trustlist/trust-list-BR.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/BRlist + + + BR + + + application/vnd.etsi.tsl+xml + + + + Instituto Nacional De Tecnologia Da Informação ITI + National Institute of Information Technology ITI + Instituto Nacional de Tecnologías de la Información ITI + Instituto Nacional de Tecnología de la Información ITI + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/BR + + + + + + 2025-11-07T03:00:00Z + + 2026-05-07T02:59:59Z + + + https://validar.iti.gov.br/trustlist/trust-list-BR.xml + + + + + + + Instituto Nacional De Tecnologia Da Informação ITI + National Institute of Information Technology ITI + Instituto Nacional de Tecnologías de la Información ITI + Instituto Nacional de Tecnología de la Información ITI + + + ICP-Brasil + ICP-Brasil + ICP-Brasil + ICP-Brasil + + + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + SCN Q 2 bloco E + Brasília + DF + 70712-905 + BR + + + + https://www.gov.br/iti + https://www.gov.br/iti + https://www.gov.br/iti + https://www.gov.br/iti + + + + https://www.gov.br/iti/pt-br/ + https://www.gov.br/iti/pt-br/ + https://www.gov.br/iti/pt-br/ + https://www.gov.br/iti/pt-br/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira + Brazilian Root Certification Authority + Autoridad de Certificación Raíz de Brasil + Autoridad de Certificación de Raíz Brasileño rehegua + + + +MIIEuDCCA6CgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxETAPBgNVBAcTCEJyYXNpbGlhMQswCQYDVQQIEwJERjExMC8GA1UEAxMoQXV0b3JpZGFkZSBDZXJ0aWZpY2Fkb3JhIFJhaXogQnJhc2lsZWlyYTAeFw0wMTExMzAxMjU4MDBaFw0xMTExMzAyMzU5MDBaMIG0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsGA1UECxM0SW5zdGl0dXRvIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3JtYWNhbyAtIElUSTERMA8GA1UEBxMIQnJhc2lsaWExCzAJBgNVBAgTAkRGMTEwLwYDVQQDEyhBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwPMudwX/hvm+Uh2b/lQAcHVAisamaLkWdkwP9/S/tOKIgRrL6Oy+ZIGlOUdd6uYtk9Ma/3pUpgcfNAj0vYm5gsyjQo9emsc+x6m4VWwk9iqMZSCK5EQkAq/Ut4n7KuLE1+gdftwdIgxfUsPt4CyNrY50QV57KM2UT8x5rrmzEjr7TICGpSUAl2gVqe6xaii+bmYR1QrmWaBSAG59LrkrjrYtbRhFboUDe1DK+6T8s5L6k8c8okpbHpa9veMztDVC9sPJ60MWXh6anVKo1UcLcbURyEeNvZneVRKAAU6ouwdjDvwlsaKydFKwed0ToQ47bmUKgcm+wV3eTRk36UOnTwIDAQABo4HSMIHPME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcCARYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYwPQYDVR0fBDYwNDAyoDCgLoYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFjcmFpei5jcmwwHQYDVR0OBBYEFIr68VeEERM1kEL6V0lUaQ2kxPA3MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAZA5c1U/hgIh6OcgLAfiJgFWpvmDZWqlV30/bHFpj8iBobJSm5uDpt7TirYh1Uxe3fQaGlYjJe+9zd+izPRbBqXPVQA34EXcwk4qpWuf1hHriWfdrx8AcqSqr6CuQFwSr75FosSzlwDADa70mT7wZjAmQhnZx2xJ6wfWlT9VQfS//JYeIc7Fue2JNLd00UOSMMaiK/t79enKNHEA2fupH3vEigf5Eh4bVAN5VohrTm6MY53x7XQZZr1ME7a55lFEnSeT0umlOAjR2mAbvSM5X5oSZNrmetdzyTj2flCM8CC7MLab0kkdngRIlUBGHF1/S5nmPbK+9A46sd33oqK8n8 + + +CN=Autoridade Certificadora Raiz Brasileira, ST=DF, L=Brasilia, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +ivrxV4QREzWQQvpXSVRpDaTE8Dc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira +Brazilian Root Certification Authority +Autoridad de Certificación Raíz de Brasil +Autoridad de Certificación de Raíz Brasileño rehegua + + + + CN=Autoridade Certificadora Raiz Brasileira, ST=DF, L=Brasilia, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + ivrxV4QREzWQQvpXSVRpDaTE8Dc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2011-11-30T23:59:00Z + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira +Brazilian Root Certification Authority +Autoridad de Certificación Raíz de Brasil +Autoridad de Certificación de Raíz Brasileño rehegua + + + + CN=Autoridade Certificadora Raiz Brasileira, ST=DF, L=Brasilia, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + ivrxV4QREzWQQvpXSVRpDaTE8Dc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2001-11-30T12:58:00Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v1 + Brazilian Root Certification Authority v1 + Autoridad de Certificación Raíz de Brasil v1 + Autoridad de Certificación de Raíz Brasileña rehegua v1 + + + +MIIEgDCCA2igAwIBAgIBATANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwHhcNMDgwNzI5MTkxNzEwWhcNMjEwNzI5MTkxNzEwWjCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDOHOi+kzTOybHkVO4J9uykCIWgP8aKxnAwp4CM7T4BVAeMGSM7n7vHtIsgseL3QRYtXodmurAH3W/RPzzayFkznRWwn5LIVlRYijonojQem3i1t83lm+nALhKecHgH+o7yTMD45XJ8HqmpYANXJkfbg3bDzsgSu9H/766zYn2aoOS8bn0BLjRg3IfgX38FcFwwFSzCdaM/UANmI2Ys53R3eNtmF9/5Hw2CaI91h/fpMXpTT89YYrtAojTPwHCEUJcV2iBL6ftMQq0raI6j2a0FYv4IdMTowcyFE86tKDBQ3d7AgcFJsF4uJjjpYwQzd7WAds0qf/I8rF2TQjn0onNFAgMBAAGjgdQwgdEwTgYDVR0gBEcwRTBDBgVgTAEBADA6MDgGCCsGAQUFBwIBFixodHRwOi8vYWNyYWl6LmljcGJyYXNpbC5nb3YuYnIvRFBDYWNyYWl6LnBkZjA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vYWNyYWl6LmljcGJyYXNpbC5nb3YuYnIvTENSYWNyYWl6djEuY3JsMB0GA1UdDgQWBBRCsixcdAEHvpv/VTM77im7XZG/BjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAWWyKdukZcVeD/qf0eg+egdDPBxwMI+kkDVHLM+gqCcN6/w6jgIZgwXCX4MAKVd2kZUyPp0ewV7fzq8TDGeOY7A2wG1GRydkJ1ulqs+cMsLKSh/uOTRXsEhQZeAxi6hQ5GArFVdtThdx7KPoVcaPKdCWCD2cnNNeuUhMC+8XvmoAlpVKeOQ7tOvR4B1/VKHoKSvXQw2f3jFgXbwoAoyYQtGAiOkpIpdrgqYTeQ9ufQ6c/KARHki/352R1IdJPgc6qPmQO4w6tVZp+lJs0wdCuaU4eo9mzh1facMJafYfN+b833u1WNfe3Ig5Pkrg/CN+cnphe8m+5+pss+M1F2HKyIA== + + +CN=Autoridade Certificadora Raiz Brasileira v1, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +QrIsXHQBB76b/1UzO+4pu12RvwY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v1 +Brazilian Root Certification Authority v1 +Autoridad de Certificación Raíz de Brasil v1 +Autoridad de Certificación de Raíz Brasileña rehegua v1 + + + + CN=Autoridade Certificadora Raiz Brasileira v1, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + QrIsXHQBB76b/1UzO+4pu12RvwY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2021-07-29T19:17:10Z + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v1 +Brazilian Root Certification Authority v1 +Autoridad de Certificación Raíz de Brasil v1 +Autoridad de Certificación de Raíz Brasileña rehegua v1 + + + + CN=Autoridade Certificadora Raiz Brasileira v1, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + QrIsXHQBB76b/1UzO+4pu12RvwY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2008-07-29T19:17:10Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v2 + Brazilian Root Certification Authority v2 + Autoridad de Certificación Raíz de Brasil v2 + Autoridad de Certificación Raíz Brasileña rehegua v2 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v2, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +DDkgOrcBH8vXKH1BoMf6Sq0yJL4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v2 +Brazilian Root Certification Authority v2 +Autoridad de Certificación Raíz de Brasil v2 +Autoridad de Certificación Raíz Brasileña rehegua v2 + + + + CN=Autoridade Certificadora Raiz Brasileira v2, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + DDkgOrcBH8vXKH1BoMf6Sq0yJL4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2010-06-21T19:04:57Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v3 + Brazilian Root Certification Authority v3 + Autoridad de Certificación Raíz de Brasil v3 + Autoridad de Certificación de Raíz Brasileña rehegua v3 + + + +MIIDmzCCAv6gAwIBAgIBATAKBggqhkjOPQQDBDCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjMwHhcNMTAwNjIxMTk0NTQwWhcNMjMwNjIxMTk0NTQwWjCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjMwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABAH4FsZK7KWFoG93qg0P56nb8k0IXDOW188VXXGoJD0P17mbSwR2OUnZsBwqaFFlii+BSU6KL1J2LSY2JSoDFf60WgFYYrRHZrt0axkbUqoqswpHc9daxbXKbl7uJWK0IocoHnlThPAInk41H8Msm5KDCWkoYDLMwk1hbRfQzMV4657Q46OB9TCB8jBOBgNVHSAERzBFMEMGBWBMAQEAMDowOAYIKwYBBQUHAgEWLGh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9EUENhY3JhaXoucGRmMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9MQ1JhY3JhaXp2My5jcmwwHwYDVR0jBBgwFoAU8oVL8AXgiWZPMrhgsf8/sNG65JYwHQYDVR0OBBYEFPKFS/AF4IlmTzK4YLH/P7DRuuSWMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMEA4GKADCBhgJBdm+/UKCH8bYZu8VEJcr6GD5nYGWU4eteDhXvEhLmhdZpYABF5eKpMn/Q8vCsaRSsI5T6eag2YnMssXRJLh75C/ECQQwkIOK7fi8S00CYFLXv9v79/TaK4antnz+Sz/23PASfXvraR7OAovDPkrek72pm04CpmM92SHSAIq0b2ueB1qPz + + +CN=Autoridade Certificadora Raiz Brasileira v3, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +8oVL8AXgiWZPMrhgsf8/sNG65JY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v3 +Brazilian Root Certification Authority v3 +Autoridad de Certificación Raíz de Brasil v3 +Autoridad de Certificación de Raíz Brasileña rehegua v3 + + + + CN=Autoridade Certificadora Raiz Brasileira v3, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + 8oVL8AXgiWZPMrhgsf8/sNG65JY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2014-02-26T03:00:00Z + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v3 +Brazilian Root Certification Authority v3 +Autoridad de Certificación Raíz de Brasil v3 +Autoridad de Certificación de Raíz Brasileña rehegua v3 + + + + CN=Autoridade Certificadora Raiz Brasileira v3, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + 8oVL8AXgiWZPMrhgsf8/sNG65JY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2010-06-21T19:45:40Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v4 + Brazilian Root Certification Authority v4 + Autoridad de Certificación Raíz de Brasil v4 + Autoridad de Certificación de Raíz Brasileña rehegua v4 + + + +MIIFODCCBJygAwIBAgIBATAKBggqhkjOPQQDBDCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjQwHhcNMTUwNDIzMTgzODU4WhcNMzUwNDIzMjM1OTU4WjCBlzELMAkGA1UEBhMCQlIxEzARBgNVBAoMCklDUC1CcmFzaWwxPTA7BgNVBAsMNEluc3RpdHV0byBOYWNpb25hbCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMMK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjQwggI4MIIBrwYHKoZIzj0CATCCAaICAQEwTAYHKoZIzj0BAQJBAKrdnbjb6cSLP9TmrjPJ/AfLMI2zs8nSDtZjnMpwMwhxfU2bAJvGaEKuzaEq5qOA5iiB/y8tgsaFKKpgVlg6SPMwgYQEQHgwozGLYDuJ4jJxRawjTMWUy92NPfkWEKg0QcrqmGO8Le1dWqglOqEKLvHJi5rItX8RF6cr8se558GsTXf8lMoEQD35FhCoNEHK6phjvC3tXVqoJTqhCi7xyYuayLV/ERenK/LHuefBrE13/JTK3Ag+Z5hAULdeuuXdKAm9Y4AW9yMEgYEEga7kvdgu2WRaITIunExqk4Xtn3C12RbBtDti7vTQCY7/Ox944tDUjVDRaHuTuX1ffG1QR0BqXmiLNSIJvLn4In3eOF1WYzLswOq/qc94Iv3yCfcAJKV7GqAAxVuIH4ERstzeSUpfSF5bykvYiidjrtHKKy+o8FQGeM0eDzrYCJICQQCq3Z242+nEiz/U5q4zyfwHyzCNs7PJ0g7WY5zKcDMIcFU+XEFMqSYZQYZhGX+sEEcdsdOBCF3a3bWHloKcqQBpAgEBA4GCAASh2JXCKnslsJmFrhkIZUn+kmuxJzTrNLMrEqd16TttJArlN5Z1ZgmwykWEJiXexnz1NiH56Q+uVAQv+cUHEEnnaCai4JADtzVU6JTArh2NdCKdfYAvFUXsuxBt77ZC5RHdoxTxJ0F2Bog/ZrTp0UiZTEHFhvd7ZI9qwBhoX6TSKKOB9TCB8jBOBgNVHSAERzBFMEMGBWBMAQEAMDowOAYIKwYBBQUHAgEWLGh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9EUENhY3JhaXoucGRmMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly9hY3JhaXouaWNwYnJhc2lsLmdvdi5ici9MQ1JhY3JhaXp2NC5jcmwwHwYDVR0jBBgwFoAUQ2kmGavdx43zrDUyEVRy6MmZCk0wHQYDVR0OBBYEFENpJhmr3ceN86w1MhFUcujJmQpNMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMEA4GJADCBhQJBAJXLz8mEYizmFEmnHUsAWjXz974qT+n5Vln6tLxt5wIuK4Vt8GIG9OHSLMjORIMjMXjW6DnQydlLBh5k5MKWBbQCQD4dMp0flw1SZieapVRy8KKLAU0MrE6u3A8PGVemgXoD0ipvpjj0SZ5QIFTfjfp7ISqZFggO0sdSpTYAmrUhAd4= + + +CN=Autoridade Certificadora Raiz Brasileira v4, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +Q2kmGavdx43zrDUyEVRy6MmZCk0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v4 +Brazilian Root Certification Authority v4 +Autoridad de Certificación Raíz de Brasil v4 +Autoridad de Certificación de Raíz Brasileña rehegua v4 + + + + CN=Autoridade Certificadora Raiz Brasileira v4, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + Q2kmGavdx43zrDUyEVRy6MmZCk0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2015-04-23T18:38:58Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v5 + Brazilian Root Certification Authority v5 + Autoridad de Certificación Raíz de Brasil v5 + Autoridad de Certificación Raíz Brasileña rehegua v5 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v5, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +aai+ddnE72znE0XkYW7laPi2QF4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v5 +Brazilian Root Certification Authority v5 +Autoridad de Certificación Raíz de Brasil v5 +Autoridad de Certificación Raíz Brasileña rehegua v5 + + + + CN=Autoridade Certificadora Raiz Brasileira v5, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + aai+ddnE72znE0XkYW7laPi2QF4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2016-03-02T13:01:38Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v8 + Brazilian Root Certification Authority v8 + Autoridad de Certificación Raíz de Brasil v8 + Autoridad de Certificación de Raíz Brasileña rehegua v8 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v8, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +Lvft/v3CTye8XhAppbasYH/C5b0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v8 +Brazilian Root Certification Authority v8 +Autoridad de Certificación Raíz de Brasil v8 +Autoridad de Certificación de Raíz Brasileña rehegua v8 + + + + CN=Autoridade Certificadora Raiz Brasileira v8, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + Lvft/v3CTye8XhAppbasYH/C5b0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2018-12-18T02:00:00Z + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v8 +Brazilian Root Certification Authority v8 +Autoridad de Certificación Raíz de Brasil v8 +Autoridad de Certificación de Raíz Brasileña rehegua v8 + + + + CN=Autoridade Certificadora Raiz Brasileira v8, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + Lvft/v3CTye8XhAppbasYH/C5b0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2018-09-25T17:34:28Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v9 + Brazilian Root Certification Authority v9 + Autoridad de Certificación Raíz de Brasil v9 + Autoridad de Certificación de Raíz Brasileña rehegua v9 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v9, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + ++nRAVj2bUHA63Hpkes4Rn50UvHw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v9 +Brazilian Root Certification Authority v9 +Autoridad de Certificación Raíz de Brasil v9 +Autoridad de Certificación de Raíz Brasileña rehegua v9 + + + + CN=Autoridade Certificadora Raiz Brasileira v9, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + +nRAVj2bUHA63Hpkes4Rn50UvHw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/deprecatedatnationallevel + 2018-12-18T02:00:00Z + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v9 +Brazilian Root Certification Authority v9 +Autoridad de Certificación Raíz de Brasil v9 +Autoridad de Certificación de Raíz Brasileña rehegua v9 + + + + CN=Autoridade Certificadora Raiz Brasileira v9, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + +nRAVj2bUHA63Hpkes4Rn50UvHw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2018-09-25T17:48:48Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v10 + Brazilian Root Certification Authority v10 + Autoridad de Certificación Raíz de Brasil v10 + Autoridad de Certificación de Raíz Brasileña rehegua v10 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v10, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +dPN+//yfU3rxfOurPqSm2hi6RWM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v10 +Brazilian Root Certification Authority v10 +Autoridad de Certificación Raíz de Brasil v10 +Autoridad de Certificación de Raíz Brasileña rehegua v10 + + + + CN=Autoridade Certificadora Raiz Brasileira v10, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + dPN+//yfU3rxfOurPqSm2hi6RWM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2019-07-01T19:15:59Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v11 + Brazilian Root Certification Authority v11 + Autoridad de Certificación Raíz de Brasil v11 + Autoridad de Certificación de Raíz Brasileña rehegua v11 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v11, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +nK1i4ZftgJ5zOR7cUb7HBMvYHqk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v11 +Brazilian Root Certification Authority v11 +Autoridad de Certificación Raíz de Brasil v11 +Autoridad de Certificación de Raíz Brasileña rehegua v11 + + + + CN=Autoridade Certificadora Raiz Brasileira v11, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + nK1i4ZftgJ5zOR7cUb7HBMvYHqk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2019-07-01T19:26:18Z + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + Autoridade Certificadora Raiz Brasileira v12 + Brazilian Root Certification Authority v12 + Autoridad de Certificación Raíz de Brasil v12 + Autoridad de Certificación de Raíz Brasileña rehegua v12 + + + +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 + + +CN=Autoridade Certificadora Raiz Brasileira v12, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + +asF615LBumlO1uLzwpmEib5VdA4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2024-10-22T14:41:24Z + + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + https://www.gov.br/iti/ + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +Autoridade Certificadora Raiz Brasileira v12 +Brazilian Root Certification Authority v12 +Autoridad de Certificación Raíz de Brasil v12 +Autoridad de Certificación de Raíz Brasileña rehegua v12 + + + + CN=Autoridade Certificadora Raiz Brasileira v12, OU=Instituto Nacional de Tecnologia da Informacao - ITI, O=ICP-Brasil, C=BR + + + asF615LBumlO1uLzwpmEib5VdA4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2024-10-22T14:41:24Z + + + + + + +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2025-11-06T14:09:34ZM+JQ0Shbz+o3w1qDwqbmfIlYlMM=CN=Autoridade Certificadora da Presidencia da Republica v5,OU=Autoridade Certificadora Raiz Brasileira v5,O=ICP-Brasil,C=BR43405375132394839540616535117text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fhpgofbkkojckgdcahjlamhgcbiihmbm b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fhpgofbkkojckgdcahjlamhgcbiihmbm new file mode 100644 index 0000000000..22272ec03f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fhpgofbkkojckgdcahjlamhgcbiihmbm @@ -0,0 +1,329 @@ + + + 5 + 6 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/UYlist + + AGESIC + AGESIC + AGESIC + AGESIC + + + + + Liniers 1324 piso 4 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 piso 4 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 piso 4 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 piso 4 + Montevideo + Montevideo + 11000 + UY + + + + mailto:identificacion.electronica@agesic.gub.uy + mailto:identificacion.electronica@agesic.gub.uy + mailto:identificacion.electronica@agesic.gub.uy + mailto:identificacion.electronica@agesic.gub.uy + + + + UY: The trust list contains information related to the roots of trust of the national PKI in Uruguay according to Law 18600 of September 21, 2009. + UY: La lista de confianza contine informción relacionada con las raíces de confianza de la PKI nacional en Uruguay de acuerdo a la Ley 18600 de 21 de setiembre de 2009. + UY: A lista de confiança contém informações relacionadas às raízes de confiança da PKI nacional no Uruguai de acordo com a Lei 18.600 de 21 de setembro de 2009. + UY: Ko lista de fideicomisos oreko marandu ojoajúva raíz de confianza PKI nacional Uruguay-pe he'iháicha Ley 18600 21 de setiembre 2009. + + + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/UYdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UY + + UY + + The legal framework applicable to the present implementation of this TSL (Trusted-Service Status List) is the Mercosur Agreement and the policies established by the Electronic Certification Unit + El marco legal aplicable a la presente implementación de esta TSL (Trusted-Service Status List) es el Acuerdo del Mercosur y las políticas establecidas por la Unidad de Certificación Electrónica + O marco legal aplicável à presente implementação desta TSL (Trusted-Service Status List) é o Acordo Mercosul e as políticas estabelecidas pela Unidade de Certificação Eletrônica + El marco legal aplicable a la presente implementación de esta TSL (Trusted-Service Status List) es el Acuerdo del Mercosur y las políticas establecidas por la Unidad de Certificación Electrónica + + 65535 + + + + + + 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 + + + + http://www.gub.uy/unidad-certificacion-electronica/sites/unidad-certificacion-electronica/files/2022-11/tsl_mb.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/MBlistofthelists + + + MB + + + application/vnd.etsi.tsl+xml + + + + Mercosur Secretariat + Secretaría de Mercosur + Secretaria do Mercosul + Secretaría del Mercosur-pe + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + + + + + + + + + MIIFtTCCA52gAwIBAgIQbs4yVC5nWaFbP66tp0hSejANBgkqhkiG9w0BAQsFADBtMTwwOgYDVQQDEzNBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYSBkZWwgTWluaXN0ZXJpbyBkZWwgSW50ZXJpb3IxIDAeBgNVBAoTF01pbmlzdGVyaW8gZGVsIEludGVyaW9yMQswCQYDVQQGEwJVWTAeFw0xODA3MDYxODAyMjFaFw0yMzA3MDYxODAyMjFaMEgxCzAJBgNVBAYTAlVZMRQwEgYDVQQFEwtETkkzNDE5OTUwODEjMCEGA1UEAwwaSEVCRVJUIEpVTElPIFBBR1VBUyBQQVNUT1IwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqOzfXHqaNYm8etoGZsGw5RArXmDU3rj1g9T8c5JHOh+DnlLnOXjkVaX7XjRSbMi3HWhM6vHoBPAFa4mRVuNuBUXxXQMR/2N7w0YkzQf5kRhqB+o8oA3rIyY5InFnDlozajAjT7SEpE/CNbVxrA9T3B9leOHNZtsvGiMZ8YtKnSJz5U8wJ3oyTkak0WV2LajHEo8wooBsmNI2nCIIXdG80QNUi6qvpp1H+iVGAZnFq3H+vwzkz0xUOTp/OGQmjLEQHoqGJruDgBoSAi14954aF9lyQD8unqE4nKRTf46TcziFBC5qTy2g6cHv19iTaZuTm2iXu0fVLeL2dnI3dcdrrAgMBAAGjggF0MIIBcDAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIE8DAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwHQYDVR0OBBYEFMnqKm76XDxJVhaszcsRdwTKquuJME0GCCsGAQUFBwEBBEEwPzA9BggrBgEFBQcwAoYxaHR0cHM6Ly9jYS5taW50ZXJpb3IuZ3ViLnV5L2NlcnRpZmljYWRvcy9NSUNBLmNlcjAfBgNVHSMEGDAWgBSfszQ8mzqpYBDKyFkEbe2tYixI/zBqBgNVHSAEYzBhMF8GC2CGWoTirh2EiAUCMFAwTgYIKwYBBQUHAgEWQnd3dy51Y2UuZ3ViLnV5L2luZm9ybWFjaW9uLXRlY25pY2EvcG9saXRpY2FzL2NwX3BlcnNvbmFfZmlzaWNhLnBkZjA5BgNVHR8EMjAwMC6gLKAqhihodHRwczovL2NhLm1pbnRlcmlvci5ndWIudXkvY3Jscy9jcmwuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA5JxF5rC8syHkljTe3ZjLVlPxOPXDUv2Nw165N8H16n2nmPrs8y+PL2/+KV7OgRyWbC7w47NwHnl1IAWnenXZMJ2uLvPnLUyaqw1rgd5SGJ9WFMfc/3uS0mmPg028oar79UUG/9A0Xyft+gz0KutFNjqxVeer1NnaDa+exVarzML+h7r3uxHwzYXcmeR+0acmmwYWSlClpKBA9HyTE+V+PRGhChXAwx77ZmTL2fBIh/l2gsIOYLwXabHtX9dQ6w7bNhSPUNzutrTKHfiajsDlyUT48nvy0DeiG/ypyE06Zv50mFFZOUVHo3Mgp9B57wzox8cxm12RVpB88Ek516icpRMFp8gY1WTeQqh1ebyoQtGM3Bj8TbKDK4RqIEnipsI4NOmPrAf8f3x4RF31UuN/TZs+0nlF8n0zz5cTCflQNIZeQU+ExLK3XfYhDMRYy1JtSpifN/FelE9Ft+qKr4EHI1IBQUUHQKCXLPWjIfb5lQqK5gB4uUKZ6QHxvh43H5cBNW39H7Wz6vpckbaReMJdjOWDRuhHbrdIE8jZHSo6OkA64+9V8SYLiQPYfUAI6Wz0Vn/2bXqneJjl/7LpmiwjDbx3VTHQQQj8zuHOlV3QDOH82PzZnVK6yYxMgJ8UG5ix+m17PCbOY1pgmGroXWCc3ZFqjAjVfV24mOD0BKAdkuQ== + + + + https://www.gub.uy/unidad-certificacion-electronica/sites/unidad-certificacion-electronica/files/2022-11/tsl_uy.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/UYlist + + + UY + + + application/vnd.etsi.tsl+xml + + + + UCE + UCE + UCE + UCE + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UY + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UY + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UY + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/UY + + + + + + 2025-06-12T03:00:00Z + + 2025-12-12T02:59:59Z + + + https://www.gub.uy/unidad-certificacion-electronica/sites/unidad-certificacion-electronica/files/2022-11/tsl_uy.xml + + + + + + + AGESIC + AGESIC + AGESIC + AGESIC + + + AGESIC + AGESIC + AGESIC + AGESIC + + + + + Liniers 1324 Piso 3 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 Piso 3 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 Piso 3 + Montevideo + Montevideo + 11000 + UY + + + Liniers 1324 Piso 3 + Montevideo + Montevideo + 11000 + UY + + + + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + + + + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + https://www.gub.uy/unidad-certificacion-electronica/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + National Root Certification Authority - Uruguay + Autoridade Nacional de Certificação Raiz - Uruguai + Autoridad Certificadora Raíz Nacional - Uruguay + Autoridad Nacional de Certificación de Raíz - Uruguay + + + +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 + + +C=UY, O=AGESIC, CN=Autoridad Certificadora Raíz Nacional de Uruguay + + +kp6RuFUoPXdCLDOlmF/QyayNtaM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-11-07T03:00:00Z + + https://www.gub.uy/unidad-certificacion-electronica/comunicacion/publicaciones/declaracion-de-practicas-de-certificacion-de-la-autoridad-1 + https://www.gub.uy/unidad-certificacion-electronica/comunicacion/publicaciones/declaracion-de-practicas-de-certificacion-de-la-autoridad-1 + https://www.gub.uy/unidad-certificacion-electronica/comunicacion/publicaciones/declaracion-de-practicas-de-certificacion-de-la-autoridad-1 + https://www.gub.uy/unidad-certificacion-electronica/comunicacion/publicaciones/declaracion-de-practicas-de-certificacion-de-la-autoridad-1 + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +National Root Certification Authority - Uruguay +Autoridade Nacional de Certificação Raiz - Uruguai +Autoridad Certificadora Raíz Nacional - Uruguay +Autoridad Nacional de Certificación de Raíz - Uruguay + + + + C=UY, O=AGESIC, CN=Autoridad Certificadora Raíz Nacional de Uruguay + + + kp6RuFUoPXdCLDOlmF/QyayNtaM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2011-11-03T15:02:49Z + + + + + + + + + + + + + + + +mEitzmTWBx7preWyNXzYd6L8kgUPXBA1txSd0Oj5Y8k= + + + +US3zPlfGwDAAbCwERqO2vaECDjx4abewsq/a8dagt5s= + + + +At6s7OBvqnyZJ+C36Z/cNay9T82UntsFIkAwMGkkNvtZ3POQfQ+im1uM7HDFjFXK+5O+9uT2Fr84 +Kws1zno1DEfXI4Q/3V1iGbGb1gHnDIuSbBVTP6ULR2XfQGrMTJjtwE0DzeF/J9KyyvzOqa8rMIIk +8Ar+MCF+KOVEDSVRhgR847W3a7/W6eQ2Zn1m2fJ0XAPlIJJzYwR4TQkQZ+vd3Rfi7ULFTPlGr61n +sMlGsioRf8prcCsdji9cQveD87YKKNnJbsMMaZgnsDsxLKsE+I9AnXFObJms2arQS3SYOiA1FA9i +aHTm3HY7AE3ldnF908wmLV9Mk3OiYZcVlVhFsQ== + + + + +MIIFsDCCA5igAwIBAgIQEbTm669/QzljW76Ha7c78zANBgkqhkiG9w0BAQsFADBtMTwwOgYDVQQD +EzNBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYSBkZWwgTWluaXN0ZXJpbyBkZWwgSW50ZXJpb3IxIDAe +BgNVBAoTF01pbmlzdGVyaW8gZGVsIEludGVyaW9yMQswCQYDVQQGEwJVWTAeFw0yMjEwMjgxMTM1 +MzVaFw0yNzEwMjgxMTM1MzVaMEMxCzAJBgNVBAYTAlVZMRQwEgYDVQQFEwtETkkxNDkxODcxMDEe +MBwGA1UEAwwVREFOSUVMIE1PUkRFQ0tJIFBVUEtPMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAqGgkil8nMl6I+QEVPlPcn0WpFn/AuR/x7VyzzrwONRCUX5CfRVkoF1Om+UaU+AuMpA2m +EeUxxhEGcK/T306zMn/tLgHzXyaDxwUJ3dM2rO5ouOZnJDcX4EaTgfv32xNIxidCcBVKrtpTSrE8 +Uh9KtjOp+YE/rx6ING+Ms51yUM9/Q3Fz7Fl/uInuFeTTCetV01mmLpWMbxNyzyp9lwA4BcsrI8Gl +C0umz+d/8DW+LG5BGmrT4iisUUUOgoYzLjTFXyVSw3QZof6Da4HWk4o5qw8oNBzT1c1+l5SKTYuC ++4ABDwBydPYaoEMcuM/uJ3GBv1LEXKCaZBtZpIlH2o4h8QIDAQABo4IBdDCCAXAwCQYDVR0TBAIw +ADAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQW +BBRWN450nJy9hJTDPQpZQvyAbFm7GjBNBggrBgEFBQcBAQRBMD8wPQYIKwYBBQUHMAKGMWh0dHBz +Oi8vY2EubWludGVyaW9yLmd1Yi51eS9jZXJ0aWZpY2Fkb3MvTUlDQS5jZXIwHwYDVR0jBBgwFoAU +n7M0PJs6qWAQyshZBG3trWIsSP8wagYDVR0gBGMwYTBfBgtghlqE4q4dhIgFAjBQME4GCCsGAQUF +BwIBFkJ3d3cudWNlLmd1Yi51eS9pbmZvcm1hY2lvbi10ZWNuaWNhL3BvbGl0aWNhcy9jcF9wZXJz +b25hX2Zpc2ljYS5wZGYwOQYDVR0fBDIwMDAuoCygKoYoaHR0cHM6Ly9jYS5taW50ZXJpb3IuZ3Vi +LnV5L2NybHMvY3JsLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAuyOOA2bJvnutmUd2iTOHp0fjFHG+ +1Y+94q6KaEH1xc92rKk07fwvrZlP4SBSXCJPK9VrOsEKoXCH39Xpz6FkL1dyPbd0i4t6jY6GWxAI +zk2ZX13R4xpZYwUOephVe8sNBmTxt4ghUe73nnU1+zrSRxGAyOt8mp3jzEtUz05tNqQq5DzvGUR8 +4YfD83KYRs3Q7EO2cyAmMTRJ8yTnlAL0osYBmL6X/MRdl/7v1SeP5hvmR5R2nkSKciuDU0glFZVz +FmgFmMf5hLt7pFGcAooiFkpxKh9p4WM9BM85okpeFk4Pi1/hmhgKAF19t7j7XRRLFihq+bxcqEkC +g3MZjWr+1vWlyevEV8hcF2J8QlTcm8oM9bkWyz64NXeLPaV+54g7EScEnLwA+AxB1alJfeLbYpqJ +gtIxiWtDkZYlB2linKHhoRAHBFsrcPYxzaEJJXRbp992cP+UYR77VjO2eCiYxyhIYDDWT1f2vCgX +ts+ftYtVLDK5ijn6F3Cup++dueyWav7c9sMgjRtqs0Pv0ybesKoJptewPP0L8IilpRQ0Hx6vqG6V +ZYaM4SvIiO0rovMdIAIKuuj0AGBYhDa72U9YovbujpKruvCzfW9+V+TcgRqgTfTXDS9+PztHkvO9 +CHa9CdUmbtgqiEcsBL2itBWlHpmwGPTHij05OjS+d/uQuzU= + + + +2025-06-16T18:56:21.914-03:00OiZa86/zeXqQyl6JyzRzQjStFfwd6w4qs5thPawupDw=C=UY,O=Ministerio del Interior,CN=Autoridad Certificadora del Ministerio del Interior23536172990020597303821786635820284915text/xml + \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fimggiaaacpfiaidmepldiefglijimgk b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fimggiaaacpfiaidmepldiefglijimgk new file mode 100644 index 0000000000..da56f9c36e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/fimggiaaacpfiaidmepldiefglijimgk @@ -0,0 +1,467 @@ + + + 5 + 4 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/GElist + + LEPL Digital Governance Agency + სსიპ ციფრული მმართველობის სააგენტო + + + + + 22 Gorgasali Street + Tbilisi + 0114 + GE + + + გორგასლის ქუჩა 22 + თბილისი + 0114 + GE + + + + http://www.dga.gov.ge + mailto:info@dga.gov.ge + + + + GE:The list includes information related to the qualified trust + service providers operating in Georgia together with information related to the + qualified trust services provided by them, according to the Georgian legislation + GE:წინამდებარე სია შეიცავს კვალიფიციური სანდო მომსახურების + მიმწოდებლებთან დაკავშირებულ ინფორმაციას, მათ მიერ მიწოდებულ კვალიფიციურ სანდო + მომსახურებებთან ერთად, საქართველოს კანონმდებლობის შესაბამისად + + + http://www.dga.gov.ge + http://www.dga.gov.ge + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/StatusDetn/GEdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/GE + + GE + + The document is provided based on Georgian legislation + დოკუმენტი მოგეწოდებათ საქართველოს კანონმდებლობის + შესაბამისად + + 65535 + 2025-09-22T14:00:00Z + + 2026-03-22T13:00:00Z + + + + + + + LEPL Public Service Development Agency + სსიპ სახელმწიფო სერვისების განვითარების სააგენტო + + + Public Service Development Agency + სახელმწიფო სერვისების განვითარების სააგენტო + Civil Registry Agency + Ministry of Justice of Georgia + + + + + Zviad Gamsakhurdia Sanapiro №1 + Tbilisi + 0114 + GE + + + ზვიად გამსახურდიას სანაპირო N1 + თბილისი + 0114 + GE + + + + https://id.ge + mailto:online@sda.gov.ge + http://www.sda.gov.ge + + + + https://id.ge/pki + https://id.ge/pki + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GEO Signing CA G2 + GEO Signing CA G2 + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=GEO Signing CA G2 + + + ENlfGyWCrKGMCQo9Poiuq3Vwnlc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-05-25T20:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + + true + + + + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GEO Signing CA + GEO Signing CA + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Civil + Registry Agency, CN=GEO Signing CA + + + NJcxuuhOf4/nNydjLgYfQsmqsXE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-05-25T20:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + + true + + + + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GEO ESeal CA G2 + GEO ESeal CA G2 + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=GEO ESeal CA G2 + + + uslCIKqtrClCo+Bt35g2CgXqPWU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-06-02T20:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + + true + + + + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GEO ESeal CA 2 + GEO ESeal CA 2 + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=GEO ESeal CA + + + 1hKMlTI04Ob9bZOUh4pceU/3ui8= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-06-02T20:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + + true + + + + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GEO ESeal CA + GEO ESeal CA + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=GEO ESeal CA + + + yHq6LhbqWOajKn0oYcGQDHBDD/k= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-06-02T20:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + + true + + + + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + http://www.dga.gov.ge/tsl/qscd-description + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + SDA Time Stamping CA 2 + SDA Time Stamping CA 2 + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=SDA TimeStamping CA + + + rfInafAJ+paSfxD0jiNHHlH8DFg= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-04-08T20:00:00Z + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + SDA Time Stamping CA + SDA Time Stamping CA + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=SDA TimeStamping CA + + + ovTPFVEsX5uWQkgTO20QFAiWZUA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-04-08T20:00:00Z + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + SDA Time Stamping CA G2 + SDA Time Stamping CA G2 + + + + + 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 + + + C=GE, O=Ministry of Justice of Georgia, OU=Public + Service Development Agency, CN=SDA TimeStamping CA G2 + + + hTdbURhiTQ72rzrUlWZvOMzPjt0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-31T20:00:00Z + + + + + +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-09-22T12:06:42ZLmPSeYbAcnRu3N2g/Fkb4cHRjgL5wXKYWq4jqshszWxdveMuxB9BujoZep/RCXVKYXwhAdtzzxG4msJ8iQlpmw==C=GE,O=Ministry of Justice of Georgia,OU=Public Service Development Agency,CN=GEO Signing CA G2112274364578951840340145686139831051891408421510text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/gnefdknifngndidohaofmlomnphadlji b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/gnefdknifngndidohaofmlomnphadlji new file mode 100644 index 0000000000..46b2eb3547 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/gnefdknifngndidohaofmlomnphadlji @@ -0,0 +1,983 @@ + + + + 5 + 3 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/MKlist + + Republic of North Macedonia, Ministry of information society and administration + Република Северна Македонија, Министерство за информатичко општество и администрација + Republika e Maqedonisë së Veriut, Ministria e Shoqërisë Informatike dhe Administratës + + + + + Bul. "Ss. Cyril and Methodius" No.54 + Skopje + 1000 + MK + + + Бул. „Св.Кирил и Методиј“ бр.54 + Скопје + 1000 + MK + + + Bulevardi "Shën Qirili dhe Metodi", nr.54 + Shkup + 1000 + MK + + + + mailto:trusteid@mioa.gov.mk + https://trusteid.mioa.gov.mk + + + + MK:List of qualified trust service providers and qualified trust services with information related to qualified trust service providers supervised by the Republic of North Macedonia, including information on qualified trust services they provide, in accordance with the relevant provisions prescribed by Law on electronic documents, electronic identification and trust services. + MK:Листа на даватели на квалификувани доверливи услуги и на квалификувани доверливи услуги со вклучени информации поврзани со давателите на квалификувани доверливи услуги врз кои врши надзор Република Северна Македонија, заедно со информациите за квалификуваните доверливи услуги кои тие ги обезбедуваат, во согласност со соодветните одредби пропишани со Законот за електронски документи, електронска идентификација и доверливи услуги. + + + https://trusteid.mioa.gov.mk/schemeinformationuri/ + https://trusteid.mioa.gov.mk/schemeinformationuri/ + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/MKdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/МК + + MK + + The applicable legal framework for the present List of Qualified Trust Service Providers and Qualified Trust Services is Law on electronic documents, electronic identification and trust services. + За оваа Листа на даватели на квалификувани доверливи услуги и на квалификувани доверливи услуги применлива правна рамка е Законот за електронски документи, електронска идентификација и доверливи услуги. + + 65535 + + + + + + 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 + + + + https://epotpis.mtt.gov.rs/TrustedList/TSL-RS.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/RSlist + + + RS + + + application/vnd.etsi.tsl+xml + + + + Republic of Serbia, Ministry of Trade, Tourism and Telecommunications + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/RS + + + + + + 2022-01-10T09:00:00Z + + 2022-06-01T08:00:00Z + + + https://trusteid.mioa.gov.mk/TrustedList/TL-MK.xml + + + + + + + KIBS AD Skopje + КИБС АД Скопје + + + Clearing House KIBS AD Skopje + Клириншка куќа Клириншки интербанкарски системи АД Скопје (КИБС АД Скопје) + + + + + bul. „Kuzman Josifovski Pitu“ 1 + Skopje + 1000 + MK + + + бул. „Кузман Јосифовски Питу“ бр. 1 + Скопје + 1000 + MK + + + + mailto:helpdesk@kibstrust.mk + https://www.kibstrust.com + + + + https://www.kibstrust.mk/en-GB/Home/Dokumenti/ + https://www.kibstrust.mk/mk-MK/Home/Dokumenti/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + KIBSTrust Issuing CA for e-Signatures + + + +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 + + +CN=KIBSTrust Issuing CA for e-Signatures, OU=KIBS AD Trust Services, OU=Class 2 DigiCert PKI Platform Individual Subscriber CA, OID.2.5.4.97=NTRMK-5529581, O=KIBS AD Skopje, C=MK + + +VIrKBruxhePwNAD5J38SxvjXXFE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-03-12T23:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.4 + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + KIBSTrust Issuing CA for e-Seals + + + +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 + + +CN=KIBSTrust Issuing CA for e-Seals, OU=KIBS AD Trust Services, OU=Class 2 DigiCert PKI Platform Individual Subscriber CA, OID.2.5.4.97=NTRMK-5529581, O=KIBS AD Skopje, C=MK + + +LRIt9fFbfRy33UPomL/Niw/nKQc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-03-12T23:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.4 + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + KIBS Momentum + КИБС Momentum + + + +CN=KIBSTrust Momentum Timestamp Responder 2016 10 05 1,O=Clearing House Klirinski interbankarski sistemi AD SKOPJE,C=MK + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2020-08-31T22:00:00Z + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + KIBSTrust Root CA G2 + + + +MIIGNDCCBBygAwIBAgIQSHuEHLeb843rMJ53N6dtqTANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJNSzEXMBUGA1UEChMOS0lCUyBBRCBTa29wamUxGzAZBgNVBAsTEktJQlNUcnVzdCBTZXJ2aWNlczEWMBQGA1UEYRMNTlRSTUstNTUyOTU4MTEdMBsGA1UEAxMUS0lCU1RydXN0IFJvb3QgQ0EgRzIwHhcNMjEwMzA0MDAwMDAwWhcNNDEwMzA0MjM1OTU5WjB6MQswCQYDVQQGEwJNSzEXMBUGA1UEChMOS0lCUyBBRCBTa29wamUxGzAZBgNVBAsTEktJQlNUcnVzdCBTZXJ2aWNlczEWMBQGA1UEYRMNTlRSTUstNTUyOTU4MTEdMBsGA1UEAxMUS0lCU1RydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYq5U9By9sw5N9WipUr2UQl29BVGAQjOZBACt5dLXYOGUT68xRr97GkKasZ1JtCZwKAUkzf9PKSspAXev4y/WBxv0XmNgK6yS1FM0MV3Tm+oJf0p5FuHcK90r/ZB4hRlEohYMIRGSnuq0gsX+v2ttCfWtl19uwKW/l2OrNfKO9Afa3iRzXLSjPMwlEUkGorqiRt8hGvZf03GoSfGrBvqq9Thmpq3PylEhW6zzuS06NwuHGnnR7EH+WnhKLbClmp/1OGjJhJ1Knijl/j7LR8+7InyvvECGAxPMXzJfv/IQEY5W8hzXdlKv8sw8BPCtaLfzfy9fxSO7pxCGQujcHHahfciSp30uuzDbyZlwgQT9gIfE3DQgEAFgF4he9wkApTKrGmKdxNsMoJONPLlSTdLsHt65Mifvjighv+gns3r43KRmk/sJ7ZVAmww5fopcrVDQFi96To+hVAg+9uoIw3XhnStSvoRSKWDszcpE6/h0WeMb9KHlqFHLjQkvqA2w+aBhCmnIieZzf/x/6H17iiB50iDmrFRELgzDdfkf4+mnp8wacUxCtgSIPjkOanLNl7i5qrn61Q4fv2e1kDw2V3evm+i01c3wMA7dZ4b9oKpRB8zNQZdu0n+8SRj9Gjj5xRy+zWGs8XQSAqx5/Vv4IQ4wQHnKccDvGcteW3y7bjRVAOQIDAQABo4G1MIGyMA8GA1UdEwEB/wQFMAMBAf8wTwYDVR0gBEgwRjBEBgorBgEEAf8xAQEFMDYwNAYIKwYBBQUHAgEWKGh0dHBzOi8vcGtpLmtpYnN0cnVzdC5jb20vcmVwb3NpdG9yeS9jcHMwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTU6cZ1jtv+pjInocTamgQ1rky8WDAfBgNVHSMEGDAWgBTU6cZ1jtv+pjInocTamgQ1rky8WDANBgkqhkiG9w0BAQsFAAOCAgEAW330S95RKdjcPHcs2sU89QXXXaZCoX+DepAIs+fteaau3wdgGuvis+M0pv4FFPWN11+r42RZ2SNbisHwE6SxQeK2LAzuknbyO8aOo1rirkATyUmH9w38aN+IIjXsFDi0PfM8dYaVb+j3+XCpaayOOF5YkeybgswbWnh49QZpfbnKfrWEMoa6/90dfEVwm2XKLmfuqo91ZEPCJiYMjjnH+euPuehr2/7lUZ1BclqN6XDDluEW7mKpGBUrvzDfVY9HoQvXAdIxomA26MAWYIWz2UfbeOFFTJX+79YqNUjj15tgvMokgZ7ECUclR8K5ZbR9fIURgvetZkc7o18ICEji223G3iQIrhk6AO5tn/5MfO2zDXCOu/zzMrO01DMGzgpMgwx3nfM5s8RqQcyjdriwQdTcVAWXBVUkQnUtVuFZUqMym48RD+/HV9mNHl8QzklhGEyqjvtcT6JZQTMuhL8jbNa8g+tyuh7874zRp0YT7SPiuWLhQA/lpEmt1V5dotJHEU/X0AIlPheTmSOVBa6CWtm3UmKWvo0ew0wLP08lorzRI3Bg7qb9eUUy233IxwSEppGLio4Uj+ngqproLvefqKMly4I+WDK/AL9mqhpDS0xfwSdCgpDvz/8S5lyG5OvuFodmKgl54b2JVddleRDRyTdR1sLaF2nDcjgSCvHmE6k= + + +CN=KIBSTrust Root CA G2, OID.2.5.4.97=NTRMK-5529581, OU=KIBSTrust Services, O=KIBS AD Skopje, C=MK + + +1OnGdY7b/qYyJ6HE2poENa5MvFg= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-03-31T22:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/RootCA-QC + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + KIBSTrust Issuing Qsig CA G2 + + + +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 + + +CN=KIBSTrust Issuing Qsig CA G2, OID.2.5.4.97=NTRMK-5529581, OU=KIBSTrust Services, O=KIBS AD Skopje, C=MK + + +indI8/TgMiHqntUryWM9JajOJLU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-03-31T22:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.4 + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + KIBSTrust Issuing Qseal CA G2 + + + +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 + + +CN=KIBSTrust Issuing Qseal CA G2, OID.2.5.4.97=NTRMK-5529581, OU=KIBSTrust Services, O=KIBS AD Skopje, C=MK + + +Jkqr0wao6dJw2nEEtjFQR4WpCU0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-03-31T22:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.3 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.16305.1.2.5.1.4 + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/IdV + + OneID + OneID + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2021-12-20T23:00:00Z + + https://trusteid.mioa.gov.mk/idHLA + + + https://oneid.mk + + + + + + + + + Makedonski Telekom AD - Skopje + Македонски Телеком АД - Скопје + + + Makedonski Telekom AD - Skopje + VATMK-4030997339640 + MB:MK-5168660 + Македонски Телеком Акционерско друштво за електронски комуникации - Скопје + VATMK-4030997339640 + MB:MK-5168660 + Makedonski Telekom + Makedonski Telekom joint stock company for electronic communications – Skopje + + + + + Kej 13 Noemvri No. 6 + Skopje + 1000 + MK + + + ул. Кеј 13-ти Ноември бр. 6 + Скопје + 1000 + MK + + + + mailto:biznis.kontakt@telekom.mk + http://www.telekom.mk + + + + http://www.telekom.mk/CPS + http://ict.telekom.mk/digitalni-sertifikati.nspx + http://ict.telekom.mk/vremenski-pecat.nspx + http://www.telekom.mk/CPS + http://ict.telekom.mk/digitalni-sertifikati.nspx + http://ict.telekom.mk/vremenski-pecat.nspx + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Makedonski Telekom Root CA + + + +MIIEwzCCAyugAwIBAgIQdg9Ay7k+qVQAAAAAXyKiNDANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJNSzFDMBoGA1UEYRMTVkFUTUstNDAzMDk5NzMzOTY0MDAlBgNVBAoTHk1ha2Vkb25za2kgVGVsZWtvbSBBRCAtIFNrb3BqZTEjMCEGA1UEAxMaTWFrZWRvbnNraSBUZWxla29tIFJvb3QgQ0EwHhcNMjAwNzMwMTAwNDQ4WhcNNDUxMDMwMTAzNDQ4WjB3MQswCQYDVQQGEwJNSzFDMBoGA1UEYRMTVkFUTUstNDAzMDk5NzMzOTY0MDAlBgNVBAoTHk1ha2Vkb25za2kgVGVsZWtvbSBBRCAtIFNrb3BqZTEjMCEGA1UEAxMaTWFrZWRvbnNraSBUZWxla29tIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC2T6Dxz4szQPmkiE9rEH2lfK+6yjyLe/bIWcfrT2fizC7SDfz0ezXZKOl51x0rGBxdxPkP5lqM1QpKPS53TvETO0emi1SfwYpS1hs5GQlEpwlKAO77fPIYpsNqvfeyLefFKtJYDSyUvSnQsxjQW4uDYCsz3jaNySImstvl2xO/+alvQ6tFJCFenvDousikPvm5w5ALDjrhh/bls0lKMAO72RnRBljXGU1h/of5EzOsfGS5dDRT7GYhi3wvhIedEorXg3Zutn7xlMUaj7ZVD2KBxgKYzv4/Na0CI59WgnF05hEPSnReDswgg3iK2jUk0S89IFure1RrrxWPHYeoFvhrCMqj1luHJUpRGNM90kFk9A32AoLWPtzQyz7qcR0c/iQeRPr07fAdAZOpNofJhbLcUcsS59x4oO20lCbehhAIJSAdDnSuo95WyQgjH50JtZs5ObMje+6D4lqG9WmZ+zUOv6MJqAyXhZTGPoLScCiyePDsTk9s8EZB5xJKyqLNkI8CAwEAAaNLMEkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0jBAwwCoAITv6cN9hXFFcwEQYDVR0OBAoECE7+nDfYVxRXMA0GCSqGSIb3DQEBCwUAA4IBgQBfFq7XSu6JazmHHEDkqL3fE/Himfy70e77DNhRqbqIoV1LdWW+Rp2qbhfQA+TiD/nldpn7U0hmR6K8RJwptRVGhsv+Q5R7gBLY0+/T/sZfqc5ez8NqrK87hqg6xMkOuNjOSDvCc/DRHY58KtYCB3n/vFeM+IRlb42zRXG51BKRaTbvbQlMkucKX+Z8XmHdElBx693jU+zucQ0Hu92NMVwxvsuGq8FHJSadZzWYmfLLNo6/5gX8aFGDyApmVoeIFU+vfwwWgHj0AVnoIb91O/AbclPvxjzS/WmUL8555neR7vFg0gJ3sAQt/mNM++kQOqODe7KTJy7IPhYud6MtFTboGA/e8b2ceg/37KSE+PQznAtKu617FBdCI8MYTOUZoJr7xDK8+M3jsL9AZXC9+Tn9ukA6zsNQquQnpX6vieKobacfAhnOLaQpKV3t9kHUZbc4fIz2VwKuY7s+Y1Zb7lfjBJnUB6Tt7kvM11uwrPAuSc+NvaIyJTYaNN9p1Mbp/vw= + + +CN=Makedonski Telekom Root CA, OID.2.5.4.97=VATMK-4030997339640 + O=Makedonski Telekom AD - Skopje, C=MK + + +Tv6cN9hXFFc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2020-01-04T23:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/RootCA-QC + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Makedonski Telekom CA + + + +MIIFpDCCBAygAwIBAgIQQHbMsxDMRLcAAAAAXyKl9jANBgkqhkiG9w0BAQsFADB3MQswCQYDVQQGEwJNSzFDMBoGA1UEYRMTVkFUTUstNDAzMDk5NzMzOTY0MDAlBgNVBAoTHk1ha2Vkb25za2kgVGVsZWtvbSBBRCAtIFNrb3BqZTEjMCEGA1UEAxMaTWFrZWRvbnNraSBUZWxla29tIFJvb3QgQ0EwHhcNMjAwODMxMTEwMTM3WhcNNDAxMTMwMTEzMTM3WjBKMQswCQYDVQQGEwJNSzEbMBkGA1UEChMSTWFrZWRvbnNraSBUZWxla29tMR4wHAYDVQQDExVNYWtlZG9uc2tpIFRlbGVrb20gQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDFgpMsA1L1U8LiUyQ8Y55ywZN78+20bE9P3rsT1XGH+0n5eCqX5K2MKTGWusISaJDUwRm4yBvf55cja2DhFEl4hqB2m4JiddjO6LLqgOkYqPpYrVb/ZIlF4PrAN7c0oerOa73egbYJMW1mAqn6YkCMy6tvudK/KPo9CYjfe0dmSj7EYY+vsYFg7bvJA4EpQWRlNsGx7Z+gPy45goT6RlwavIAkM0XR3SgQWev8On6v5gHJIKzgPf/kMbXJAcr6alGyUrezJVJ66RyicsbRa40Z7uVMupAxSqbFI+dZeqxRASLE0owHWTrhgLEBcGZxK/giBkz2K/b6XZp+ciTcAualEeKttv3voG/eQ4HcqlFq3vHA3+3HH2JFL0bygZ/2x6jXs9G39+Hxmbki8Q0HCCVpF0/qbXTftkPG3duaWINdJ7NYoz+nsFsTq4kEYkC7x58j12KZ8tP04W6VMiuPLG9oG7RRhXnlgdIcsshPCjkkjEL2EVaXjUYiswFo0vQ1bvUCAwEAAaOCAVcwggFTMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMDoGA1UdIAQzMDEwLwYEVR0gADAnMCUGCCsGAQUFBwIBFhlodHRwOi8vd3d3LnRlbGVrb20ubWsvQ1BTMH4GCCsGAQUFBwEBBHIwcDBHBggrBgEFBQcwAoY7aHR0cDovL3d3dy5jYS50ZWxla29tLm1rL2NhY2VydC9NYWtlZG9uc2tpVGVsZWtvbVJvb3RDQS5jZXIwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLmNhLnRlbGVrb20ubWswEQYDVR0OBAoECE9ljuR1wMsnMEkGA1UdHwRCMEAwPqA8oDqGOGh0dHA6Ly93d3cuY2EudGVsZWtvbS5tay9DUkwvTWFrZWRvbnNraVRlbGVrb21Sb290Q0EuY3JsMBMGA1UdIwQMMAqACE7+nDfYVxRXMA0GCSqGSIb3DQEBCwUAA4IBgQBOyVNkrRNERenm4k8xV2x0S7PJRiqVyxqimmCvfqa/jIr1bdy9deKDQxjvxV3oHKlHZPJfaklJ8D1zlYENu+/FpKxW73uDMcgK35uZu0IDLMGk3VWoHipJ1ocxybgLBTqeD21Pcsyk8eAtu6YqGzeWDOKC3RWOC2Xc5DB5bnJKOg40wlTweuP2th2xr4tI75ybm0i+4xehZUj9xj6Ir5pzvOc79Yt+B7CpdaV9jId/4wB1vIXP3AWavXW5GfkKDcN05t1cGwdacsV6L/MU0krBOjUWm3F0zuwZtErLbxVPJi9h66+fp+wMt4pDjRxRBJiXBN+gCES0ihLZQYuuA9hlqDurvz9mmoJQZZnAQvct6FKStBkR418ghsJWqxvkN8tsccmInpcdvAR5sn/HWybQvIoWsg89Y3yh5aMLNkTPvQs7Z0t356U0HrvOn+gPILZnm2MNE0t15vdjrWcVO+jgsBVDnSyqADMnSK1fMPtPbpfFolNtdWpzEoyHA6cCJBM= + + +CN=Makedonski Telekom CA, O=Makedonski Telekom, C=MK + + +T2WO5HXAyyc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-04T23:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + + 1.3.6.1.4.1.18560.1.5.1.0.0.0 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.18560.1.5.3.0.0.0 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.18560.1.5.2.0.0.0 + + + + + + + + + + + + + + + + + + 1.3.6.1.4.1.18560.1.5.5.0.0.0 + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Timestamp Authority MKT TSA 2. + + + +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 + + +CN=TimeStamp Authority MKT TSA 2, OID.2.5.4.97=VATMK-4030997339640 + O=Makedonski Telekom AD - Skopje, C=MK + + +TBUO9TfOQPs= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-04T23:00:00Z + + + + + + + + Evrotrust Technolgies DOOEL Skopje + Евротруст Технолоџис ДООЕЛ Скопје + + + Evrotrust Technolgies DOOEL Skopje + VATMK-4080020591119 + MB:MK-7435800 + Друштво за трговија и услуги ЕВРОТРУСТ ТЕХНОЛОЏИС ДООЕЛ Скопје + VATMK-4080020591119 + MB:MK-7435800 + + + + + Bul. Filip Vtori Makedonski no.3 + Skopje + 1000 + MK + + + Бул. Филип Втори Македонски број 3 + Скопје + 1000 + MK + + + + https://eid.com.mk + mailto:nm@evrotrust.com + mailto:nm@evrotrust.com + https://eid.com.mk + + + + https://eid.com.mk/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/IdV/nothavingPKIid + + Digital identity service + Услуга за дитигален идентитет + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2021-01-04T23:00:00Z + + https://trusteid.mioa.gov.mk/idHLA + + + http://www.eid.com.mk + + + + + + + + + INBOX DOOEL - Skopje + Инбох ДООЕЛ - Скопје + + + INBOX DOOEL - Skopje + VATMK-4057010510682 + MB:MK-6661955 + Трговско друштво за канцелариско административни дејности ИНБОХ ДООЕЛ Скопје + VATMK-4057010510682 + MB:MK-6661955 + + + + + Street 32, No 15 + Ilinden, Skopje + 1041 + MK + + + ул. 32 бр. 15 + Илинден, Скопје + 1041 + MK + + + + mailto:contact@inbox-datacenter.mk + https://www.inbox.com.mk/en/ + https://www.inbox.com.mk + mailto:contact@inbox-datacenter.mk + + + + http://www.inbox.com.mk/en/ + http://www.inbox.com.mk + + + + + + http://uri.etsi.org/TrstSvc/Svctype/unspecified + + Electronic preservation of documents + Електронско складирање на документи + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2021-02-19T23:00:00Z + + https://trusteid.mioa.gov.mk/EPD + https://trusteid.mioa.gov.mk/EPD + + + + + + http://uri.etsi.org/TrstSvc/Svctype/unspecified + + Qualified electronic preservation of documents + Квалификувано електронско складирање на документи + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-03-12T23:00:00Z + + https://trusteid.mioa.gov.mk/QEPD + https://trusteid.mioa.gov.mk/QEPD + + + + + + + + + Kontego d.o.o. Skopje + Контего ДОО - Скопје + + + Kontego d.o.o. Skopje + VATMK-4080010516216 + MB:MK-6643051 + Друштво за скенирање, обработка и складирање на документи КОНТЕГО ДОО Скопје + VATMK-4080010516216 + MB:MK-6643051 + + + + + Steet 1551 No.11А + Vizbegovo, PO box 33, Skopje + 1012 + MK + + + ул. 1551 бр.11А + Визбегово П.фах 33, Скопје + 1012 + MK + + + + mailto:contact@kontego.mk + mailto:contact@kontego.mk + + + + https://www.kontego.mk/ + https://www.kontego.mk/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/unspecified + + Electronic preservation of documents + Електронско складирање на документи + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2021-06-16T22:00:00Z + + https://trusteid.mioa.gov.mk/EPD + https://trusteid.mioa.gov.mk/EPD + + + + + + http://uri.etsi.org/TrstSvc/Svctype/unspecified + + Qualified service for electronic preservation of documents + Квалификувана услуга за електронско складирање на документи + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2021-10-15T22:00:00Z + + https://trusteid.mioa.gov.mk/QEPD + https://trusteid.mioa.gov.mk/QEPD + + + + + + + + + Republic of North Macedonia, Ministry of information society and administration + Република Северна Македонија, Министерство за информатичко општество и администрација + Republika e Maqedonisë së Veriut, Ministria e Shoqërisë Informatike dhe Administratës + + + Republic of North Macedonia, Ministry of information society and administration + + + + + Bul. "Ss. Cyril and Methodius" No.54 + Skopje + 1000 + MK + + + + mailto:cabinet@mioa.gov,mk + https://mioa.gov.mk + + + + https://mioa.gov.mk + + + + + + http://uri.etsi.org/TrstSvc/Svctype/IdV + + National scheme for eID on low level of assurance + Национална шема за електронска идентификација на ниско ниво #МИОАШЕМА-Ф1 + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-01-13T23:00:00Z + + https://trusteid.mioa.gov.mk/idLLA + + + + + + http://uri.etsi.org/TrstSvc/Svctype/IdV + + National scheme for eID on high level of assurance + Национална шема за електронска идентификација на високо ниво #МИОАШЕМА-Ф2 + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2022-01-13T23:00:00Z + + https://trusteid.mioa.gov.mk/idHLA + + + + + + +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-01-14T13:21:25ZlzWshaDINiT+U1gzK4kok7Pb+Ow=CN=Trusted List Administrator North Macedonia,O=Republic of North Macedonia\, Ministry of information society and administration,C=MK150970193881905293353822848772778776937text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/ncemdpdigcbccmgekgfnljeedlmgmebo b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/ncemdpdigcbccmgekgfnljeedlmgmebo new file mode 100644 index 0000000000..91e8c781c0 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/ncemdpdigcbccmgekgfnljeedlmgmebo @@ -0,0 +1,1575 @@ + + + 5 + 34 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/UKlist + + Information Commissioner's Office + + + + + Wycliffe House;Water Lane + Wilmslow + Cheshire + SK9 5AF + UK + + + + mailto:eidas@ico.org.uk + https://ico.org.uk/ + + + + UK:Trusted list including information related to the qualified trust service providers that are supervised by the UK, together with information related to the qualified trust services provided by them. The applicable legal framework for the present trusted list is Regulation (EU) No 910/2014 of the European Parliament and of the Council of 23 July 2014 on electronic identification and trust services for electronic transactions in the internal market and repealing Directive 1999/93/EC (UK version - https://www.legislation.gov.uk/eur/2014/910/contents#) + + + https://ico.org.uk/for-organisations/guide-to-eidas/uk-trusted-list + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/UKdetermination + + https://ico.org.uk/for-organisations/guide-to-eidas/uk-trusted-list/ + + UK + + The applicable legal framework for the present trusted list is Regulation (EU) No 910/2014 of the European Parliament and of the Council of 23 July 2014 on electronic identification and trust services for electronic transactions in the internal market and repealing Directive 1999/93/EC (UK version - https://www.legislation.gov.uk/eur/2014/910/contents#) + + 65535 + + 2025-08-18T00:00:00Z + + 2026-02-18T00:00:00Z + + + https://tl.ico.org.uk/uktrustedlist/UKTL.xml + + + + + + + Royal Bank of Scotland Plc + + + NTRUK-SC090312 + The Royal Bank of Scotland plc + + + + + 2nd Floor + 280 Bishopsgate + London + EC2M 4RB + UK + + + + mailto:simon.hobby@rbs.co.uk + http://www.trustAssured.co.uk/ + + + + http://www.rbs.co.uk/corporate/electronic-services/g6/trustassured/policy-documents.ashx + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Trustassured + + + +MIIFhjCCBG6gAwIBAgIQCgFBQgAAAUGeGJqcAAAAAjANBgkqhkiG9w0BAQUFADB3MRcwFQYDVQQKEw5JZGVuVHJ1c3QgSW5jLjEtMCsGA1UECxMkSWRlblRydXN0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MS0wKwYDVQQDEyRJZGVuVHJ1c3QgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTMxMDA5MTY0MTU0WhcNMjAxMDA5MTY0MTU0WjCBpzEnMCUGA1UECgweVGhlIFJveWFsIEJhbmsgb2YgU2NvdGxhbmQgcGxjMUMwQQYDVQQLDDpUaGUgUm95YWwgQmFuayBvZiBTY290bGFuZCBwbGMgVHJ1c3RBc3N1cmVkIEluZnJhc3RydWN0dXJlMTcwNQYDVQQDDC5UaGUgUm95YWwgQmFuayBvZiBTY290bGFuZCBQbGMgVHJ1c3RBc3N1cmVkIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy5C5Iakf+xvCZWeWFA2xb+UTWA2wfEzautGAowIYehdc/Cv0YbUEQ+ItOX21+5ceXGqensQgkOmoeIbr66EO6kulg7aL8mYESsosj+SWMclWQKwn7C+A5cQ37WhzRXBsU0OSpB184EP10FSdpk1+4AWDiVG68KXZFbn504njiertLbN20GW7Ao65E3QRlddLi4m/f25/mCqM684slz035/1lbRz+7aNAt9HoD3PL1Xv647uSGI4wzkM0EF8SaTqeNatnU7YOPOtTkspYSohrMdxYpEZ96cFMFG/RLA7qIc2VH5IXIteIIwJGTyYqDEDooioqjfTfVQEkNsiZ4+mWTQIDAQABo4IB2zCCAdcwDgYDVR0PAQH/BAQDAgH+MBIGA1UdEwEB/wQIMAYBAf8CAQcwgfIGA1UdIASB6jCB5zCB5AYJKoZIhvplAQYBMIHWMIHTBggrBgEFBQcCAjCBxhqBw1RoaXMgY2VydGlmaWNhdGUgaXMgZm9yIHRoZSBzb2xlIHVzZSBvZiBJZGVuVHJ1c3QsIGl0cyBQYXJ0aWNpcGFudHMgYW5kIHRoZWlyIGN1c3RvbWVycy4gSWRlblRydXN0IGFjY2VwdHMgbm8gbGlhYmlsaXR5IGZvciBhbnkgY2xhaW0gZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCBpbiBpdHMgT3BlcmF0aW5nIFJ1bGVzIElMLU9QUlVMLjAdBgNVHQ4EFgQUYxfAgdS/D6lmMZb6F8GwytoXAtAwfAYIKwYBBQUHAQEEcDBuMDYGCCsGAQUFBzABhipodHRwczovL2lkZW50cnVzdHJvb3Qub2NzcHRuLmlkZW50cnVzdC5jb20wNAYIKoZIhvplBAGGKGh0dHBzOi8vaWRlbnRydXN0cm9vdC50Y3RuLmlkZW50cnVzdC5jb20wHwYDVR0jBBgwFoAUdNgJ9kknmwQaGWP6YStz/51uST0wDQYJKoZIhvcNAQEFBQADggEBALuwYMmj9fKWas3YR++PKLVbbuI6ig9+xWABhn9QZto+O9wyaf/EkTYoEL9IUih0vzmQS6cKMGSoHx5vX0fZD2Cex3+UWG3mcbjj2hunE86zgWxFJlJpp1aMEudqOZJ0aZNtBfe72Z2/8iu+Ealwb5N7TuQ2a+Zuo/Xel+vIpdn56TGJf8lnv8D50IRUL61Iah4NYFrV95fZO5VRxKsJV2hhU1uugo5An3jCOw3uKaGHka02r3jTBCXhbisLDMvr4knhVda3icKO2u64oIjSMAgMxmZ0JizFniyVHh+grbJVlc1z1GObSr0pvkB0lAL0v/iQqDGaBjEJxUGyG3c3WSU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2017-06-30T22:00:00Z + + http://www.tscheme.eu/directory/rbsg/index.html + + + http://www.trustassured.co.uk/ + + + http://www.trustassured.co.uk/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +Trustassured + + + + CN=The Royal Bank of Scotland Plc TrustAssured CA, OU=The Royal Bank of Scotland plc TrustAssured Infrastructure, O=The Royal Bank of Scotland plc + + + YxfAgdS/D6lmMZb6F8GwytoXAtA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-30T22:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +Trustassured + + + + CN=The Royal Bank of Scotland Plc TrustAssured CA, OU=The Royal Bank of Scotland plc TrustAssured Infrastructure, O=The Royal Bank of Scotland plc + + + YxfAgdS/D6lmMZb6F8GwytoXAtA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/accredited + 2002-02-11T12:00:00Z + + + + + + + + + Exostar UK Limited + Exostar + + + VATUK-800969916 + NTRUK-9999998 + + + + + The Broadgate Tower Third Floor + 20 Primrose Street + London + EC2A 2RS + UK + + + + http://www.myexostar.com/Digital-Certificate-Service/ + mailto:richard.trevorah@tscheme.org + + + + http://www.myexostar.com/Federated-Identity-Service/Policy_and_Compliance/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Digital Certificate Service + DCS + + + +MIIEwTCCA6mgAwIBAgITLgAAAAXH9qOzdieVdAAAAAAABTANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRXhvc3RhciBMTEMxIjAgBgNVBAsTGUNlcnRpZmljYXRpb24gQXV0aG9yaXRpZXMxNTAzBgNVBAMTLEV4b3N0YXIgRmVkZXJhdGVkIElkZW50aXR5IFNlcnZpY2UgUm9vdCBDQSAyMB4XDTE2MDUyNjE1MjE0MVoXDTI2MDUyNjE1MjE0MVowZTELMAkGA1UEBhMCR0IxGzAZBgNVBAoTEkV4b3N0YXIgVUsgTGltaXRlZDE5MDcGA1UEAxMwRXhvc3RhciBEaWdpdGFsIENlcnRpZmljYXRlIFNlcnZpY2UgU2lnbmluZyBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgZBZ2t7uhxTVGbRHSu+mCXHpGXVcuCVAnLtv0r/LZjZwjD9pIqINV0Sy0We7nZGDKYVqfCUftW1XBrJ22OQxSmCBSwS0UwYcVyLY1p71y9K4/hxWfdo73pcM+oKaYSBHaHfU26soa3R3KVsul3s8N8NcbyCZfA0mxh8LHnsUg9X1faUdx+sTAOcfsTvzkFjl15Z12cNA28i687YqE4N24Ejy7HsDKHz+0X7sgV6raV3VuDF3+U9wuZFzx6VWbxEOdxBWv4Wk4OhHwXv8rAQls4gRLrB2mUEaO07M5WcKf5kLixsrJaiLOrIYHz2d4Gu0SFLn+ANnK9DUe0nbAkTUwIDAQABo4IBTzCCAUswHQYDVR0OBBYEFEUMw2tZp/iXD9t28oEazC7Gc9JzMA4GA1UdDwEB/wQEAwIBxjASBgNVHRMBAf8ECDAGAQH/AgEAMB8GA1UdIwQYMBaAFFQLEbAd+VfPsHotUlLzs6eMUvSsMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly93d3cuZmlzLmV2aW5jaWJsZS5jb20vZmlzL3B1YmxpYy9FUkNBMi5jcmwwVQYIKwYBBQUHAQEESTBHMEUGCCsGAQUFBzAChjlodHRwOi8vd3d3LmZpcy5ldmluY2libGUuY29tL2Zpcy9wdWJsaWMvaXNzdWVkdG9FUkNBMi5wN2MwSgYDVR0gBEMwQTANBgsrBgEEAex8AQEBHTANBgsrBgEEAex8AQEBFzANBgsrBgEEAex8AQEBGDAIBgYEAIswAQIwCAYGBACLMAEBMA0GCSqGSIb3DQEBCwUAA4IBAQDGtKIZYaSeOAxW6twQVQ4juYKI5bzxO13Rk949jRshhEuGiVdthWIWmlnOPX9AxzJET6ERAku+YwHLMbHfUUesp6m9xEU721t4Y03S1HaJAV3vdKS7GLEyh9XuJYTGyz3EyFJQRCaGP33pB0j02UdIy9t2Ji0MfDkgZOF7fUyLZxPv22N7w1FK8aubZmXvNKKeBi/JmMdMP11csWCCN66ISagssDkTfvWjb7zyfU7UtLOM40jbYgqeT5NVI+mASpi8tL7F7wVU7fpKammnKaKEirRz9W0yrd7UqtsJx4Tstv41OaS184IheHrtuKsGw9eQRzgNSJJmQQT3lMyc6CXT + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2018-05-03T11:00:00Z + + https://www.tscheme.org/digital-certificate-service-exostar-uk-ltd + + + http://www.myexostar.com/Digital-Certificate-Service/ + + + http://www.myexostar.com/Digital-Certificate-Service/ + + + + + + + + + + + true + + + + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +Digital Certificate Service +DCS + + + + CN=Exostar Digital Certificate Service Signing CA 1, O=Exostar UK Limited, C=GB + + + RQzDa1mn+JcP23bygRrMLsZz0nM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-30T22:00:00Z + + + + + + + + + + true + + + + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +Digital Certificate Service +DCS + + + + CN=Exostar Digital Certificate Service Signing CA 1, O=Exostar UK Limited, C=GB + + + RQzDa1mn+JcP23bygRrMLsZz0nM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/accredited + 2016-06-29T23:00:00Z + + + + + + + + + + true + + + + + + + + + + + + + + + GMO GlobalSign Ltd + + + NTRGB-04705639 + GlobalSign + + + + + Springfield House, Sandling Road + Maidstone + Kent + ME14 2LP + UK + + + + https://www.globalsign.com + mailto:sales@globalsign.com + + + + https://www.globalsign.com/en/repository + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +R1yP5cTk5p6CE3vn2BDomk9oLb4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + R1yP5cTk5p6CE3vn2BDomk9oLb4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +R1yP5cTk5p6CE3vn2BDomk9oLb4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.2 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + R1yP5cTk5p6CE3vn2BDomk9oLb4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.2 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020 + + + +MIIDtTCCAzugAwIBAgIQeEqpGcQFLUdvrerJ3ttZuzAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowgYIxCzAJBgNVBAYTAkdCMRswGQYDVQQKExJHTU8gR2xvYmFsU2lnbiBMdGQxPTA7BgNVBAMTNEdsb2JhbFNpZ24gR0NDIEU0NSBVSyBRdWFsaWZpZWQgUVNDRCBTaWduaW5nIENBIDIwMjAxFzAVBgNVBGETDk5UUkdCLTA0NzA1NjM5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEnxHqYK9/XOUW8IdiTyeZCI8i3w9pUTZbMtRWGkUtl1BO7Kxd0NnEI6PhMTgJ6VEY8CkdN5XezuqbutNmQ3rNBchNvMDCEqKP8vHMCjbmv8SmdoUI4n15Pnpe5cUZ4SlSo4IBnjCCAZowDgYDVR0PAQH/BAQDAgGGMCAGA1UdJQQZMBcGCisGAQQBgjcKAwwGCSqGSIb3LwEBBTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT8TIQKhmV19SgaM68YFLIra8o+FTAfBgNVHSMEGDAWgBRhmQK0EP8QPNt62mw6cCQDYPHnjjCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9kb2NzaWducm9vdGU0NTBCBggrBgEFBQcwAoY2aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZG9jc2lnbnJvb3RlNDUuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAKBggqhkjOPQQDAwNoADBlAjBIvUes0NzwtD5Liy8WacbyiWDEI8D02rYg6EwTjEsRa6E+YF9BxG9LuTv1zYzgEBYCMQCLjThKVYVMZx4TjD+86WleL8EHnxBc14IwRUwk5pw2u2rZvos4MG5k140iSvPLlQc= + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +/EyECoZldfUoGjOvGBSyK2vKPhU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + /EyECoZldfUoGjOvGBSyK2vKPhU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020 + + + +MIIDtTCCAzugAwIBAgIQeEqpGcQFLUdvrerJ3ttZuzAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowgYIxCzAJBgNVBAYTAkdCMRswGQYDVQQKExJHTU8gR2xvYmFsU2lnbiBMdGQxPTA7BgNVBAMTNEdsb2JhbFNpZ24gR0NDIEU0NSBVSyBRdWFsaWZpZWQgUVNDRCBTaWduaW5nIENBIDIwMjAxFzAVBgNVBGETDk5UUkdCLTA0NzA1NjM5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEnxHqYK9/XOUW8IdiTyeZCI8i3w9pUTZbMtRWGkUtl1BO7Kxd0NnEI6PhMTgJ6VEY8CkdN5XezuqbutNmQ3rNBchNvMDCEqKP8vHMCjbmv8SmdoUI4n15Pnpe5cUZ4SlSo4IBnjCCAZowDgYDVR0PAQH/BAQDAgGGMCAGA1UdJQQZMBcGCisGAQQBgjcKAwwGCSqGSIb3LwEBBTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT8TIQKhmV19SgaM68YFLIra8o+FTAfBgNVHSMEGDAWgBRhmQK0EP8QPNt62mw6cCQDYPHnjjCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9kb2NzaWducm9vdGU0NTBCBggrBgEFBQcwAoY2aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZG9jc2lnbnJvb3RlNDUuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAKBggqhkjOPQQDAwNoADBlAjBIvUes0NzwtD5Liy8WacbyiWDEI8D02rYg6EwTjEsRa6E+YF9BxG9LuTv1zYzgEBYCMQCLjThKVYVMZx4TjD+86WleL8EHnxBc14IwRUwk5pw2u2rZvos4MG5k140iSvPLlQc= + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +/EyECoZldfUoGjOvGBSyK2vKPhU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.2 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified QSCD Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + /EyECoZldfUoGjOvGBSyK2vKPhU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.36.2 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +V681L7Xf0ymXzyPI17NBGlwkYFQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + V681L7Xf0ymXzyPI17NBGlwkYFQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +V681L7Xf0ymXzyPI17NBGlwkYFQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.2 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + V681L7Xf0ymXzyPI17NBGlwkYFQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.2 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020 + + + +MIIDujCCAz+gAwIBAgIQeEqpHXXRT60h/F8OiioNxTAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowgYYxCzAJBgNVBAYTAkdCMRswGQYDVQQKExJHTU8gR2xvYmFsU2lnbiBMdGQxQTA/BgNVBAMTOEdsb2JhbFNpZ24gQXRsYXMgRTQ1IFVLIFF1YWxpZmllZCBSZW1vdGUgU2lnbmluZyBDQSAyMDIwMRcwFQYDVQRhEw5OVFJHQi0wNDcwNTYzOTB2MBAGByqGSM49AgEGBSuBBAAiA2IABNR7vvohzuE5vk5A0icwGvOytP3TrlFVFpkitzMav1GaqYVdwBqT0SRIyBFum+dgfAcI7z86oBgzdwLLY2OqsBUi208ZHNyHK5hzigJiOlxnjGX7FtigXDwhSn2bV90sJ6OCAZ4wggGaMA4GA1UdDwEB/wQEAwIBhjAgBgNVHSUEGTAXBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUzodfcTi9b0MBPy1T3nG0i+dY+lwwHwYDVR0jBBgwFoAUYZkCtBD/EDzbetpsOnAkA2Dx544wgYkGCCsGAQUFBwEBBH0wezA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUwQgYIKwYBBQUHMAKGNmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2RvY3NpZ25yb290ZTQ1LmNydDA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2RvY3NpZ25yb290ZTQ1LmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCgYIKoZIzj0EAwMDaQAwZgIxANLVYDkUL731xMHWdTOhEx+/hgjixPyyUQjD5I3ng3pszuyyieTRnMmb8540IlqB/QIxAObmDGAyqwmHs/VRKp5kLEb3zRzS9JH6mjjaMoMx+Evga2uhd3zEHMzC8bWAMjc6mQ== + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +zodfcTi9b0MBPy1T3nG0i+dY+lw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + zodfcTi9b0MBPy1T3nG0i+dY+lw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2020-10-21T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020 + + + +MIIDujCCAz+gAwIBAgIQeEqpHXXRT60h/F8OiioNxTAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowgYYxCzAJBgNVBAYTAkdCMRswGQYDVQQKExJHTU8gR2xvYmFsU2lnbiBMdGQxQTA/BgNVBAMTOEdsb2JhbFNpZ24gQXRsYXMgRTQ1IFVLIFF1YWxpZmllZCBSZW1vdGUgU2lnbmluZyBDQSAyMDIwMRcwFQYDVQRhEw5OVFJHQi0wNDcwNTYzOTB2MBAGByqGSM49AgEGBSuBBAAiA2IABNR7vvohzuE5vk5A0icwGvOytP3TrlFVFpkitzMav1GaqYVdwBqT0SRIyBFum+dgfAcI7z86oBgzdwLLY2OqsBUi208ZHNyHK5hzigJiOlxnjGX7FtigXDwhSn2bV90sJ6OCAZ4wggGaMA4GA1UdDwEB/wQEAwIBhjAgBgNVHSUEGTAXBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUzodfcTi9b0MBPy1T3nG0i+dY+lwwHwYDVR0jBBgwFoAUYZkCtBD/EDzbetpsOnAkA2Dx544wgYkGCCsGAQUFBwEBBH0wezA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUwQgYIKwYBBQUHMAKGNmh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L2RvY3NpZ25yb290ZTQ1LmNydDA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2RvY3NpZ25yb290ZTQ1LmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCgYIKoZIzj0EAwMDaQAwZgIxANLVYDkUL731xMHWdTOhEx+/hgjixPyyUQjD5I3ng3pszuyyieTRnMmb8540IlqB/QIxAObmDGAyqwmHs/VRKp5kLEb3zRzS9JH6mjjaMoMx+Evga2uhd3zEHMzC8bWAMjc6mQ== + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +zodfcTi9b0MBPy1T3nG0i+dY+lw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.2 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas E45 UK Qualified Remote Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + zodfcTi9b0MBPy1T3nG0i+dY+lw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.38.2 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC R45 UK Qualified Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +8BXlMG8wKKETlWrapQUq02j9DqA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC R45 UK Qualified Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + 8BXlMG8wKKETlWrapQUq02j9DqA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC R45 UK Qualified Signing CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +8BXlMG8wKKETlWrapQUq02j9DqA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.2 + + + 1.3.6.1.4.1.4146.1.44.37.3 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC R45 UK Qualified Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC R45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + 8BXlMG8wKKETlWrapQUq02j9DqA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.2 + + + 1.3.6.1.4.1.4146.1.44.37.3 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC E45 UK Qualified Signing CA 2020 + + + +MIIDrzCCAzWgAwIBAgIQeEqpIbS34KrOlcgz1LdkPzAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowfTELMAkGA1UEBhMCR0IxGzAZBgNVBAoTEkdNTyBHbG9iYWxTaWduIEx0ZDE4MDYGA1UEAxMvR2xvYmFsU2lnbiBHQ0MgRTQ1IFVLIFF1YWxpZmllZCBTaWduaW5nIENBIDIwMjAxFzAVBgNVBGETDk5UUkdCLTA0NzA1NjM5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEZ+Nl0QdHyZUqmRxDKtWQQSN5OaT8Io8q2UweOvd3puAy47x6DPaHFVozqPIuSORGU85u+wU5g92yH2KCByf9fO8y7ATO40+P7un9lQ+zIW+B6PaPjihnsGxiITPDZXF9o4IBnjCCAZowDgYDVR0PAQH/BAQDAgGGMCAGA1UdJQQZMBcGCisGAQQBgjcKAwwGCSqGSIb3LwEBBTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTY19erde41kzH58YjXUzqttBAJDAfBgNVHSMEGDAWgBRhmQK0EP8QPNt62mw6cCQDYPHnjjCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9kb2NzaWducm9vdGU0NTBCBggrBgEFBQcwAoY2aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZG9jc2lnbnJvb3RlNDUuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAKBggqhkjOPQQDAwNoADBlAjAN1+kf5Zo50hCU35B4hdAAxjBbnPCI734RIlBv4afLdE1fEWFyixcogFklEBOhLWACMQDsfiRqaCFYKa+/mLyPsgJRtJC609gYM8NRB1Y5z+EoWVGDYu4ps/EG51Gsc2LHJZc= + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +k2NfXq3XuNZMx+fGI11M6rbQQCQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.1 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC E45 UK Qualified Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + k2NfXq3XuNZMx+fGI11M6rbQQCQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.1 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC E45 UK Qualified Signing CA 2020 + + + +MIIDrzCCAzWgAwIBAgIQeEqpIbS34KrOlcgz1LdkPzAKBggqhkjOPQQDAzBXMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEtMCsGA1UEAxMkR2xvYmFsU2lnbiBEb2N1bWVudCBTaWduaW5nIFJvb3QgRTQ1MB4XDTIwMDkxNjAwMDAwMFoXDTMwMDkxNjAwMDAwMFowfTELMAkGA1UEBhMCR0IxGzAZBgNVBAoTEkdNTyBHbG9iYWxTaWduIEx0ZDE4MDYGA1UEAxMvR2xvYmFsU2lnbiBHQ0MgRTQ1IFVLIFF1YWxpZmllZCBTaWduaW5nIENBIDIwMjAxFzAVBgNVBGETDk5UUkdCLTA0NzA1NjM5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEZ+Nl0QdHyZUqmRxDKtWQQSN5OaT8Io8q2UweOvd3puAy47x6DPaHFVozqPIuSORGU85u+wU5g92yH2KCByf9fO8y7ATO40+P7un9lQ+zIW+B6PaPjihnsGxiITPDZXF9o4IBnjCCAZowDgYDVR0PAQH/BAQDAgGGMCAGA1UdJQQZMBcGCisGAQQBgjcKAwwGCSqGSIb3LwEBBTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTY19erde41kzH58YjXUzqttBAJDAfBgNVHSMEGDAWgBRhmQK0EP8QPNt62mw6cCQDYPHnjjCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9kb2NzaWducm9vdGU0NTBCBggrBgEFBQcwAoY2aHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZG9jc2lnbnJvb3RlNDUuY3J0MD0GA1UdHwQ2MDQwMqAwoC6GLGh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vZG9jc2lnbnJvb3RlNDUuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAKBggqhkjOPQQDAwNoADBlAjAN1+kf5Zo50hCU35B4hdAAxjBbnPCI734RIlBv4afLdE1fEWFyixcogFklEBOhLWACMQDsfiRqaCFYKa+/mLyPsgJRtJC609gYM8NRB1Y5z+EoWVGDYu4ps/EG51Gsc2LHJZc= + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + +k2NfXq3XuNZMx+fGI11M6rbQQCQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.2 + + + 1.3.6.1.4.1.4146.1.44.37.3 + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC E45 UK Qualified Signing CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign GCC E45 UK Qualified Signing CA 2020, O=GMO GlobalSign Ltd, C=GB + + + k2NfXq3XuNZMx+fGI11M6rbQQCQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-07-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals + + + + + + + + + + + + 1.3.6.1.4.1.4146.1.44.37.2 + + + 1.3.6.1.4.1.4146.1.44.37.3 + + + + + + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC R3 UK EV QWAC 2020 + + + +MIIFtTCCBJ2gAwIBAgIQeEqpJrbnW++td7NIAblS0DANBgkqhkiG9w0BAQsFADBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0yMDA5MTYwMDAwMDBaFw0yOTAzMTgwMDAwMDBaMFkxCzAJBgNVBAYTAkdCMRswGQYDVQQKExJHTU8gR2xvYmFsU2lnbiBMdGQxLTArBgNVBAMTJEdsb2JhbFNpZ24gR0NDIFIzIFVLIEVWIFFXQUMgQ0EgMjAyMDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANb8rtddi5/yjm2toox7VSaHcs1oda93dEOEaLfEtyxwg72oNvwgR48PxufwfoKwCLq8RYmGzGDFFamw1Ff3+7eBsj9Y1yt4/2HqBPBzkTZk96gvUpQ90EHwMbat0Nsxagess1WrDXUv9U4NYwBeZo52MqFYvny2uuu+T41RPmNqbfzMNgBSamqvqEIDGr3XZ5xRviLG+d6HnYyy+zIENDoBpzSNV5ni4y0KTs7A5r7bsZAveiAu2mO69jKDHxegisLutWzbOElfKWQ0w+xuh46gb/d5/6CF/uGCohWOJZKB+cb8JYMUENH8fNu3ZcLJNihynxONLlmMdT30wW6vUe/1vKpoZJhVLpi+yJ9Bt5Y3zQRLVge52qvaRuVqccydyTTR8N0VuvyDf7WJXJ2lE4cmwoXMB4O4YxCnQZLfrCtQRXkjh6UVzWmIkTzFIWRi8b/tM7Q8/h7zcoFMdNR8iH2msYN5dHFai5w4a4isbnSxX8QU4lgROh5SQTyWKSEwY4N0LFUA9YWoU9v76ucTr9Nq/gJJG02ue2ZN6mYzY34qSQyBrwW4lp3z7wReFKZ54SKzzuWbXnd2MG9i18n5W36PjXZlYtG86Dlhiwyr5MUihtA3k0PLdlIeBfxL/puxjJB/lH3TpPdgkSxwUGo0Jl65tUGGtdKwRUvw488Nx0PJAgMBAAGjggGEMIIBgDAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAeUNkpRlUn97ioGeTZ/wjc7Ttu/MB8GA1UdIwQYMBaAFI/wS3+oLkUkrk1Q+mOai97i3Ru8MHoGCCsGAQUFBwEBBG4wbDAtBggrBgEFBQcwAYYhaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vcm9vdHIzMDsGCCsGAQUFBzAChi9odHRwOi8vc2VjdXJlLmdsb2JhbHNpZ24uY29tL2NhY2VydC9yb290LXIzLmNydDA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL3Jvb3QtcjMuY3JsMEcGA1UdIARAMD4wPAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAYTUdDFCkY6pGCgQWAI7Y/n1Dpk5BqieG7dYxX8e3uKMAVEObEpboNixYe4tnICApgFay9FERbc4QIJjCfLKpcgJGn5oWg0WRUSiuuwx5oATplUn012wxSfBPRUzEYTQVzihSGiDa1u/4Y55WE7hzf34DRfPi8a4pQfHc+TMdL10lMbIZdUTOp84lkKnHza4bze+p+TCwJxJmrMvI+9m5Ml9+dStsbEG+wXkPLNxPYEAlFT/IrvUj6uMLhsUMlogMUC07e6kz7G/XuXVIYTFsvkwPvwO2VGPL2ScSfeb5dS93QzWHYWyt34qNN2lYl2srnoCe5T0AAE3EL7SQuqEubw== + + +CN=GlobalSign GCC R3 UK EV QWAC CA 2020, O=GMO GlobalSign Ltd, C=GB + + +B5Q2SlGVSf3uKgZ5Nn/CNztO278= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForWebSiteAuthentication + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC R3 UK EV QWAC 2020 + + + + CN=GlobalSign GCC R3 UK EV QWAC CA 2020, O=GMO GlobalSign Ltd, C=GB + + + B5Q2SlGVSf3uKgZ5Nn/CNztO278= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-02-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForWebSiteAuthentication + + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + GlobalSign GCC E5 UK EV QWAC CA 2021 + + + +MIIDbDCCAvGgAwIBAgIQeSmbhHLMt1IRJtmqS3w+HjAKBggqhkjOPQQDAzBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjUxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMjEwMzI0MDAwMDAwWhcNMzAwMzI0MDAwMDAwWjBZMQswCQYDVQQGEwJHQjEbMBkGA1UEChMSR01PIEdsb2JhbFNpZ24gTHRkMS0wKwYDVQQDEyRHbG9iYWxTaWduIEdDQyBFNSBVSyBFViBRV0FDIENBIDIwMjEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATwCvlBqms9apNbpwFwLjHiiq3jSIC54A1bhLws9uDfx9vpz8ejiVsVmWvp6omZc/kYk192N3JjFK/tSOLhlJH0lKLk1A6W1AxU6cX2US7jKJFAaPiaBpW6nrU1Qmcmz+WjggGFMIIBgTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFKy9fdAZr4SGpz7/UQE88y0CcOPOMB8GA1UdIwQYMBaAFD3mKUib6gfKIURKJt5u3tKD0J9ZMHsGCCsGAQUFBwEBBG8wbTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AyLmdsb2JhbHNpZ24uY29tL3Jvb3RyNTA7BggrBgEFBQcwAoYvaHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvcm9vdC1yNS5jcnQwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9yb290LXI1LmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCgYIKoZIzj0EAwMDaQAwZgIxAIawO5O+AdVuSe5K8HmtNwcRXxk6W+0c11/koPJqx+1HUMDHEs0Own1NCJjDdmQkkQIxALjy9QQYnNAddDU4uPB5F3AkCNFjoU6sinvJzMQKsIYSdD1UHU9OK5v+yALw8gPwIw== + + +CN=GlobalSign GCC E5 UK EV QWAC CA 2021, O=GMO GlobalSign Ltd, C=GB + + +rL190BmvhIanPv9RATzzLQJw484= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForWebSiteAuthentication + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + +GlobalSign GCC E5 UK EV QWAC CA 2021 + + + + CN=GlobalSign GCC E5 UK EV QWAC CA 2021, O=GMO GlobalSign Ltd, C=GB + + + rL190BmvhIanPv9RATzzLQJw484= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-02-27T00:00:00Z + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForWebSiteAuthentication + + + + + + + + + https://uri.etsi.org/TrstSvc/Svctype/TSA/QTST/ + + GlobalSign Atlas R45 UK Qualified Timestamping CA 2020 + + + +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 + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Timestamping CA 2020, O=GMO GlobalSign Ltd, C=GB + + +u66PzppIK0goOk9Yt9X+w5aZ99I= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + https://uri.etsi.org/TrstSvc/Svctype/TSA/QTST/ + +GlobalSign Atlas R45 UK Qualified Timestamping CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas R45 UK Qualified Timestamping CA 2020, O=GMO GlobalSign Ltd, C=GB + + + u66PzppIK0goOk9Yt9X+w5aZ99I= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-02-27T00:00:00Z + + + + + + https://uri.etsi.org/TrstSvc/Svctype/TSA/QTST/ + + GlobalSign Atlas ECCR5 UK Qualified Timestamping CA 2020 + + + +MIIDjzCCAxWgAwIBAgIQeEqpJTCasEkxbAgK79xiATAKBggqhkjOPQQDAzBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjUxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMjAwOTE2MDAwMDAwWhcNMzUwOTE2MDAwMDAwWjCBhjELMAkGA1UEBhMCR0IxGzAZBgNVBAoTEkdNTyBHbG9iYWxTaWduIEx0ZDFBMD8GA1UEAxM4R2xvYmFsU2lnbiBBdGxhcyBFQ0NSNSBVSyBRdWFsaWZpZWQgVGltZXN0YW1waW5nIENBIDIwMjAxFzAVBgNVBGETDk5UUkdCLTA0NzA1NjM5MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEfk+RmB26/d5dEibpDWdVoEtDf0J05OGj55aOMQlq4LEQU9DcI0cga3oA05J9B+AK6va9bY/Ci8qZcg0+vuxwjm7EwBjC8Y/o81T2hylNPPyfJuvcYMMWwRMGZRGPUfQ2o4IBezCCAXcwDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUFBwMIMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFN4R2f/PZGP66qnyHRRjH0WlHEu4MB8GA1UdIwQYMBaAFD3mKUib6gfKIURKJt5u3tKD0J9ZMHsGCCsGAQUFBwEBBG8wbTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AyLmdsb2JhbHNpZ24uY29tL3Jvb3RyNTA7BggrBgEFBQcwAoYvaHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvcm9vdC1yNS5jcnQwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9yb290LXI1LmNybDBHBgNVHSAEQDA+MDwGBFUdIAAwNDAyBggrBgEFBQcCARYmaHR0cHM6Ly93d3cuZ2xvYmFsc2lnbi5jb20vcmVwb3NpdG9yeS8wCgYIKoZIzj0EAwMDaAAwZQIwEr0HdL7Z/67L5gT3fGzLGbUsi1Y0+TKqoq+PrCHfwWZZ8eZKsOrvhT5xyZ0RaR31AjEA1/scYIVF3DUCU4uI60Fuw5D01ApcRbSn0zztQWLpWDy7xu3kUyQzpvD1DM//Or4y + + +OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas ECCR5 UK Qualified Timestamping CA 2020, O=GMO GlobalSign Ltd, C=GB + + +3hHZ/89kY/rqqfIdFGMfRaUcS7g= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-03-20T00:00:00Z + + + + https://uri.etsi.org/TrstSvc/Svctype/TSA/QTST/ + +GlobalSign Atlas ECCR5 UK Qualified Timestamping CA 2020 + + + + OID.2.5.4.97=NTRGB-04705639, CN=GlobalSign Atlas ECCR5 UK Qualified Timestamping CA 2020, O=GMO GlobalSign Ltd, C=GB + + + 3hHZ/89kY/rqqfIdFGMfRaUcS7g= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-02-27T00:00:00Z + + + + + + +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-08-19T13:41:39Zo602T3+v1Xv3DOA94PSJM9cSB6I=CN=TL Signing 01,O=Information Commissioner’s Office,C=UK1663940296text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pgiplhhjeiifekeddlgkjkgchjncndne b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pgiplhhjeiifekeddlgkjkgchjncndne new file mode 100644 index 0000000000..6c594638d6 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pgiplhhjeiifekeddlgkjkgchjncndne @@ -0,0 +1,1172 @@ + + + 5 + 9 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/CHlist + + Swiss Accreditation Service SAS + Schweizerische Akkreditierungsstelle SAS + + + + + Holzikofenweg 36 + Bern + BE + 3003 + CH + + + + mailto:info@sas.ch + https://www.sas.admin.ch/ + + + + CH: Trusted List, including information related to the qualified trust service providers which are recognised and supervised in Switzerland, together with information related to the qualified trust services provided by them, in accordance with the relevant provisions laid down in the Federal Act of 18 March 2016 on Electronic Signatures (SR 943.03) + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/schemerules/CH + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/StatusDetn/CHdetermination + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/schemerules/CH + + CH + + The applicable legal framework for the present Trusted List is the Federal Act of 18 March 2016 on Electronic Signatures (SR 943.03). + + 65535 + 2025-11-18T09:30:00Z + + 2026-05-18T08:30:00Z + + + https://trustedlist.tsl-switzerland.ch/tsl-ch.xml + + + + + + + Swisscom (Switzerland) Ltd + Swisscom (Schweiz) AG + Swisscom (Svizzera) SA + Swisscom (Suisse) SA + + + VATCH-CHE-101.654.423 + Swisscom + + + + + Postfach + Zürich + ZH + 8021 + CH + + + + mailto:All-in.SigningService@swisscom.com + https://trustservices.swisscom.com/en/imprint + + + + https://trustservices.swisscom.com/en/ + https://trustservices.swisscom.com/ + https://trustservices.swisscom.com/en/ + https://trustservices.swisscom.com/en/ + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + Qualified Certificate CA2 for qualified signatures and regulated seals + Qualified Certificate CA2 for qualified signatures and regulated seals + Qualified Certificate CA2 for qualified signatures and regulated seals + Qualified Certificate CA2 for qualified signatures and regulated seals + + + +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 + + +CN=Swisscom Diamant CA 2, OU=Digital Certificate Services, O=Swisscom, C=ch + + +6do/4zsneTQ2yyw2r7DFX/6Q+OI= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/withdrawn + 2023-11-30T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/SwisscomName + + + https://www.swissdigicert.ch/cps + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + Qualified Certificate CA4 for qualified signatures and regulated seals + Qualified Certificate CA4 for qualified signatures and regulated seals + Qualified Certificate CA4 for qualified signatures and regulated seals + Qualified Certificate CA4 for qualified signatures and regulated seals + + + +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 + + +C=ch, O=Swisscom (Schweiz) AG, OID.2.5.4.97=VATCH-CHE-101.654.423, OU=Digital Certificate Services, CN=Swisscom Diamant CA 4 + + +wsYKg3x6xf76hM41SOorYW0W1io= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2019-04-10T22:00:00Z + + https://www.swissdigicert.ch/cps + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + Timestamping Service for qualified electronic timestamps + Timestamping Service for qualified electronic timestamps + Timestamping Service for qualified electronic timestamps + Timestamping Service for qualified electronic timestamps + + + +MIIGgzCCBGugAwIBAgIQCEfa0Jq7EWDHxpesg94X4DANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMjAxMTIwODUzMDBaFw0yMjAxMTIwODUzMDBaMGMxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEaMBgGA1UEAxMRU3dpc3Njb20gVFNTIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCggcebiwQsyODYk6CDSepyph/ACx14nU0dor47i3a7U9EXXWstd1M8S+ibCn+TYZSluhBMH17EFZtkC5kNC64nr+8x7+G2atyUdcGPCSlDUk9t0MQJYYENs5JYLStnS1aYAJcZfKumBRoRXsWJVa2wG+UU4WKhFnWutmZ3HoWCH5y5xphF+C15JlnAG/OyZhI+k1x0hmTTU5Tg8e1m2v+vIPktHTk0stnTgItnfvheN3hZgTTek6LVgXOBPVbvEUS73MVU9SBdYyjeq+KaCfb+KaCAvKL5xt3czvnMTj/gpe8Hf/x/cceYbvGMCyPtoxLmU87xNKhkm4zZKYK11RihAgMBAAGjggIwMIICLDCCAQUGA1UdIASB/TCB+jCB9wYHYIV0AVMQADCB6zAsBggrBgEFBQcCARYgaHR0cDovL3d3dy5zd2lzc2RpZ2ljZXJ0LmNoL2Nwcy8wgboGCCsGAQUFBwICMIGtGoGqUmVsaWFuY2Ugb24gdGhlIFN3aXNzY29tIFJvb3QgQ2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSBhbmQgdGhlIFN3aXNzY29tIFByYWN0aWNlIFN0YXRlbWVudC4wHwYDVR0jBBgwFoAUTSYgIolL09WkCqFv3uISgcXxPC4wRgYIKwYBBQUHAQEEOjA4MDYGCCsGAQUFBzAChipodHRwOi8vYWlhLnN3aXNzZGlnaWNlcnQuY2gvc2Rjcy1yb290Mi5jcnQwEgYDVR0TAQH/BAgwBgEB/wIBADA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLnN3aXNzZGlnaWNlcnQuY2gvc2Rjcy1yb290Mi5jcmwwOAYDVR0SBDEwL6QtMCsxKTAnBgNVBAoTIFplcnRFUyBSZWNvZ25pdGlvbiBCb2R5OiBLUE1HIEFHMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUpjTWK0Ik1n8z14mJDR7th51bEE8wDQYJKoZIhvcNAQELBQADggIBAHuiVNRU2lyaWU7+qCB+y8jVygIiXWH56vlY4a5dXeweRQKQ1rcF5Cr39Kbz+cP1YUCr/5f3Wecyg6TqCi86wpaT+D2hBT2mglwB1xhwgkkhF0MvMRolqecpEO/ByzbQV12ECZydkbKxshExHI2Hn7uYHJXLkGKerSb+6wKs5210nTURxMMlNeUh65Jc89OxsdpEndeWx/lwvmZEvJXwHAQ7QtHJUoCknNsxF9xqYRt93jF5q3QoNb3dlPL7lKnxDPyrYNj88JyT5/xwoTHgFh1SjGdkZPkakW3PdKWE6Z3B0Mp+uwLN+dVgb/ICn6MkW6MZYPud1ZsSx2RoUYDeijQi1vUmfxvXQ+JIXVupJgeXnXyi9H5BtWBT1iWKxzFQKsgxoMgPOXWmVcfyC4UWi/2lYAkSiTR2P1p5LMVYEk8XQfdyU1zLYC3AOYdzExpWd8kEh9dNXgQl9o0QwaFtrVjB1GQkAgUy0nvhu51DEUdHM9k89BL4im1Z9hs5QIQvCmIWqvIDLv3NIU3CZ3pptHdf7PGxLCn84tIUG0QEPqLjyn490A5LMgH47YlHrw4ZdhI+Ie5nE/5NHI36hJqCegeUvm4qJxjw1oFyrLo7R9a+q4oKkrRzMpdKZpyGRQyrEJpFS8vNrguE8p7Zij9DoO++EGrvFmaOhbW5MPiziciX + + +CN=Swisscom TSS CA 2, OU=Digital Certificate Services, O=Swisscom, C=ch + + +pjTWK0Ik1n8z14mJDR7th51bEE8= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/withdrawn + 2023-11-30T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/SwisscomName + + + https://www.swissdigicert.ch/cps + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + Swisscom All-in Signing Service + + + +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 + + +C=ch, O=Swisscom (Schweiz) AG, OID.2.5.4.97=VATCH-CHE-101.654.423, OU=Digital Certificate Services, CN=Swisscom Diamant CA 4 + + +wsYKg3x6xf76hM41SOorYW0W1io= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2019-04-10T22:00:00Z + + + + + + + + SwissSign AG + SwissSign AG + SwissSign AG + SwissSign AG + + + VATCH-CHE-109.357.012 + NTRCH-CHE-109.357.012 + + + + + Sägereistrasse 25 + Glattbrugg + ZH + 8152 + CH + + + + mailto:info@swisssign.com + https://www.swisssign.com + + + + https://www.swisssign.com/en/support/repository.html + https://www.swisssign.com/support/repository.html + https://www.swisssign.com/fr/support/repository.html + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + SwissSign Qualified Electronic Signature ICA 2021 - 2 + + + +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 + + +OID.2.5.4.97=NTRCH-CHE-109.357.012, CN=SwissSign Qualified Electronic Signature ICA 2021 - 2, O=SwissSign AG, C=CH + + +Bps71RTspi77dlc8mSPqHS3eLAA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-04-30T22:00:00Z + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + SwissSign Qualified TSA ICA 2021 - 1 + + + +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 + + +OID.2.5.4.97=NTRCH-CHE-109.357.012, CN=SwissSign Qualified TSA ICA 2021 - 1, O=SwissSign AG, C=CH + + +OJlXMu7rjs/3dQQXLucphyJDJqY= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-11-02T23:00:00Z + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + SwissSign RSA SIGN ZertES QES ICA 2023 - 1 + + + +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 + + +CN=SwissSign RSA SIGN ZertES QES ICA 2023 - 1, O=SwissSign AG, OID.2.5.4.97=NTRCH-CHE-109.357.012, C=CH + + +3EEHfApSfjhCjVSabE4oqtaS1jY= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2023-11-29T23:00:00Z + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + SwissSign RSA SIGN ZertES Qualified TSA ICA 2023 - 1 + + + +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 + + +CN=SwissSign RSA SIGN ZertES Qualified TSA ICA 2023 - 1, O=SwissSign AG, OID.2.5.4.97=NTRCH-CHE-109.357.012, C=CH + + +7wxah9Nu9Y+eJ4p8zlkx9ic+Pg4= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2023-11-29T23:00:00Z + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + SwissSign CH Person Platinum CA 2017 - G22 + + + +MIIG8jCCBNqgAwIBAgIPZFbPgPnHoDNUN/U3JQcFMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxIzAhBgNVBAMTGlN3aXNzU2lnbiBQbGF0aW51bSBDQSAtIEcyMB4XDTE3MTIxODA2MjUzNloXDTMyMTIxODA2MjUzNloweTELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEzMDEGA1UEAxMqU3dpc3NTaWduIENIIFBlcnNvbiBQbGF0aW51bSBDQSAyMDE3IC0gRzIyMR4wHAYDVQRhExVOVFJDSC1DSEUtMTA5LjM1Ny4wMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDP4eh7M8UJfdm4LJGKXpmg7MiwOqa1+XVYi5um65UoGtikYXFDa9kIihcOOg3/nOxDJ8j02lf6vx2c/FfCVG0PT1hQfLiP3lRlVnhYovx7k6o47iqDOUrW9173EmsduhoO1NmxlmBFxg6XdsKJwHK+atT4Un5DxSNuqTenZ49H5o1UFTT5YMz+F9DJR0EbuQ+Mfo3FBNdg2G3RQD75I65E6THdrG8rdGiFN817x1EhN269auMRUjnYlYC2IPFsOUFpxJmaomxPEo8vxFL3bWRh9NUk0eIkPL0RNTx+oEhuLy00LhAFSvlVjKXSKRCcq/iwPFjPY+PEyz7rVU4MqyijAgMBAAGjggKlMIICoTAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUHsgEbftyYlFgonMkb77yX000kvwwHwYDVR0jBBgwFoAUUK/MB4cVR284xbRl0d6VqunfnMwwgf8GA1UdHwSB9zCB9DBHoEWgQ4ZBaHR0cDovL2NybC5zd2lzc3NpZ24ubmV0LzUwQUZDQzA3ODcxNTQ3NkYzOEM1QjQ2NUQxREU5NUFBRTlERjlDQ0MwgaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0b3J5LnN3aXNzc2lnbi5uZXQvQ049NTBBRkNDMDc4NzE1NDc2RjM4QzVCNDY1RDFERTk1QUFFOURGOUNDQyUyQ089U3dpc3NTaWduJTJDQz1DSD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwZAYDVR0gBF0wWzBZBgpghXQBWQEBAQEHMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vU3dpc3NTaWduLVBsYXRpbnVtLUNQLUNQUy5wZGYwgdIGCCsGAQUFBwEBBIHFMIHCMGQGCCsGAQUFBzAChlhodHRwOi8vc3dpc3NzaWduLm5ldC9jZ2ktYmluL2F1dGhvcml0eS9kb3dubG9hZC81MEFGQ0MwNzg3MTU0NzZGMzhDNUI0NjVEMURFOTVBQUU5REY5Q0NDMFoGCCsGAQUFBzABhk5odHRwOi8vcGxhdGludW0tZzIub2NzcC5zd2lzc3NpZ24ubmV0LzUwQUZDQzA3ODcxNTQ3NkYzOEM1QjQ2NUQxREU5NUFBRTlERjlDQ0MwDQYJKoZIhvcNAQELBQADggIBAHPgWaDtoRXD/UeOCPeqbJNmHz2Y1IkuulXtUP1B9g/+9s9rw/E3DGa6Z7iLqzK0EEhfQKBZpJirEu6EDR023IQhzRh/lI7BcjMPOfEUM6E00rIS8UZrRW9SnymNrbYTWE8FS8jsfFd/pppY22NolKn3UlUH1RYupDOGWj/TMxtMmMG7HMQeLj74sK8pEnQSt+VLHWUYabW7VnO/DcZrrw9FPMHUyJElxWgPwngl48Dm/tkTsXwOpnTiZ5XmEEwNC24yLG2y8+QMxCt3Nacrqv5s5PTbsr23BkTlOwy5BwN99ZfmeCcUI8egA4gH3EzAV1a5ONwaIvvODXr1RIwTWiV8WLLSWLywLP/2m+GUZYLpjMUmLq/qtBGT+KBHGbSjd0fwOysKIN9d2eA0xZwziXBCIhDT+1B4S2U0dwaZBje6OMo+toMeBPsDtBTuoKFdfq9O9KFTHsnMaHh4YeR3SYzhPoemRpaB4hvX+evVKXQKvtOnATPAzFCQwv10qt3xlREhq8NJOgV0YvELz1LPD1n/VUQU1UW/IjC9/igroSCAPaZh4krhypMWTifbRl5pymP9njZZOlaTwMnZya9e5+tzuyZ4nBP3dYJfpeTjabxa3mNOC1+pXX2LZLdlRyA5s0um58mOUKzTQKJnX1dv050EjBADTBh4P2FRTlj5QwBS + + +OID.2.5.4.97=NTRCH-CHE-109.357.012, CN=SwissSign CH Person Platinum CA 2017 - G22, O=SwissSign AG, C=CH + + +HsgEbftyYlFgonMkb77yX000kvw= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-06T22:00:00Z + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + SwissSign Qualified Electronic Signature ICA 2021 - 2 RemoteQSCD + + + +MIIHizCCBXOgAwIBAgIQAM43dOYqqX8fPW2IAdtKxDANBgkqhkiG9w0BAQsFADB5MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMTMwMQYDVQQDEypTd2lzc1NpZ24gU2lnbmF0dXJlIFNlcnZpY2VzIFJvb3QgMjAyMCAtIDIxHjAcBgNVBGETFU5UUkNILUNIRS0xMDkuMzU3LjAxMjAeFw0yMTAzMzExMjI4MDBaFw0zNjAzMzExMjI4MDBaMIGEMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMT4wPAYDVQQDEzVTd2lzc1NpZ24gUXVhbGlmaWVkIEVsZWN0cm9uaWMgU2lnbmF0dXJlIElDQSAyMDIxIC0gMjEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTEwOS4zNTcuMDEyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7CX4QzR+53a2R0nba+LdYWTtk5EBVqgdFf1v/BwQSbysTw/lQVGGZOjeUgR0eWSXuYBnsmTK2kg5jZi2gVPFJEpVlrgrNlHIFtpUEeQdqrx/j5tOVS4w4dY9P7TQ8tO0AsDO95YcCoO+IrDDEU8GUmWa++M/qHSww0RFv5Wi2I0WT4YzXrV/KzyEn/iLLNfBNQkQzwNr4D9hoG0wOCr8lCVajt5+mFQ94lbrlYEJcIqpDKJjZ8BZAgTHjdsaGNZWOS0ZKTspIQCfV4Dg7bUVYUCjJ8kxv5NbDyXUfb6BIQAvc+d0z7rC5U7DeUyyE+vSTH9Otkp3aCyMkRNC7vmBL23E84WQFMzCBxYUrSU59/LruNhYcf2Np4aVCTUU8XG/muughWmRNagVXsOlV548ILLnD0MS9QLjohAUT3imNZMaXY15bcGzjL8Wbxo47f9QZ1YjDwveBSUY6ctOYUDIAx/MYLgnYIKmKOoBI5WAKvduzZx9IuMzjVCQvGIiGA7YsAhnNa44mQnAV3tRTWSBI5E74SnTwGVOcaXLHEMP3IoNWqq4uEQkUXzwS7f3xnAUtwsmUTtLrE1XMEm6szGInw71Q3R5bmiRvdEGw2G8S2hK04hVW8Zl0BxCPuMl2pO4FD+0A0DLx3iz2y7o/Vwxcig0TLB0L0lNpc3ytazT7DUCAwEAAaOCAgEwggH9MA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBQGmzvVFOymLvt2VzyZI+odLd4sADAfBgNVHSMEGDAWgBTJm2F2N305d5b0oel7zesgcPLghDCB/wYDVR0fBIH3MIH0MEegRaBDhkFodHRwOi8vY3JsLnN3aXNzc2lnbi5uZXQvQzk5QjYxNzYzNzdEMzk3Nzk2RjRBMUU5N0JDREVCMjA3MEYyRTA4NDCBqKCBpaCBooaBn2xkYXA6Ly9kaXJlY3Rvcnkuc3dpc3NzaWduLm5ldC9DTj1DOTlCNjE3NjM3N0QzOTc3OTZGNEExRTk3QkNERUIyMDcwRjJFMDg0JTJDTz1Td2lzc1NpZ24lMkNDPUNIP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q/YmFzZT9vYmplY3RDbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludDCBlAYDVR0gBIGMMIGJMIGGBglghXQBWQEEAgEweTBSBggrBgEFBQcCARZGaHR0cHM6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vU3dpc3NTaWduLVNpZ25pbmctU2VydmljZXMtQ1AtQ1BTLnBkZjAjBggrBgEFBQcCAjAXGhVyZWd1bGF0ZWQgY2VydGlmaWNhdGUwDQYJKoZIhvcNAQELBQADggIBADHnZ/GUkbIaewA2ioaMGxOUfzNDC02gFJ2NtGap732Lfy9kW6TeIYioa/CZc8Nbklr/XqWXzSS0cDyIdebhJQ/vN8z9wIZWL6Np2zKgPFqHLyEc6R0Lv153o5vcZGYX5hKyUiF0oowCL4hBEpe0sysrSSTH4TA999vs2M5JleEljJysMIWDGYvduXmegcQpa8FEYzCfxjVKqYzcOthweGHMLgn9S8S+6RVyqbRsWfQn+xOWHPpzj+zALpTuKpeITqZX5xEB27jEY2iJOgs5Al6G7EqLLFGuH6LTb/h6o3QxXBTF3HTMxf/fHOeSioOTFyhni5TzG3ynHm2HFLlTfKIjSJgPGDpGCmT/hypmDoQnP5ZkBDxJiNzJPlXS/RJuu2AmWdkS/DbsEpYssDNN0ZLPBDyJEDS/wxqyyVPCy4pVZG//ZodxKwB+KrRsAHty0g/IRaHQGTn1VJTQyiQUzLGzxPzpmR2WEVohk+XUb2sQUtbiZ2iYhXP8VdsX8Rw/fQ/W5C2NlhBzdbY+NxlBnSkxbHoJv4WB1O/CtnNDi84M4P1pXiHJce4UDYNbM3fq3mQfX/Hgl5SBouzE1+t+or90vgqn/MySdZQFTWe48gthmN/I5YlcAhkUnbxxPU/9orXLHjXHq7ulMbVW1M7TLIOp8z1NXywe4X93k9mrERdS + + +OID.2.5.4.97=NTRCH-CHE-109.357.012, CN=SwissSign Qualified Electronic Signature ICA 2021 - 2, O=SwissSign AG, C=CH + + +Bps71RTspi77dlc8mSPqHS3eLAA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-04-30T22:00:00Z + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + SwissSign RSA SIGN ZertES QES ICA 2023 - 1 RemoteQSCD + + + +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 + + +CN=SwissSign RSA SIGN ZertES QES ICA 2023 - 1, O=SwissSign AG, OID.2.5.4.97=NTRCH-CHE-109.357.012, C=CH + + +3EEHfApSfjhCjVSabE4oqtaS1jY= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2023-11-29T23:00:00Z + + + + + + + + DigiCert Switzerland Ltd. + DigiCert Switzerland AG + DigiCert Switzerland SA + DigiCert Switzerland SA + + + NTRCH-CHE-112.210.349 + QuoVadis Trustlink B.V. + QuoVadis Trustlink Schweiz AG + QuoVadis TrustLink Schweiz AG + + + + + Poststrasse 17, Postfach + St Gallen + St Gallen + 9001 + CH + + + + mailto:ch.support@digicert.com + https://knowledge.digicert.com/quovadis + + + + https://www.quovadisglobal.ch/ + https://www.quovadisglobal.ch/ + https://www.quovadisglobal.ch/ + https://www.quovadisglobal.ch/ + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + QuoVadis Time-Stamping Authority CA G1 + + + +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 + + +CN=QuoVadis Time-Stamping Authority CA G1, O=QuoVadis Trustlink B.V., OID.2.5.4.97=NTRNL-30237459, C=NL + + +QVYhjVTwGBmWhjm3KF4k8K1Xq28= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + QuoVadis Time-Stamping Authority CA G2 + + + +MIIFCTCCAvGgAwIBAgIUaS7aUcD+jDUws9RnW7zpB9iabEQwDQYJKoZIhvcNAQELBQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0yMTEwMDExNjUxMjdaFw0zMTA5MjkxNjUxMjZaMHkxCzAJBgNVBAYTAk5MMSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEXMBUGA1UEYQwOTlRSTkwtMzAyMzc0NTkxLzAtBgNVBAMMJlF1b1ZhZGlzIFRpbWUtU3RhbXBpbmcgQXV0aG9yaXR5IENBIEcyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEP56dG3iPGRcYXymRBC17IkrMBdF22jwZoKehmI22qq/8z3ucbXlkR22T4pVaD1e7cYU5VVc7Zf1yZ2XIAETMPaOCAYMwggF/MBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUo5fW816iEOGrRZ88F2Q87gFwnMwwdAYIKwYBBQUHAQEEaDBmMDgGCCsGAQUFBzAChixodHRwOi8vdHJ1c3QucXVvdmFkaXNnbG9iYWwuY29tL3F2cmNhMWczLmNydDAqBggrBgEFBQcwAYYeaHR0cDovL29jc3AucXVvdmFkaXNnbG9iYWwuY29tMFEGA1UdIARKMEgwRgYLKwYBBAG+WACPUAYwNzA1BggrBgEFBQcCARYpaHR0cHM6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL3JlcG9zaXRvcnkwEwYDVR0lBAwwCgYIKwYBBQUHAwgwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2NybC5xdW92YWRpc2dsb2JhbC5jb20vcXZyY2ExZzMuY3JsMB0GA1UdDgQWBBSyWXrnFLLUycTy/OicbNoVPEBf1DAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAAKsleB6bYvl4baby9X/qVnUUH+ogMRCrfRHxJadbvAHdrQEgEhBNT9BRYZalBcXHBCCnrWGZ82v388IMGhi5oL8EqpWitP+0YDSbha1S4cfw5PY/SYRESVrMwezeC5y+3eQewAakrJkmTSx2/WoG1yyvGnrJKESlDoyK3suMdfjJtBENLjAo6Kn5dJMHU3gleq7U3y1FqG2vIwiX6LWX3nclv71e5q7TnMX22OCCCtCHVYHP8O6vrfwPyyLpkU5lDFY4yQnBnd5y0HZC2qoPpH/nDLRUD6MtXuttz4pHZ+HErDbuhIabfY1rLiBIgNqycBYUd/QnmUZdfGfYJHy0wqlx9Et1b2iIC3TiROklPe7oMYGE95Kp44hOTXsJBIEVhLy0iiN2uw8eveFZNAGnfH6YGZDL1HfHSu90asxH+tWO6m2ZzMMPWWYrUo8/qATmlc7cZUgvQ59J9Vj9H529Bh3YR4qQwqFRcd5+wD3NlZj3+PKarOZjm+sPA+tDkLI0jVX96DENwK9QsxGj2u+0uebIvTsGMXnO7MirzZ+hMfZGsWofhrk5SYL4iv8BdEyhkp5PIVeInuq7Dp6lTLU7VOWpaRlR2FU5aVvy80ejqwg5AUfSY0ROpLNvlPyhQf/RQSMXrmF8UVWlo93PC3ffig3uvKXoJdiqHS/93iiIX8Q + + +CN=QuoVadis Time-Stamping Authority CA G2, OID.2.5.4.97=NTRNL-30237459, O=QuoVadis Trustlink B.V., C=NL + + +sll65xSy1MnE8vzonGzaFTxAX9Q= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2022-12-21T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + QuoVadis Swiss Regulated CA G2x + + + +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 + + +CN=QuoVadis Swiss Regulated CA G2x, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +QnGpos/WTsHNLV4DejE6wo1aeTU= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + QuoVadis Swiss Regulated CA G3 + + + +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 + + +CN=QuoVadis Swiss Regulated CA G3, O=QuoVadis TrustLink Schweiz AG, C=CH + + +cQEai0YM4DVFTtZ+7NDtOY1G1mk= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + QuoVadis Swiss Regulated CA G2x (Remote QSCD) + + + +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 + + +CN=QuoVadis Swiss Regulated CA G2x, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +QnGpos/WTsHNLV4DejE6wo1aeTU= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + QuoVadis Swiss Regulated CA G3 (Remote QSCD) + + + +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 + + +CN=QuoVadis Swiss Regulated CA G3, O=QuoVadis TrustLink Schweiz AG, C=CH + + +cQEai0YM4DVFTtZ+7NDtOY1G1mk= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + chtsa01.quovadisglobal.com + + + +MIIGNzCCBB+gAwIBAgIUUP5XiBrIMOqzyy8PUULMurKIZcYwDQYJKoZIhvcNAQELBQAweTELMAkGA1UEBhMCTkwxFzAVBgNVBGEMDk5UUk5MLTMwMjM3NDU5MSAwHgYDVQQKDBdRdW9WYWRpcyBUcnVzdGxpbmsgQi5WLjEvMC0GA1UEAwwmUXVvVmFkaXMgVGltZS1TdGFtcGluZyBBdXRob3JpdHkgQ0EgRzEwHhcNMTkxMjI3MTAyMTE2WhcNMjQxMjI1MTAyMTE2WjCBuDELMAkGA1UEBhMCQ0gxHjAcBgNVBGEMFU5UUkNILUNIRS0xMTIuMjEwLjM0OTEmMCQGA1UECgwdUXVvVmFkaXMgVHJ1c3RsaW5rIFNjaHdlaXogQUcxJDAiBgNVBAsMGzEuMy42LjEuNC4xLjgwMjQuMC4yMDAwLjYuMTEWMBQGA1UECwwNUXVhbGlmaWVkIFRTQTEjMCEGA1UEAwwaY2h0c2EwMS5xdW92YWRpc2dsb2JhbC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDmPCAVm7MnAbULC1dEbTuXM2p0nPyy3TRk9oRODNJ+Atn6Ml461mxbx2I3ZEH5lg1lHqwodzdoE2bqC92XZg0p9kjzMNd5n2aKTDrghKSuBNHQlPVis5d0KB/ZRTbLrgYobMR8SSpJdYX6u1IWTYCz3riZ73fyyN9ZP629HodhzqDkxhVUjB0i/uQZXuSGu+ioKcB55bYoD4lC91Zpegotkdwdg0xcYcKqr7yhKM2D2SVV0vA/8xRKwfV2V7EW6uXLdYH3P7YHyocqbN0gFGxDp3m/oS3PFyEoPPCm1ArVgrhV9aE7RoBUkRT1HAFo9zP75plZXapZASqjDspQg/GBAgMBAAGjggF1MIIBcTAfBgNVHSMEGDAWgBRBViGNVPAYGZaGObcoXiTwrVerbzB3BggrBgEFBQcBAQRrMGkwOAYIKwYBBQUHMAKGLGh0dHA6Ly90cnVzdC5xdW92YWRpc2dsb2JhbC5jb20vcXZ0aW1lZzEuY3J0MC0GCCsGAQUFBzABhiFodHRwOi8vdXcub2NzcC5xdW92YWRpc2dsb2JhbC5jb20wUQYDVR0gBEowSDBGBgsrBgEEAb5YAI9QBjA3MDUGCCsGAQUFBwIBFilodHRwczovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20vcmVwb3NpdG9yeTAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDA7BgNVHR8ENDAyMDCgLqAshipodHRwOi8vY3JsLnF1b3ZhZGlzZ2xvYmFsLmNvbS9xdnRpbWVnMS5jcmwwHQYDVR0OBBYEFOUptZfJCy5Aj8+bDtmYRMqVXNouMA4GA1UdDwEB/wQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAK0IIBJkuvsHr69q+IuwEqlOZ7Ef25LIpE5V0d2h+BOxiGufwCjxv4JLGYi+zSC1fEV3CPIhpUHbIVzjYf1hHjNTKiogPBCVRnS4VCLpthUtBvYdg/eftCVRY/kDvUpbn0rbZkDqLPePKDdweyktXNzZ4xLpwpVGcmoMYNG4tl1kjn03EH0CqAz0KDcU2irJZBFvXEOU3OahmuT9oBsehtWRIdtF11vADwlaE74IKmQtAIkrIqrlOgzueZpAAtr+W2iLHeN2Caqigs5gaJjxhHvtB33fykfXVdPkEnWqGFXY77yzgGLFaRRxgxrtJEwm5w3N5uBnls1xYYmj6d+O29UPoREQPYPbCs+VaoMDqvU6m1ULyEJod1au938Lp3PyaioQvRZ6AabrdDHvj7BHMiUGgrKfxJ4iN8rZHK8ek7ABcYnDFeSqxWvX1kJlzw/7ig2ea4WVzrvivqbxKFGOrhWv+u/Vxj4f3RkXJ4tzDgcKgD0xlH+rXwlFJwa6dbEP7ldtXbYJ7ha2hs/Vsi6rU6Km2pYPXbxdbcMX1j+Yo2nOe8aMJvIPuAPJ+aV//G64zG7W6AfhdM+uqya6aVrOQ4qK/tJrTuz5UfyJ+wQJVN2uxaCuJFe2GKrIXZ5C0P1u+94ikTwEDWVYwd0kFy0asRCppXx0PQaRMVjZC/7vSDJE= + + +CN=chtsa01.quovadisglobal.com, OU=Qualified TSA, OU=1.3.6.1.4.1.8024.0.2000.6.1, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +5Sm1l8kLLkCPz5sO2ZhEypVc2i4= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc1.quovadisglobal.com + + + +MIIDxDCCA2qgAwIBAgIUM+Lz9QcYKCBi8ZjDNuwTOgSZiPUwCgYIKoZIzj0EAwIweTELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTEvMC0GA1UEAwwmUXVvVmFkaXMgVGltZS1TdGFtcGluZyBBdXRob3JpdHkgQ0EgRzIwHhcNMjExMDE1MTMzNTI1WhcNMjcxMDE0MTMzNTI0WjB8MQswCQYDVQQGEwJDSDEeMBwGA1UEYQwVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MSYwJAYDVQQKDB1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzElMCMGA1UEAwwcdHNhY2hlY2MxLnF1b3ZhZGlzZ2xvYmFsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMAxzxlCa0AMMbRTO7k6scpkM8tv0ry/B/88r2tGsRgZhTlGt9oh98q+5CprKHtAJmM/0C2NJIEWvdSvsvb5z4GjggHLMIIBxzAfBgNVHSMEGDAWgBSyWXrnFLLUycTy/OicbNoVPEBf1DCBjgYIKwYBBQUHAQEEgYEwfzBRBggrBgEFBQcwAoZFaHR0cDovL3RydXN0LnF1b3ZhZGlzZ2xvYmFsLmNvbS9xdW92YWRpc3RpbWVzdGFtcGluZ2F1dGhvcml0eWNhZzIuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5xdW92YWRpc2dsb2JhbC5jb20wdgYDVR0gBG8wbTBrBgsrBgEEAb5YAI9QBjBcMDUGCCsGAQUFBwIBFilodHRwczovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20vcmVwb3NpdG9yeTAjBggrBgEFBQcCAjAXDBVyZWd1bGF0ZWQgY2VydGlmaWNhdGUwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5xdW92YWRpc2dsb2JhbC5jb20vcXVvdmFkaXN0aW1lc3RhbXBpbmdhdXRob3JpdHljYWcyLmNybDAdBgNVHQ4EFgQU8cTe+/lVl+1ziycSFI3duSzfp3AwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDNIEAWJIj9gi6dpQm3g48jKg+BzEER0ZBFJcYFRi6+3wIgLm1AQuDG1Olrj4InpRq48PPyKgNJtcqqEtEyB9SrcXk= + + +CN=tsachecc1.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +8cTe+/lVl+1ziycSFI3duSzfp3A= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2022-12-21T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc2.quovadisglobal.com + + + +MIIDxDCCA2qgAwIBAgIUfZfEQNR3kkTf9pPkvEO6iqDWyoMwCgYIKoZIzj0EAwIweTELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTEvMC0GA1UEAwwmUXVvVmFkaXMgVGltZS1TdGFtcGluZyBBdXRob3JpdHkgQ0EgRzIwHhcNMjExMDE1MTMzODMzWhcNMjcxMDE0MTMzODMyWjB8MQswCQYDVQQGEwJDSDEeMBwGA1UEYQwVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MSYwJAYDVQQKDB1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzElMCMGA1UEAwwcdHNhY2hlY2MyLnF1b3ZhZGlzZ2xvYmFsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA3NABDAh5pBqq1LRXsONe8mZ8s/FfeMeVTQbJkztbC9hPG/w6VzaGrxTsUyYuWtI1cD9AIijpL7c++emuaQzOSjggHLMIIBxzAfBgNVHSMEGDAWgBSyWXrnFLLUycTy/OicbNoVPEBf1DCBjgYIKwYBBQUHAQEEgYEwfzBRBggrBgEFBQcwAoZFaHR0cDovL3RydXN0LnF1b3ZhZGlzZ2xvYmFsLmNvbS9xdW92YWRpc3RpbWVzdGFtcGluZ2F1dGhvcml0eWNhZzIuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5xdW92YWRpc2dsb2JhbC5jb20wdgYDVR0gBG8wbTBrBgsrBgEEAb5YAI9QBjBcMDUGCCsGAQUFBwIBFilodHRwczovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20vcmVwb3NpdG9yeTAjBggrBgEFBQcCAjAXDBVyZWd1bGF0ZWQgY2VydGlmaWNhdGUwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5xdW92YWRpc2dsb2JhbC5jb20vcXVvdmFkaXN0aW1lc3RhbXBpbmdhdXRob3JpdHljYWcyLmNybDAdBgNVHQ4EFgQUGtQjJNqXlSokcDvVXmSPDyfTNNowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCICEs/XGWDL7TuGMsWgvCi7LOkSJ7YmUgHhkGK0Nw7vJGAiEA3WQECFRAri7vEkzTfYvbcCVqmV+xxOTBmNZXQvHqnyk= + + +CN=tsachecc2.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +GtQjJNqXlSokcDvVXmSPDyfTNNo= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2022-12-21T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc3.quovadisglobal.com + + + +MIIDwzCCA2qgAwIBAgIUUf3xSP0p++Ji6+gB2E5OiaWse/AwCgYIKoZIzj0EAwIweTELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTEvMC0GA1UEAwwmUXVvVmFkaXMgVGltZS1TdGFtcGluZyBBdXRob3JpdHkgQ0EgRzIwHhcNMjExMDE1MTMzOTM2WhcNMjcxMDE0MTMzOTM1WjB8MQswCQYDVQQGEwJDSDEeMBwGA1UEYQwVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MSYwJAYDVQQKDB1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzElMCMGA1UEAwwcdHNhY2hlY2MzLnF1b3ZhZGlzZ2xvYmFsLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCHwFmKGfGGKvwJ1VWZQ5cCXkamkJ+p8YNLnXwzIsCWu0Nvi/BbpVriDIKLA3T4Vi1UAMyYw7G8g1VVUdy2p1+qjggHLMIIBxzAfBgNVHSMEGDAWgBSyWXrnFLLUycTy/OicbNoVPEBf1DCBjgYIKwYBBQUHAQEEgYEwfzBRBggrBgEFBQcwAoZFaHR0cDovL3RydXN0LnF1b3ZhZGlzZ2xvYmFsLmNvbS9xdW92YWRpc3RpbWVzdGFtcGluZ2F1dGhvcml0eWNhZzIuY3J0MCoGCCsGAQUFBzABhh5odHRwOi8vb2NzcC5xdW92YWRpc2dsb2JhbC5jb20wdgYDVR0gBG8wbTBrBgsrBgEEAb5YAI9QBjBcMDUGCCsGAQUFBwIBFilodHRwczovL3d3dy5xdW92YWRpc2dsb2JhbC5jb20vcmVwb3NpdG9yeTAjBggrBgEFBQcCAjAXDBVyZWd1bGF0ZWQgY2VydGlmaWNhdGUwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwgwVAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5xdW92YWRpc2dsb2JhbC5jb20vcXVvdmFkaXN0aW1lc3RhbXBpbmdhdXRob3JpdHljYWcyLmNybDAdBgNVHQ4EFgQUaa965rDYvrGIr+b6QmxPCwcO5L0wDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIDFjwlXCYtiRYeLRxDOdU+ocmUCCTXS1lmkivBmyDKRlAiAOszrqNeluKzm7Qc22mQk794O9Nknxtl/+jdL8Kz6VsQ== + + +CN=tsachecc3.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +aa965rDYvrGIr+b6QmxPCwcO5L0= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2022-12-21T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa1.quovadisglobal.com + + + +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 + + +CN=tsachrsa1.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +eWgadGBsnnt+Jupj9ATPWzits/Q= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-01-31T22:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + +tsachrsa1.quovadisglobal.com + + + + CN=tsachrsa1.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + + eWgadGBsnnt+Jupj9ATPWzits/Q= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T22:00:00Z + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa2.quovadisglobal.com + + + +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 + + +CN=tsachrsa2.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +IXIwqt4NjsnNXtbMo3DndrNZqk4= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-01-31T22:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + +tsachrsa2.quovadisglobal.com + + + + CN=tsachrsa2.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + + IXIwqt4NjsnNXtbMo3DndrNZqk4= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T22:00:00Z + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa3.quovadisglobal.com + + + +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 + + +CN=tsachrsa3.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + +oVJ4rCPke5S/CBG5q6+7olG/ykA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/withdrawn + 2024-01-31T22:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + +tsachrsa3.quovadisglobal.com + + + + CN=tsachrsa3.quovadisglobal.com, O=QuoVadis Trustlink Schweiz AG, OID.2.5.4.97=NTRCH-CHE-112.210.349, C=CH + + + oVJ4rCPke5S/CBG5q6+7olG/ykA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-31T22:00:00Z + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc1.digicert.eu + + + +MIID0zCCA3mgAwIBAgIQB38qynCWbw26lkapwMCaizAKBggqhkjOPQQDAjCBijELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTFAMD4GA1UEAww3RGlnaUNlcnQgUXVvVmFkaXMgRzMgVFMgRXVyb3BlIEVDQyBQMjU2IFNIQTI1NiAyMDIzIENBMTAeFw0yMzA4MDgxMDU1MThaFw0yOTA4MDgwMDAwMDBaMHUxCzAJBgNVBAYTAkNIMSYwJAYDVQQKEx1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MR4wHAYDVQQDExV0c2FjaGVjYzEuZGlnaWNlcnQuZXUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASN2kVOqmwYknxk+fb5dYBNh/jaAt81orZM3bz2l05rqNAOA3kNzihCIfGUtPo15vzLuVyWNxvaAsccS9KHtuxeo4IB0zCCAc8wDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMHYGA1UdIARvMG0wawYLKwYBBAG+WACPUAYwXDA1BggrBgEFBQcCARYpaHR0cHM6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL3JlcG9zaXRvcnkwIwYIKwYBBQUHAgIwFwwVcmVndWxhdGVkIGNlcnRpZmljYXRlMB8GA1UdIwQYMBaAFJZAfdAq+6WDq42fIYPVYiCz1SKpMB0GA1UdDgQWBBTRc2Sj7SGCcGoIz2NnNHWDStixwDBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3JsMIGQBggrBgEFBQcBAQSBgzCBgDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZGlnaWNlcnQuZXUwWQYIKwYBBQUHMAKGTWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIGCUpg4NGULVjXloK98j74RqhsxMIwGCah23rtlh5dHLAiEAn4mMHfkaInDpZzFRVsk8GWlgO7yABYZQvUbawH4LuN0= + + +CN=tsachecc1.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +0XNko+0hgnBqCM9jZzR1g0rYscA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc2.digicert.eu + + + +MIID1DCCA3mgAwIBAgIQDJKBtqXinQkONMHZsWY/SDAKBggqhkjOPQQDAjCBijELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTFAMD4GA1UEAww3RGlnaUNlcnQgUXVvVmFkaXMgRzMgVFMgRXVyb3BlIEVDQyBQMjU2IFNIQTI1NiAyMDIzIENBMTAeFw0yMzA4MDgxMTA2MjBaFw0yOTA4MDgwMDAwMDBaMHUxCzAJBgNVBAYTAkNIMSYwJAYDVQQKEx1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MR4wHAYDVQQDExV0c2FjaGVjYzIuZGlnaWNlcnQuZXUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATIUcRNNwU+czG1NA4OAiKtI40JDk8CJqSZosf06KXbl5PCQsxwDwzfA70KeNi3fGZ/WPez4jW5dZpJ4Bvfirnco4IB0zCCAc8wDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMHYGA1UdIARvMG0wawYLKwYBBAG+WACPUAYwXDA1BggrBgEFBQcCARYpaHR0cHM6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL3JlcG9zaXRvcnkwIwYIKwYBBQUHAgIwFwwVcmVndWxhdGVkIGNlcnRpZmljYXRlMB8GA1UdIwQYMBaAFJZAfdAq+6WDq42fIYPVYiCz1SKpMB0GA1UdDgQWBBRUSFKe2oT+CrEWjoJrqRjIBn/KJzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3JsMIGQBggrBgEFBQcBAQSBgzCBgDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZGlnaWNlcnQuZXUwWQYIKwYBBQUHMAKGTWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3J0MAoGCCqGSM49BAMCA0kAMEYCIQCI/QgVfWf2d///gw9YPQ0nFAQogavsnsSi1LabF+3t+gIhAOLr9iV8ukchKrWwpofchKDEQCEmth/ghlMGUrnFF9Sr + + +CN=tsachecc2.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +VEhSntqE/gqxFo6Ca6kYyAZ/yic= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachecc3.digicert.eu + + + +MIID0zCCA3mgAwIBAgIQAuCnlSKZG7bhsJJajXn5KzAKBggqhkjOPQQDAjCBijELMAkGA1UEBhMCTkwxIDAeBgNVBAoMF1F1b1ZhZGlzIFRydXN0bGluayBCLlYuMRcwFQYDVQRhDA5OVFJOTC0zMDIzNzQ1OTFAMD4GA1UEAww3RGlnaUNlcnQgUXVvVmFkaXMgRzMgVFMgRXVyb3BlIEVDQyBQMjU2IFNIQTI1NiAyMDIzIENBMTAeFw0yMzA4MDgxMTExMzFaFw0yOTA4MDgwMDAwMDBaMHUxCzAJBgNVBAYTAkNIMSYwJAYDVQQKEx1RdW9WYWRpcyBUcnVzdGxpbmsgU2Nod2VpeiBBRzEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTExMi4yMTAuMzQ5MR4wHAYDVQQDExV0c2FjaGVjYzMuZGlnaWNlcnQuZXUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATBXw43mFovJE8wNUegBr5GUh1jdfNVAIm2xhOAqtk8v0ga1l4EiWU6xWVt4R+KPHiRChL4sdoDXnM6jG7eqxC1o4IB0zCCAc8wDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMHYGA1UdIARvMG0wawYLKwYBBAG+WACPUAYwXDA1BggrBgEFBQcCARYpaHR0cHM6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL3JlcG9zaXRvcnkwIwYIKwYBBQUHAgIwFwwVcmVndWxhdGVkIGNlcnRpZmljYXRlMB8GA1UdIwQYMBaAFJZAfdAq+6WDq42fIYPVYiCz1SKpMB0GA1UdDgQWBBTcynrnhIL529X08YHQFtEyTnaPezBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3JsMIGQBggrBgEFBQcBAQSBgzCBgDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZGlnaWNlcnQuZXUwWQYIKwYBBQUHMAKGTWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmV1L0RpZ2lDZXJ0UXVvVmFkaXNHM1RTRXVyb3BlRUNDUDI1NlNIQTI1NjIwMjNDQTEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIFzLdHq7Ahk8BnJfZl5K1M6WAKG7Cvlm3c3NuVDXBeIPAiEAuRBUZUCfKnvKsMXIxWv7fLuG0ld/ZOYuZpOIlLqV+oo= + + +CN=tsachecc3.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +3Mp654SC+dvV9PGB0BbRMk52j3s= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa1.digicert.eu + + + +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 + + +CN=tsachrsa1.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +cgjhAjPkKMT1VFByImNDiI1j20Y= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa2.digicert.eu + + + +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 + + +CN=tsachrsa2.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +CubxmVet7XCSh6/CsR4jKwgxGKM= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + tsachrsa3.digicert.eu + + + +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 + + +CN=tsachrsa3.digicert.eu, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +vGdT/1wQ3G85johN3m3A0UGHGVE= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-01-31T23:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + DigiCert QuoVadis G3 Qualified CH Reg RSA4096 SHA256 2023 CA1 + + + +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 + + +CN=DigiCert QuoVadis G3 Qualified CH Reg RSA4096 SHA256 2023 CA1, OID.2.5.4.97=NTRCH-CHE-112.210.349, O=QuoVadis Trustlink Schweiz AG, C=CH + + +fA+E5vXGNrJPM3qUujXzY0whR60= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2024-08-12T22:00:00Z + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/SchemeServiceDefinition/QuoVadisName + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + + + + + + + Bundesamt fuer Informatik und Telekommunikation (BIT) + Bundesamt fuer Informatik und Telekommunikation (BIT) + + + Swiss Government PKI + NTRCH-CHE-221.032.573 + + + + + Eichenweg 3 + Zollikofen + BE + 3003 + CH + + + + mailto:pki-info@bit.admin.ch + http://www.pki.admin.ch + + + + https://www.bit.admin.ch/en/sg-pki-swiss-government-pki-en + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/TSA/QTST + + Swiss Government PKI - TSA + + + +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 + + +CN=Swiss Government Root CA IV, OU=Swiss Government PKI, O=Bundesamt fuer Informatik und Telekommunikation (BIT), C=CH + + +waI/06onWsx+12cCZ7R5c4Lf9eA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2019-05-21T22:00:00Z + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/RemoteQSCDManagement/Q + + Swiss Government PKI – Remote QSCD Service + + + +MIIGyTCCBLGgAwIBAgIRAN+zTZpqLM+HVinpra/SjAQwDQYJKoZIhvcNAQELBQAwgZIxCzAJBgNVBAYTAkNIMT4wPAYDVQQKEzVCdW5kZXNhbXQgZnVlciBJbmZvcm1hdGlrIHVuZCBUZWxla29tbXVuaWthdGlvbiAoQklUKTEdMBsGA1UECxMUU3dpc3MgR292ZXJubWVudCBQS0kxJDAiBgNVBAMTG1N3aXNzIEdvdmVybm1lbnQgUm9vdCBDQSBJVjAeFw0xODExMjkyMzAxMDBaFw00MzExMjkyMjU5MDBaMIGSMQswCQYDVQQGEwJDSDE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSQwIgYDVQQDExtTd2lzcyBHb3Zlcm5tZW50IFJvb3QgQ0EgSVYwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDHaf8Vntrw/gujHPQSkNmEPcVrzXKDS6CpkeOPUg0jhOxT/WcB+WJGH1folvj9Q6sT/jKDv0lHaTrnxSGbBKxKSx0s2d7KeR1Jnl9cZtVvzfIyd/8XPdSTdKpxO38yGl2GJpoEv+ZbcOqYoyGAeawQgZqCGJRse2wD1Apg4RxqehFft9DfuvS2gx7mcI4GvnTNwMySX7mTyqicUibKjGgFXxiwc8RQV3iklizVqwmWowm4dmKQBjkjL97YA3fvIJDpazHIYtcs+c6u7O0N+3AjHlrxsAgZu86p6sXobwdiqEW24CK7aqSfbCOVQOVxWyIq4/kqF3YjciI4kQjgrXU19Z5CBArfopaRgTBrEynMhvpJL5eVbBYsW16V41BLS8VW4H4I2CennLXN3rdCEROByY5J1HTewDp6pSGprLz9JKvwRKmB4ebEOOrz/o3205HiXNwnsoafxc9gWZB2LRH4kzwGkKHKGGJnKaXR90c0HChnBdfp9edMHHU5L33sjke1qrrcu4/6Y61XZghZZMW8nx3beSaLVDqfPDFkg2v6KQ7FMVlKBxhnidAUyIDEj8Hm1vbHtlOn87Ou3zD1vdlsa34q/xZzRg+M6jcqzO9tjAEKM76gpTVaGzE3Np58WP3NYvwf5MKIqciDRo8o5IZ+Fm2AnQEz6jt4vGq2r8TBUQIDAQABo4IBFjCCARIwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUwaI/06onWsx+12cCZ7R5c4Lf9eAwgc8GA1UdIwSBxzCBxIAUwaI/06onWsx+12cCZ7R5c4Lf9eChgZikgZUwgZIxCzAJBgNVBAYTAkNIMT4wPAYDVQQKEzVCdW5kZXNhbXQgZnVlciBJbmZvcm1hdGlrIHVuZCBUZWxla29tbXVuaWthdGlvbiAoQklUKTEdMBsGA1UECxMUU3dpc3MgR292ZXJubWVudCBQS0kxJDAiBgNVBAMTG1N3aXNzIEdvdmVybm1lbnQgUm9vdCBDQSBJVoIRAN+zTZpqLM+HVinpra/SjAQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAA5fDKq2LYL6qEUVe/q2EJcB/sck7HMz1K+rdiQTQXuztj0mIZVOnZZdKkjKFykLYXdiY1RHtNKq8ZNPAw48JVbOQKNdAzydUF8UUmHRFUHdR8mMraX/StblX09ccYV6SHfrVUDdzS15v9grdykjhwThISFo7ZJmBkbY40IRkiGjZoff6MxN79y3ZYBXe+fXXolSdZ1vIjiRDabXfXJaKITjCzRqp1N/RGJTHztPkWkfZ9nAVVbtY6wWPh5Rh36XmRP/Sl/ZNd5Lxnx6Ti9Dn6Suvjr3H+SqOslij2ZZZIIEfYERIkotjKoL6lHlMubDizHA0Y3N+vGvlShpg8ke2+eZfX3MozMN9bDN1SVYV8eGJhgtB5ISpB3+iWS2cTic5vtlDtxD6aC5waSkQZNKcWXH41CsOVoDZfAAyPBX3eoqAtWNdcVTy/59Mjm4ZCFlJbWpJMnCbCZszYGVm/XpCWNbxIV6wZ6LdXlwvwfwB/YMJZJmULNgNwku6tW1Mf39IWG3RkTxrcVyFdFlceG50FMIVa+4l8Wr7VRpGlHD8DTr1EDN7eERHZZ497rL5n7gNk1ygTE1ChEsU9i67VpSP2CA6nQHtlPk8Ttyzygdy3FLRGdvVqyiTX/zBPqaEsbiSwz01eSA/p7+hT3Ryx6KlBOHw8htZp6mMjSIvCLRILSg== + + +CN=Swiss Government Root CA IV, OU=Swiss Government PKI, O=Bundesamt fuer Informatik und Telekommunikation (BIT), C=CH + + +waI/06onWsx+12cCZ7R5c4Lf9eA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2020-08-03T22:00:00Z + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + Swiss Government PKI – Regulated CA 02 for regulated and qualified certificates + + + +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 + + +CN=Swiss Government Root CA IV, OU=Swiss Government PKI, O=Bundesamt fuer Informatik und Telekommunikation (BIT), C=CH + + +waI/06onWsx+12cCZ7R5c4Lf9eA= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2019-05-21T22:00:00Z + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + + + + https://uri.tsl-switzerland.ch/TrstSvc/Svctype/CA/QC + + Swiss Government PKI – Regulated CA 03 for regulated and qualified certificates + + + +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 + + +CN=Swiss Government Regulated CA 03, OU=Swiss Government PKI, O=Bundesamt fuer Informatik und Telekommunikation (BIT), OID.2.5.4.97=NTRCH-CHE-221.032.573, C=CH + + +RaYltH5/2C86KbRr1eQmTlgIJAM= + + + https://uri.tsl-switzerland.ch/TrstSvc/TrustedList/Svcstatus/granted + 2025-08-22T08:00:00Z + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSeals/ + + + + + https://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures/ + + + + + + + + +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-11-18T09:42:06ZlafPpBr0GPCBfWCaPjx2vyjUuLkwXnZxNY1cNYKk7F/L1YBtcxOh1K7+BFcBvosx8TY4VsE6ovqz0sUMLSD6JA==CN=Swiss Government Regulated CA 02,OU=Swiss Government PKI,O=Bundesamt fuer Informatik und Telekommunikation (BIT),2.5.4.97=#131556415443482d4348452d3232312e3033322e353733,C=CH14765383778826950902122843009550518128text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/phljkcdancohijnejmlocfendhpmakeh b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/phljkcdancohijnejmlocfendhpmakeh new file mode 100644 index 0000000000..dcb9967f96 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/phljkcdancohijnejmlocfendhpmakeh @@ -0,0 +1,3620 @@ + + + 5 + 9 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/CLlist + + SUBSECRETARÍA DE ECONOMÍA Y EMPRESAS DE MENOR TAMAÑO + RUT 60701000-5 + La Ley N° 19.799 sobre Documentos Electrónicos, Firma Electrónica y Servicios de Certificación establece en su Artículo 2, letra e) que "La Entidad Acreditadora será la Subsecretaría de Economía, Fomento y Reconstrucción", actualmente Subsecretaría de Economía y Empresas de Menor Tamaño. Esta Lista de Confianza la firma el Coordinado de la Entidad Acreditadora con un certificado de Firma Electrónica Avanzada emitido por el Prestador E-Sign SA + E-Sign S.A. + La Lista de Confianza (TSL) de Chile es firmada por el Coordinador de la Entidad Acreditadora mediante un certificado de Firma Electrónica Avanzada, emitido por el Prestador de Servicios de Certificación acreditado E-Sign S.A. + UNDERSECRETARY OF ECONOMY AND SMALLER COMPANIES + NTRCL-607010005 + Law No. 19,799 on Electronic Documents, Electronic Signatures, and Certification Services establishes in Article 2, letter e) that "The Accrediting Entity shall be the Undersecretariat of Economy, Development, and Reconstruction," currently the Undersecretariat of Economy and Small Enterprises. This Trusted List is signed by the Coordinator of the Accrediting Entity using an Advanced Electronic Signature certificate issued by the provider E-Sign SA + E-Sign S.A. + Chile's Trusted List (TSL) is signed by the Coordinator of the Accrediting Entity using an Advanced Electronic Signature certificate issued by the accredited Certification Service Provider E-Sign S.A. + SUBSECRETARIA DE ECONOMIA E PEQUENAS EMPRESAS + RUT 60701000-5 + A Lei N° 19.799 sobre Documentos Eletrônicos, Assinatura Eletrônica e Serviços de Certificação estabelece em seu Artigo 2, letra e) que "A Entidade Acreditadora será a Subsecretaria de Economia, Fomento e Reconstrução", atualmente Subsecretaria de Economia e Pequenas Empresas. Esta Lista de Confiança é assinada pelo Coordenador da Entidade Acreditadora com um certificado de Assinatura Eletrônica Avançada emitido pelo Prestador E-Sign SA + E-Sign S.A. + A Lista de Confiança (TSL) do Chile é assinada pelo Coordenador da Entidade Acreditadora por meio de um certificado de Assinatura Eletrônica Avançada, emitido pelo Prestador de Serviços de Certificação acreditado E-Sign S.A. + SUBSECRETARIO DE ECONOMÍA HA EMPRESA MICHÎVÉVA + RUT 60701000-5 + Leiguasu N° 19.799 rehegua Kuatiañe'ẽ Electrónico, Firma Electrónica ha Certificación Serviciokuéra omoĩva i Artículo 2, letra e) he'íva "Entidad Acreditadora ha'eta Subsecretaría de Economía, Fomento ha Reconstrucción", ko'ága Subsecretaría de Economía ha Empresas de Menor Tamaño. Ko Lista Jeroviapegua ohaíva Entidad Acreditadora moakãhára peteî Aviriaha Electrónica Avanzada rehegua certificado reheve, ome'êva E-Sign SA + E-Sign S.A. + Ko Chile Lista Jeroviapegua (TSL) ojehaíva Entidad Acreditadora moakãhára rehe, peteî Aviriaha Electrónica Avanzada rehegua certificado rupive, ome'êva Prestador de Servicios de Certificación E-Sign S.A. + + + + + Avenida Libertador Bernardo O'Higgins 1449, Santiago Downtown Torre II, piso 11, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Avenida Libertador Bernardo O'Higgins 1449, Santiago Downtown Tower II, 11th floor, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Avenida Libertador Bernardo O'Higgins 1449, Santiago Downtown Tower II, 11º andar, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Avenida Libertador Bernardo O'Higgins 1449, Santiago Centro Ciudad Torre II, 11o piso, Santiago-pe + Santiago + Región Metropolitana + 8320000 + CL + + + + http://www.entidadacreditadora.gob.cl/ + https://www.entidadacreditadora.gob.cl/contacto/ + mailto:entidadacreditadora@economia.cl + https://www.entidadacreditadora.gob.cl/ + https://www.entidadacreditadora.gob.cl/contacto/ + mailto:entidadacreditadora@economia.cl + https://www.entidadacreditadora.gob.cl/ + https://www.entidadacreditadora.gob.cl/contacto/ + mailto:entidadacreditadora@economia.cl + https://www.entidadacreditadora.gob.cl/ + https://www.entidadacreditadora.gob.cl/contacto/ + mailto:entidadacreditadora@economia.cl + + + + CL: Lista de confianza que contiene información de la Entidad Acreditadora de la Subsecretaría de Economía y Empresas de Menor Tamaño y de los Prestadores de Servicios de Certificación acreditados en Firma Electrónica Avanzada, Sellado de Tiempo, Biometría y Firma Móvil, en conformidad con la Ley N° 19.799 sobre Documentos Electrónicos, Firma Electrónica y Servicios de Certificación del 25 de marzo de 2002, el Decreto N° 181 que aprueba el reglamento de la Ley N° 19.799 del 9 de julio de 2002, y el Decreto N° 24 que aprueba la norma técnica para la prestación del servicio de Firma Electrónica Avanzada del 22 de febrero de 2019. + CL: Trust list containing information about the Accrediting Entity of the Undersecretariat of Economy and Small Enterprises and the Certification Service Providers accredited in Advanced Electronic Signature, Time Stamping, Biometrics, and Mobile Signature, in accordance with Law No. 19,799 on Electronic Documents, Electronic Signatures, and Certification Services of March 25, 2002, Decree No. 181 approving the regulation of Law No. 19,799 of July 9, 2002, and Decree No. 24 approving the technical standard for the provision of Advanced Electronic Signature services of February 22, 2019. + CL: Lista de confiança que contém informações sobre a Entidade Acreditadora da Subsecretaria de Economia e Empresas de Pequeno Porte e dos Prestadores de Serviços de Certificação acreditados em Assinatura Eletrônica Avançada, Carimbo de Tempo, Biometria e Assinatura Móvel, em conformidade com a Lei N° 19.799 sobre Documentos Eletrônicos, Assinatura Eletrônica e Serviços de Certificação de 25 de março de 2002, o Decreto N° 181 que aprova o regulamento da Lei N° 19.799 de 9 de julho de 2002, e o Decreto N° 24 que aprova a norma técnica para a prestação do serviço de Assinatura Eletrônica Avançada de 22 de fevereiro de 2019. + CL: Lista de confianza orekóva marandu Entidad Acreditadora rehegua Subsecretaría de Economía ha Empresas de Menor Tamaño ha Prestadores de Servicios de Certificación ojehechakuaáva Firma Electrónica Avanzada, Sellado de Tiempo, Biometría ha Firma Móvil, Ley N° 19.799 rehegua Documentos Electrónicos, Firma Electrónica ha Servicios de Certificación rehegua 25 jasypoapy 2002, Decreto N° 181 ohechakuaáva reglamento Ley N° 19.799 rehegua 9 jasypokõi 2002, ha Decreto N° 24 ohechakuaáva norma técnica prestación servicio Firma Electrónica Avanzada rehegua 22 jasykõi 2019. + + + https://www.entidadacreditadora.gob.cl/entidades/ + https://www.entidadacreditadora.gob.cl/entidades/ + https://www.entidadacreditadora.gob.cl/entidades/ + https://www.entidadacreditadora.gob.cl/entidades/ + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/CLdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + + CL + + El marco legal aplicable a la implementación de esta TSL (Trusted-Current Status List) incluye la Ley N° 19.799 sobre Documentos Electrónicos, Firma Electrónica y Servicios de Certificación del 25 de marzo de 2002, en su Artículo N° 18, y el Decreto N° 181 que aprueba el reglamento de la Ley N° 19.799 del 9 de julio de 2002, en su Artículo N° 23. + The legal framework applicable to the implementation of this TSL (Trusted-Current Status List) includes Law No. 19,799 on Electronic Documents, Electronic Signatures, and Certification Services of March 25, 2002, in its Article No. 18, and Decree No. 181 approving the regulation of Law No. 19,799 of July 9, 2002, in its Article No. 23. + O marco legal aplicável à implementação desta TSL (Lista de Status Confiável-Atual) inclui a Lei N° 19.799 sobre Documentos Eletrônicos, Assinatura Eletrônica e Serviços de Certificação de 25 de março de 2002, em seu Artigo N° 18, e o Decreto N° 181 que aprova o regulamento da Lei N° 19.799 de 9 de julho de 2002, em seu Artigo N° 23. + Leiguasu ojehechakuaáva ko TSL (Lista de Estado Confiable-Actual) apopyrãme oguereko ko'ã léi: Leiguasu N° 19.799 rehegua Kuatiañe'ẽ Electrónico, Firma Electrónica ha Certificación Serviciokuéra 25 jasypoapy 2002-pe, i Artículo N° 18-pe, ha Decreto N° 181 ohechakuaáva reglamento Leiguasu N° 19.799 rehegua 9 jasypokõi 2002-pe, i Artículo N° 23-pe. + + 65535 + + + + + + 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 + + + + https://pki.jgm.gov.ar/TSL/tsl-AR.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/ARlist + + + AR + + + application/vnd.etsi.tsl+xml + + + + Subsecretaría de Innovación + Undersecretary of Innovation + Subsecretaria de Inovação + Subsecretaria de Inovação Administrativa + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + + + + + + 2025-06-02T15:00:00Z + + 2025-12-02T14:59:59Z + + + https://www.entidadacreditadora.gob.cl/wp-content/uploads/2025/06/CL-TSL.xml + + + + + + + E-CERTCHILE + E-CERTCHILE + E-CERTCHILE + E-CERTCHILE + + + EMPRESA NACIONAL DE CERTIFICACIÓN ELECTRÓNICA S.A. + RUT 96928180-5 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada por R.A.E. N° 317 del 14 de agosto de 2003, en Sellado de Tiempo por R.A.E. N° 3779 del 24 de noviembre de 2016, y en Biometría por R.A.E. N° 3919 del 7 de diciembre de 2016, de la Subsecretaría de Economía, Fomento y Reconstrucción. + NATIONAL ELECTRONIC CERTIFICATION COMPANY S.A. + NTRCL-969281805 + Certification Services Provider accredited in Advanced Electronic Signature by R.A.E. N° 317 of August 14, 2003, in Time Stamping by R.A.E. N° 3779 of November 24, 2016 and in Biometrics by R.A.E. No. 3919 of December 7, 2016 of the Undersecretary of Economy, Development and Reconstruction. + EMPRESA NACIONAL DE CERTIFICAÇÃO ELECTRÓNICA S.A. + RUT 96928180-5 + Prestador de Serviços de Certificação acreditado em Assinatura Eletrônica Avançada pela R.A.E. N° 317 de 14 de agosto de 2003, em Carimbo de Tempo pela R.A.E. N° 3779 de 24 de novembro de 2016, e em Biometria pela R.A.E. N° 3919 de 7 de dezembro de 2016, da Subsecretaria de Economia, Fomento e Reconstrução. + EMPRESA NACIONAL DE CERTIFICACIÓN ELECTRÓNICA S.A. + RUT 96928180-5 + Proveedor de Servicios de Certificación ojeacreditáva Firma Electrónica Avanzada-pe R.A.E. N° 317 14 de agosto 2003-pe guare, Sellado de Tiempo-pe, ojapova’ekue R.A.E. N° 3779 24 jasyporundy 2016-pe ha Biometría-pe R.A.E. No 3919 7 de diciembre 2016 Subsecretario de Economía, Desarrollo y Reconstrucción. + + + + + Monjitas 392, piso 17, oficina 1701, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Monjitas 392, 17th floor, office 1701, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Monjitas 392, 17º andar, escritório 1701, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Monjitas 392, 17o piso, oficina 1701, Santiago-pe + Santiago + Región Metropolitana + 8320000 + CL + + + + https://www.e-certchile.cl + mailto:scliente@e-certchile.cl + https://www.e-certchile.cl + mailto:scliente@e-certchile.cl + https://www.e-certchile.cl + mailto:scliente@e-certchile.cl + https://www.e-certchile.cl + mailto:scliente@e-certchile.cl + + + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + + + +MIIDKzCCApSgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBujELMAkGA1UEBhMCQ0wxHTAbBgNVBAgUFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHFAhTYW50aWFnbzEUMBIGA1UEChQLRS1DRVJUQ0hJTEUxIDAeBgNVBAsUF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMRwwGgYDVQQDFBNFLUNFUlRDSElMRSBST09UIENBMSMwIQYJKoZIhvcNAQkBFhRlbWFpbEBlLWNlcnRjaGlsZS5jbDAeFw0wMzA3MTUyMTQ4MDVaFw0xMzA3MTIwMDAwMDBaMIG6MQswCQYDVQQGEwJDTDEdMBsGA1UECBQUUmVnaW9uIE1ldHJvcG9saXRhbmExETAPBgNVBAcUCFNhbnRpYWdvMRQwEgYDVQQKFAtFLUNFUlRDSElMRTEgMB4GA1UECxQXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExHDAaBgNVBAMUE0UtQ0VSVENISUxFIFJPT1QgQ0ExIzAhBgkqhkiG9w0BCQEWFGVtYWlsQGUtY2VydGNoaWxlLmNsMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5A14n2i5ziZkdP3v7Bwc2yHZ8XQtALcn4mZJLi6DuBGJ98eu3m5QTXc70D02ToR18rh4YrDA/V7odJEafUs/wxnwg155DzYKIBtKoWkQc8KeQ27mJdIXgKGVwMWC/A7h+eb1HjWk2YDkcnMoACPIhm2kTq/Lk88Dt6gxaG7sBRwIDAQABoz8wPTALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFB54YBsvchJtQPC8cz4JgwiODQmhMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEABE//ShlpwEvRKiiH/msFQyq3hwR/+hVXhTZ4P2/j5La876SUfZB1Wwlg694XEkOHtJcIXTbvlICPzihP4AyISjpvLUtjHw2sKtdAyQ6T8Te+G8Kl8sc10YwSArpjeZikE3EMA8wDXYWzMvU3oNjP6LT8bwjKniOX/Q9bh5rjDQk= + + +EMAILADDRESS=email@e-certchile.cl, CN=E-CERTCHILE ROOT CA, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +HnhgGy9yEm1A8LxzPgmDCI4NCaE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2003-07-15T17:48:05Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE CA + E-CERTCHILE CA + E-CERTCHILE CA + E-CERTCHILE CA + + + +MIIDizCCAvSgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBujELMAkGA1UEBhMCQ0wxHTAbBgNVBAgUFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHFAhTYW50aWFnbzEUMBIGA1UEChQLRS1DRVJUQ0hJTEUxIDAeBgNVBAsUF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMRwwGgYDVQQDFBNFLUNFUlRDSElMRSBST09UIENBMSMwIQYJKoZIhvcNAQkBFhRlbWFpbEBlLWNlcnRjaGlsZS5jbDAeFw0wMzA3MTUyMzA2NTRaFw0xMzA3MTIwMDAwMDBaMIG1MQswCQYDVQQGEwJDTDEdMBsGA1UECBQUUmVnaW9uIE1ldHJvcG9saXRhbmExETAPBgNVBAcUCFNhbnRpYWdvMRQwEgYDVQQKFAtFLUNFUlRDSElMRTEgMB4GA1UECxQXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExFzAVBgNVBAMUDkUtQ0VSVENISUxFIENBMSMwIQYJKoZIhvcNAQkBFhRlbWFpbEBlLWNlcnRjaGlsZS5jbDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArod5YcofHufQpyF6kGsa+6LMXIKWsaL273iAHqIww9t9bZ5ZSrM6GFzr6n0dQzTPVMy3KGbmgRnTufoaMzIbw2yNSzoFv7fYBSFBySqFIw0/AupQrfbuokaUiNuts63rk5aS04gs7uEejlZHE2IWXtnAkKvgxMEXDiY1ZZKd/jUCAwEAAaOBozCBoDALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBABgNVHR8EOTA3MDWgM6Axhi9odHRwOi8vY3JsLmUtY2VydGNoaWxlLmNsL2UtY2VydGNoaWxlcm9vdGNhLmNybDAfBgNVHSMEGDAWgBQeeGAbL3ISbUDwvHM+CYMIjg0JoTAdBgNVHQ4EFgQU4Cj90uBgT7NG6xrM9QiRB3I6HQgwDQYJKoZIhvcNAQEFBQADgYEAIKEC8qYo61DXU8SZCsyTy3Iq3wDXY/pZnhsz7gcVvCxmCeQyqwETh0+00CVqxhnpT9arC5qMpzjE/R7C/LzlZRufDHFqGEu8g7j59sbICvRwWIoUywsfieRDkLJGskvLqcGv+flrx1kMzHiXKRgZH0BCUm3Xm4b2VxoiGNGW90o= + + +EMAILADDRESS=email@e-certchile.cl, CN=E-CERTCHILE CA, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +4Cj90uBgT7NG6xrM9QiRB3I6HQg= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2003-07-15T19:06:54Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + E-CERTCHILE ROOT CA + + + +MIIEbjCCA1agAwIBAgIQZAcBWH9oGJ1F67p77Cm1MjANBgkqhkiG9w0BAQUFADCBvjELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEUMBIGA1UEChMLRS1DRVJUQ0hJTEUxIDAeBgNVBAsTF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMScwJQYJKoZIhvcNAQkBFhhzY2xpZW50ZXNAZS1jZXJ0Y2hpbGUuY2wxHDAaBgNVBAMTE0UtQ0VSVENISUxFIFJPT1QgQ0EwHhcNMTEwNTI3MTg0OTE4WhcNMzAwNTI3MTg1OTEyWjCBvjELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEUMBIGA1UEChMLRS1DRVJUQ0hJTEUxIDAeBgNVBAsTF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMScwJQYJKoZIhvcNAQkBFhhzY2xpZW50ZXNAZS1jZXJ0Y2hpbGUuY2wxHDAaBgNVBAMTE0UtQ0VSVENISUxFIFJPT1QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuaMrKKg8aiH7rA0KdyoR4ZubrHkSL3uSAKN5wTzUIpFmxiw42ZbmXwWA/BIVTZ66HWfv5wJJPHI22qbpKPTW/m5j2DvWQ+gw275yaTLpw/2gmXTcBMSzqncNWVTt9lRUwHAv4SDKDviGDJ2D4ovntZma1/6qJPHJ5Z7c/92MrqZMnm1MM0Q0HiPLuiqho6gdVyHO+4YwK/pt3y+4CBePBl/virWul5KQu/fdoIAik89yLXlSPM7PvxAXdcxxDRGKVD36wtMhNdf+w3KXq4uvNncgyNGvWqZYMNX5ehPh1EtjNzaXJI3RC0dzOf5zhNxx7P7qHLgKrJQQRpYB9AmNrAgMBAAGjZjBkMAsGA1UdDwQEAwIBBjATBgkrBgEEAYI3FAIEBh4EAEMAQTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQBUPtFRDMZ/w0xPcYO/qsTwAbWaTAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQUFAAOCAQEAIz8V0JNDVoSIlXL+z1ccHQwoutdqHFMh0Rek81sv7An8ziKlPkDlMK0ELTOpdo1X/C8z6rL4nXif9dCPE5b5mlXfdAMoaI66FEK8zf2Pfg0zeNwCTGC2dHwLYzMnqOS+MjODpglYKJLi934e0hboKBx7Bc+HT6whMnX68FEzSj+EY92QvTVDVUfyDWlacy6AJ9VAlY1qLT8Q2C9lfmyBz/+7daKtlsdP9sBVGkCR/RIBQi52c1snDxSwawk4+TmMZ+6LJ5UfhulSSyGVgg3LMGYeDuyAm1dipD/gudz3xAyUcQg05ZRot9QNtuVHVXiKRe6+6ImJjvhAvGBAocXNMQ== + + +CN=E-CERTCHILE ROOT CA, EMAILADDRESS=sclientes@e-certchile.cl, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +AVD7RUQzGf8NMT3GDv6rE8AG1mk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2011-05-27T14:49:18Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE CA FIRMA ELECTRONICA AVANZADA + E-CERTCHILE CA FIRMA ELECTRONICA AVANZADA + E-CERTCHILE CA FIRMA ELECTRONICA AVANZADA + E-CERTCHILE CA FIRMA ELECTRONICA AVANZADA + + + +MIIE6DCCA9CgAwIBAgIKETeqWAAAAAAAAjANBgkqhkiG9w0BAQUFADCBvjELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEUMBIGA1UEChMLRS1DRVJUQ0hJTEUxIDAeBgNVBAsTF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMScwJQYJKoZIhvcNAQkBFhhzY2xpZW50ZXNAZS1jZXJ0Y2hpbGUuY2wxHDAaBgNVBAMTE0UtQ0VSVENISUxFIFJPT1QgQ0EwHhcNMTEwNTI3MTkwMjEzWhcNMjkwNTI3MTkxMjEzWjCB1DELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEUMBIGA1UEChMLRS1DRVJUQ0hJTEUxIDAeBgNVBAsTF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMTIwMAYDVQQDEylFLUNFUlRDSElMRSBDQSBGSVJNQSBFTEVDVFJPTklDQSBBVkFOWkFEQTEnMCUGCSqGSIb3DQEJARYYc2NsaWVudGVzQGUtY2VydGNoaWxlLmNsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6ZcG3xU+waukvrQDxtaWHPP4Jj+CEGgOPdGSjMoTjEXVrrpnXPJfyqrwGIJnAIEHblklzunMQ7gT7E59+tpny9cKqxsMWEz85mVlRht6uSKsrGcW64s+dnwJUlV/32b70kggOmIjCIvIaj1SmIaXlschSJo3IcnLBNUUAHDXflYhFxHkh449B8ySROSoaJTbb7/dQJi3Ox4q2SbHxcRU5VnfI7w05PrWuBK5sBwTNouHrXmPrLn7B6csu5PD7+qAjlFZHhIYDG50PxOE0NLcPgnfZ5fWl573pfzWpXYXC8abAzKM1nBB2DXTg9tJUTCxepD4p/8sszVpiCRih3/SJQIDAQABo4HPMIHMMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMxJ9pVYeBZ0S4dPhwIeG6V7d6wDMAsGA1UdDwQEAwIBBjAQBgkrBgEEAYI3FQEEAwIBADAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQBUPtFRDMZ/w0xPcYO/qsTwAbWaTA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmUtY2VydGNoaWxlLmNsL2VjZXJ0Y2hpbGVyb290Y2EuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQAUwZP3dYXpk/60nVLhMRrCgbYxMu5a64GJMX9IOa3hf/jzbW0zNzZ931C5JTPy5hByfAmDTwOp6JlRHcXOI0yzd77ugwVkku1iAz1rqFS+ifGMrtMspBvL+05WedCCUiVQziBV+YRJdDKxNMLlycUPuOJ4q0xlasQ+qtek4xtlBOdY/rm0UpFsF7wuyCQjVpeucYaTm4l7uP6y1EI9Zp32kHG56j5ak5d7l03VA5fEWWi6rSVnbaFUI8hj8ScCVUq43CoNguiQDApusqFKN9DITiPTPocpKzV3yys08fo7PfuFKBNFDo9yzphGo5ACA87bR1thz5r83Ncb3LCSCTVz + + +EMAILADDRESS=sclientes@e-certchile.cl, CN=E-CERTCHILE CA FIRMA ELECTRONICA AVANZADA, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +zEn2lVh4FnRLh0+HAh4bpXt3rAM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2011-05-27T15:02:13Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE CA ROOT 02 + E-CERTCHILE CA ROOT 02 + E-CERTCHILE CA ROOT 02 + E-CERTCHILE CA ROOT 02 + + + +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 + + +CN=E-CERTCHILE CA ROOT 02, EMAILADDRESS=scliente@e-certchile.cl, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +YWctPWrIz/HayDfIYy1wxrUM32c= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2018-11-15T08:13:09Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE CA FEA 02 + E-CERTCHILE CA FEA 02 + E-CERTCHILE CA FEA 02 + E-CERTCHILE CA FEA 02 + + + +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 + + +EMAILADDRESS=sclientes@e-certchile.cl, CN=E-CERTCHILE CA FEA 02, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, C=CL + + +oex0klLbKGxQIED3CWEvNVZWx5g= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-02-08T10:20:39Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-CERTCHILE CA SERVICIO FIRMA AVANZADA ONLINE + E-CERTCHILE CA SERVICIO FIRMA AVANZADA ONLINE + E-CERTCHILE CA SERVICIO FIRMA AVANZADA ONLINE + E-CERTCHILE CA SERVICIO FIRMA AVANZADA ONLINE + + + +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 + + +EMAILADDRESS=sclientes@e-certchile.cl, CN=E-CERTCHILE CA SERVICIO FIRMA AVANZADA ONLINE, OU=Autoridad Certificadora, O=E-CERTCHILE, L=Santiago, ST=Region Metropolitana, DC=domecert, C=CL + + +izffNw5WkawAXKlkQB46WKRP8/w= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2020-05-06T08:29:55Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + E-CERTCHILE TSA 02 + E-CERTCHILE TSA 02 + E-CERTCHILE TSA 02 + E-CERTCHILE TSA 02 + + + +MIIFxzCCA6+gAwIBAgITMgAAADl3KjVBlcPPdAAAAAAAOTANBgkqhkiG9w0BAQsFADCBwDELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEUMBIGA1UEChMLRS1DRVJUQ0hJTEUxIDAeBgNVBAsTF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMSYwJAYJKoZIhvcNAQkBFhdzY2xpZW50ZUBlLWNlcnRjaGlsZS5jbDEfMB0GA1UEAxMWRS1DRVJUQ0hJTEUgQ0EgUk9PVCAwMjAeFw0yMzA5MDExNDQyMTFaFw0zMDExMTUxMjIzMDdaMIG1MQswCQYDVQQGEwJDTDEdMBsGA1UECBMUUmVnaW9uIE1ldHJvcG9saXRhbmExFDASBgNVBAoTC0UtQ0VSVENISUxFMSAwHgYDVQQLExdBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYTEbMBkGA1UEAxMSRS1DRVJUQ0hJTEUgVFNBIDAyMTIwMAYJKoZIhvcNAQkBFiNzY2xpZW50ZXNAZS1jZXJ0Y2hpbGUuY2wgTD1TYW50aWFnbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMLv/6COXBG+exdv91H2AfLz3jF9n8v8cbvrGvsfdGQ85tejpcR3LejbufWXdKg4SHRplwv9a2PVyEqKGrdfJZ64MIwu33Qb/8ste2PMUAHWbbi35YFkueHljr5hft7tK8jnMj5hYCE2dD04J8gnRzkJGwA+aLsnhFFv5T37z7ouMtu2fuImvpYwqdjIWQRSc9qjn4Hh6R+kRlMLBQw3qG/3ZUFl95+QcB/l3wcC83WwbYrrmflvgnqF6PhmrvsSE/Xdsoi7RuPbomtWYKw0o7pO85qVj68umxJ6CeySRWWZEdd19qkhUubixHHVEmDr1pFCsBYgFR4Y0wqaF60BRA0CAwEAAaOBwjCBvzAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQUocds5hQQM9B766ocR6sIqsz5E8wwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUYWctPWrIz/HayDfIYy1wxrUM32cwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2NybC5lY2VydGNoaWxlLmNsL3Jvb3QuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCS4ujTmy51LvixndVu7SDqhIz6ZAwi7XqnP2CiGU4nzrgSzaU+QuqfURMyqiWvdCUnKLKjkbTBGYC4gQRkxQVfYmSA+a24MDs1/3Fe9h3NXHrt/MX5OBL7qNzzJqsDXcDVgO76qS5EU5YDljqdvJFp1XvUNSwRX3llfCfnJmpDNEDn2IoPUngwt66EWBjdBy6TlOFsPMBWqeO2LIOcew7EXdkiZisFAT/W3BJOzhaPmmExM+g48SU4PSF+3w5PShtX2y3jf0BNYk24n0R31ymKZ8+Hzh7D8uukqlWfRvQRuDuMFLtTcqX6yng1B1Uql4QTIBq9FBXPxe96B91Fqk0NIQCaTPLOoNCAX4ffyfkNB5v55x8AKStT+uWOGsbSWIWU+Pha11i3cQosaVOWIIaVF/GZranHoh0zA4vBixxaNDucuWVFP5j2woIIPwQ658xfX4V9k4D4i9nPI5NGa+6tbsKBN37OCUmYAP0nu6rfo7VYH42o7yAdv23xOCiezJILOF35/7ZEIFOvmaX+Pb6KwA7zi6dYUaf1HLVDArn/F281u11278jBlMBhoG8f8mYLIwEHNH0q/lolrlUziHbi+PJVrffjYSh6u6UFZmlGo6+gaK1Ly9GDqUeXjEvwJIPkDiIPnHeBDGAfHXhV62l6CxphOrY0zBgsT9YNJZZ7sA== + + +EMAILADDRESS="sclientes@e-certchile.cl L=Santiago", CN=E-CERTCHILE TSA 02, OU=Autoridad Certificadora, O=E-CERTCHILE, ST=Region Metropolitana, C=CL + + +ocds5hQQM9B766ocR6sIqsz5E8w= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-09-01T10:42:11Z + + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + https://www.e-certchile.cl/politicas-y-practicas + + + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + https://www.e-certchile.cl + + + + + + + + + Acepta.com S.A. + Acepta.com S.A. + Acepta.com S.A. + Acepta.com S.A. + + + Acepta.com S.A. + RUT 96919050-8 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada por R.A.E. N° 650 de 21 de octubre de 2004, en Sellado de Tiempo por R.A.E. N° 3556 de 9 de noviembre de 2016, en Biometría por R.A.E. N° 3822 de 25 de noviembre de 2016, y en Firma Móvil por R.A.E. N° 3779 de 14 de noviembre de 2017 de la Subsecretaría de Economía, Fomento y Reconstrucción. + Acepta.com S.A. + NTRCL-969190508 + Certification Service Provider accredited in Advanced Electronic Signature by R.A.E. No. 650 of October 21, 2004, in Time Stamping by R.A.E. No. 3556 of November 9, 2016, in Biometrics by R.A.E. No. 3822 of November 25, 2016, and in Mobile Signature by R.A.E. No. 3779 of November 14, 2017, of the Undersecretariat of Economy, Development and Reconstruction. + Acepta.com S.A. + RUT 96919050-8 + Provedor de serviços de certificação credenciado em Assinatura Eletrônica Avançada pela R.A.E. N.º 650 de 21 de outubro de 2004, em Time Stamping por R.A.E. N.º 3556 de 9 de novembro de 2016, em Biometria por R.A.E. N.º 3822 de 25 de novembro de 2016, e em Mobile Signature por R.A.E. Nº 3.779, de 14 de novembro de 2017, da Subsecretaria de Economia, Desenvolvimento e Reconstrução. + Acepta.com S.A. + RUT 96919050-8 + Proveedor de Servicios de Certificación ojeacreditáva Firma Electrónica Avanzada-pe R.A.E. No 650 21 de octubre 2004-pe guare, Sellado de Tiempo-pe, ojapova’ekue R.A.E. No 3556 ára 9 jasyporundy ary 2016-pe, Biometría-pe ojapova’ekue R.A.E. No 3822 25 de noviembre 2016-pe, ha Firma Móvil-pe ojapova’ekue R.A.E. No 3779 14 de noviembre 2017, Subsecretaría de Economía, Desarrollo y Reconstrucción-pe. + + + + + Avenida Providencia 1760, piso 8, Providencia + Santiago + Región Metropolitana + 7500498 + CL + + + Providencia Avenue 1760, 8th floor, Providencia + Santiago + Región Metropolitana + 7500498 + CL + + + Providencia Avenue 1760, 8º andar, Providencia + Santiago + Región Metropolitana + 7500498 + CL + + + Avenida Providencia 1760, 8o piso, Providencia-pe + Santiago + Región Metropolitana + 7500498 + CL + + + + https://acepta.com/ + mailto:soporte-acp@sovos.com + https://acepta.com/ + mailto:soporte-acp@sovos.com + https://acepta.com/ + mailto:soporte-acp@sovos.com + https://acepta.com/ + mailto:soporte-acp@sovos.com + + + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora Raiz - G3 + Acepta.com Autoridad Certificadora Raiz - G3 + Acepta.com Autoridad Certificadora Raiz - G3 + Acepta.com Autoridad Certificadora Raiz - G3 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora Raiz - G3, O=Acepta.com S.A., C=CL + + +7GZh1C64hEPFjKh6zB7DlkJzX6U= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2014-06-19T10:36:05Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G3 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G3 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G3 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G3 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G3, O=Acepta.com S.A., C=CL + + +v88W2eJDeMiXz0UFQbjZkDzYu6s= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2014-06-19T10:36:05Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora Raiz - G4 + Acepta.com Autoridad Certificadora Raiz - G4 + Acepta.com Autoridad Certificadora Raiz - G4 + Acepta.com Autoridad Certificadora Raiz - G4 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora Raiz - G4, O=Acepta.com S.A., C=CL + + +FST8h38HxLwpsxJ0ua5/5/pqHZU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-21T10:14:59Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G4 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G4 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G4 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G4 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - G4, O=Acepta.com S.A., C=CL + + +LfZYBSF1OeJMNXM+pzKk1CSXsWU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-21T10:14:59Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora Raiz - V2 + Acepta.com Autoridad Certificadora Raiz - V2 + Acepta.com Autoridad Certificadora Raiz - V2 + Acepta.com Autoridad Certificadora Raiz - V2 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora Raiz - V2, O=Acepta.com S.A., C=CL + + +4xS8sL2nd6qCCRZFWHpmqGacBCk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2010-08-09T16:45:29Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - V2 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - V2 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - V2 + Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - V2 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad Certificadora de Firma Electronica Avanzada - V2, O=Acepta.com S.A., C=CL + + +ycOIsoaGX7TaJ9BVrew1b7mZwjU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2010-08-09T16:45:29Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Acepta.com Autoridad de Sellado de Tiempo - G4 + Acepta.com Autoridad de Sellado de Tiempo - G4 + Acepta.com Autoridad de Sellado de Tiempo - G4 + Acepta.com Autoridad de Sellado de Tiempo - G4 + + + +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 + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Autoridad de Sellado de Tiempo - G4, O=Acepta.com S.A., C=CL + + +GFnpqIKmqeS3z6imDcJlnPrSX68= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2017-09-05T07:34:06Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Acepta.com Emisor Sello de Tiempo - G4 + Acepta.com Emisor Sello de Tiempo - G4 + Acepta.com Emisor Sello de Tiempo - G4 + Acepta.com Emisor Sello de Tiempo - G4 + + + +MIIGXDCCBUSgAwIBAgICAMkwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNVBAYTAkNMMRgwFgYDVQQKEw9BY2VwdGEuY29tIFMuQS4xNzA1BgNVBAMTLkFjZXB0YS5jb20gQXV0b3JpZGFkIGRlIFNlbGxhZG8gZGUgVGllbXBvIC0gRzQxHjAcBgkqhkiG9w0BCQEWD2luZm9AYWNlcHRhLmNvbTETMBEGA1UEBRMKOTY5MTkwNTAtODAeFw0xNzA5MDUxMTM0MDlaFw0zNjA2MjExNDE0NTlaMIGNMQswCQYDVQQGEwJDTDEYMBYGA1UEChMPQWNlcHRhLmNvbSBTLkEuMS8wLQYDVQQDEyZBY2VwdGEuY29tIEVtaXNvciBTZWxsbyBkZSBUaWVtcG8gLSBHNDEeMBwGCSqGSIb3DQEJARYPaW5mb0BhY2VwdGEuY29tMRMwEQYDVQQFEwo5NjkxOTA1MC04MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuVB7YfOZGw0yYbaUOgVRV9ZU0ajnsGKLnYxXMxx99ERsn16hyiTveMaeAYhiEDRk35fQqqoQMvzNUQk0kg/k8xJjrPyvc2NLd6Oh0nOiRpSL0aPOwpErmp2fR88KNV9GQcTBwFmj+U5+1HfhQZ72pMNNVXX9RtPJqJVsc9DUsbAgZEjm7Ch23uGvBUMLonMnC2stdLsiSXCUtp68MLD2I3V2f5iN9+M5SzbZHGXqPhmoRs0TpjlizatnNSH3m+A/dVKvgov3brX7cYd7Ak6nq7twAYaqa0sc8MfHkAANCv568G1xBQG5LTLPZMuDTxSjL80l23yCBlIU1nqI0LyljwIDAQABo4ICujCCArYwHwYDVR0jBBgwFoAUGFnpqIKmqeS3z6imDcJlnPrSX68wHQYDVR0OBBYEFEi9b+wgYCB5e1FjC6dJxb17PK52MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMIIBDgYDVR0gBIIBBTCCAQEwgf4GCSsGAQQBtWuBSDCB8DA0BggrBgEFBQcCARYoaHR0cHM6Ly9hY2c0LmFjZXB0YS5jb20vVFNBLUNQLUFjZXB0YWNvbTCBtwYIKwYBBQUHAgIwgaowFhYPQWNlcHRhLmNvbSBTLkEuMAMCAQMagY9DZXJ0aWZpY2FkbyBlbWlzb3IgZGUgc2VsbG8gZGUgdGllbXBvLiBSZXNvbHVjaW9uIGV4ZW50YSAzNTU2IGRlbCAwOSBkZSBub3ZpZW1icmUgZGUgMjAxNiwgU3Vic2VjcmV0YXJpYSBkZSBFY29ub21pYSwgRm9tZW50byB5IFJlY29uc3RydWNjaW9uLjBaBgNVHRIEUzBRoBgGCCsGAQQBwQECoAwWCjk2OTE5MDUwLTigJAYIKwYBBQUHCAOgGDAWDAo5NjkxOTA1MC04BggrBgEEAcEBAoEPaW5mb0BhY2VwdGEuY29tMFoGA1UdEQRTMFGgGAYIKwYBBAHBAQGgDBYKOTY5MTkwNTAtOKAkBggrBgEFBQcIA6AYMBYMCjk2OTE5MDUwLTgGCCsGAQQBwQECgQ9pbmZvQGFjZXB0YS5jb20wTAYIKwYBBQUHAQEEQDA+MDwGCCsGAQUFBzABhjBodHRwczovL2FjZzQuYWNlcHRhLmNvbS9hY2c0L29jc3AvU2VsbG9UaWVtcG8tRzQwRAYDVR0fBD0wOzA5oDegNYYzaHR0cHM6Ly9hY2c0LmFjZXB0YS5jb20vYWNnNC9jcmwvU2VsbG9UaWVtcG8tRzQuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQBh+KUUyCH+yBP5voOVzV9FdaMGqHS+c/h1XQ2SU7t2W3BSBfZ3XMN5WJyOgUMSPjdxjhO7VbhSwN6DLibo+RrDe8cJ6cPxYOn4exMIkSVlhKR4tyr4EDLbLUnJfknB595ZLHuyYfPfiUMIndInkqhmEWHGgIciLKa1m0xdhAa6MLP3m94ANZOCTNsqJF0JIflIOhKZStdrx1mXF3pgrWFe1G4yq/fJC1HV5j2eEAOw4foPvn06Ytk8vhTY0a9V1FmCIg6sKDzGiLjqTz4wvU+hWD5OysQoSPEoY+nbZti950QVU2jW4zaItWGNGBH8Tl71VVbkjtBeCCFdZSViJdQY + + +SERIALNUMBER=96919050-8, EMAILADDRESS=info@acepta.com, CN=Acepta.com Emisor Sello de Tiempo - G4, O=Acepta.com S.A., C=CL + + +SL1v7CBgIHl7UWMLp0nFvXs8rnY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2017-09-05T07:34:09Z + + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + https://sovos.com/cl/politicas-y-practicas/ + + + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + https://acepta.com/ + + + + + + + + + E-Sign S.A. + E-Sign S.A. + E-Sign S.A. + E-Sign S.A. + + + E-Sign S.A. + RUT 99551740-K + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada por R.A.E. N° 330 de 1 de junio de 2005, en Sellado de Tiempo por R.A.E. N° 1367 de 16 de mayo de 2016, en Biometría por R.A.E. N° 3557 de 9 de noviembre de 2016, y en Firma Móvil por R.A.E. N° 3926 de 7 de diciembre de 2016 de la Subsecretaría de Economía y Empresas de Menor Tamaño. + E-Sign S.A. + NTRCL-99551740K + Certification Service Provider accredited in Advanced Electronic Signature by R.A.E. No. 330 of June 1, 2005, in Time Stamping by R.A.E. No. 1367 of May 16, 2016, in Biometrics by R.A.E. No. 3557 of November 9, 2016, and in Mobile Signature by R.A.E. No. 3926 of December 7, 2016, from the Undersecretariat of Economy and Small Businesses. + E-Sign S.A. + RUT 99551740-K + Prestador de Serviços de Certificação acreditado em Assinatura Eletrônica Avançada pela R.A.E. Nº 330 de 1 de junho de 2005, em Carimbo de Tempo pela R.A.E. Nº 1367 de 16 de maio de 2016, em Biometria pela R.A.E. Nº 3557 de 9 de novembro de 2016, e em Assinatura Móvel pela R.A.E. Nº 3926 de 7 de dezembro de 2016 da Subsecretaria de Economia e Empresas de Pequeno Porte. + E-Sign S.A. + RUT 99551740-K + Proveedor de Servicios de Certificación ojeacreditáva Firma Electrónica Avanzada-pe R.A.E. N° 330 1 de junio 2005-pe guare, Sellado de Tiempo-pe, ojapova’ekue R.A.E. No 1367 16 jasypokõi 2016-pe guare, Biometría-pe ojapova’ekue R.A.E. No 3557 9 de noviembre 2016-pe ha Firma Móvil-pe ojapova’ekue R.A.E. No 3926 7 de diciembre 2016 Subsecretario de Economía ha Empresas Pequeñas. + + + + + Avenida Apoquindo 6550, oficina 501, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + Apoquindo Avenue 6550, office 501, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + Avenida Apoquindo 6550, escritório 501, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + Avenida Apoquindo 6550, oficina 501, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + + https://www.esign-la.com/ + mailto:soporte@esign.cl + https://www.esign-la.com/ + mailto:soporte@esign.cl + https://www.esign-la.com/ + mailto:soporte@esign.cl + https://www.esign-la.com/ + mailto:soporte@esign.cl + + + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Esign CA Class 3 Root CA + Esign CA Class 3 Root CA + Esign CA Class 3 Root CA + Esign CA Class 3 Root CA + + + +MIIDyDCCArCgAwIBAgIICIKJxK2VZFswDQYJKoZIhvcNAQELBQAwgYExCzAJBgNVBAYTAkNMMRQwEgYDVQQKDAtFLVNpZ24gUy5BLjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1sYS5jb20vYWN1ZXJkb3RlcmNlcm9zMSEwHwYDVQQDDBhFc2lnbiBDQSBDbGFzcyAzIFJvb3QgQ0EwHhcNMTMwOTEyMjMzMDE5WhcNMzMwOTEyMjMzMDE5WjCBgTELMAkGA1UEBhMCQ0wxFDASBgNVBAoMC0UtU2lnbiBTLkEuMTkwNwYDVQQLDDBUZXJtcyBvZiB1c2UgYXQgd3d3LmVzaWduLWxhLmNvbS9hY3VlcmRvdGVyY2Vyb3MxITAfBgNVBAMMGEVzaWduIENBIENsYXNzIDMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIQeNIhv6C28fWJF9FqCBCk2oZin7ngHVnXzVBt1XgQpC8F93xO/AiCs9JdqC82JzLg3cquygtfjxxHpTVyDaSTVxfJ+V299SyaEeMcvk6Kt13nUomE7rmjpM7xLImuC8vAqaN8gsey7fHsSsTTOQ69Bs/UOHVIE8TelN/wLh8uymi6RHxrqEXSts+AtPTUbke8R/A58w5xY/6fj3RvQQDmBmVLmHuCpF91c+5WH2JlX60PlNbjeyJJfbT0mlsLCBEOtgRaH/4mK1MI9gTNpyVC40DVjz2OLpB6xnvK2h0X09BL4eMuUwOsiArnhYyNDQFU/HNrlEIogEgSgvwIThvMCAwEAAaNCMEAwHQYDVR0OBBYEFCPI8b0hUg7B8cv40aHUHJxAStLNMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4IBAQB0E5ZK+xPsySksUP5noXTbzKaGwxw7SGQwrpJndZ2ZaD3aeSrub5T9bwe11PblFVjz+dSdKrhSqTE9bVqhro8bAqaXHLYIXJ5uYKgjxREbhI5cyaq/4DbfDBQgrTZozMQ1jvhlX206wrrJnbWNGrBsHBuhtu7ZYs6/50mLQOl9jCXxY2u4XgezvHa5NbW0oSSODuwio9DhkU9NsICWzZYMhPvsFtRnUAUb0AdhRWgs7qxBJBezEZojZwr8ki7xirvcgsXGH5ZyeOLim2WMI0obQM29apxVDKZ7NlQY7TsdTKNm2113Ry+KaxiCvwbnSOzGR6GeNd9wr9vC4XKryECP + + +CN=Esign CA Class 3 Root CA, OU=Terms of use at www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +I8jxvSFSDsHxy/jRodQcnEBK0s0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2013-09-12T19:30:19Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-Sign Class 3 Firma Electronica Avanzada CA + E-Sign Class 3 Firma Electronica Avanzada CA + E-Sign Class 3 Firma Electronica Avanzada CA + E-Sign Class 3 Firma Electronica Avanzada CA + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Firma Electronica Avanzada CA, OU=Terms of use at www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +wIraKmVQ9OMYltpFhFe+R4F0gnQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2018-03-28T15:00:37Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + ESign Class 3 Firma Electronica Avanzada para Estado de Chile CA + ESign Class 3 Firma Electronica Avanzada para Estado de Chile CA + ESign Class 3 Firma Electronica Avanzada para Estado de Chile CA + ESign Class 3 Firma Electronica Avanzada para Estado de Chile CA + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=ESign Class 3 Firma Electronica Avanzada para Estado de Chile CA, OU=Terminos de uso en www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +/AjiPTb3VyPSiOMEcLFcXeq+c5I= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-27T11:46:05Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Firma Electronica Avanzada Biometrica CA, OU=Terms of use at www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +F005fLfnt+yShcwl+mvQ7hJtbaI= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-27T10:58:43Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-Sign Class 3 Firma Electronica Avanzada Movil CA + E-Sign Class 3 Firma Electronica Avanzada Movil CA + E-Sign Class 3 Firma Electronica Avanzada Movil CA + E-Sign Class 3 Firma Electronica Avanzada Movil CA + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Firma Electronica Avanzada Movil CA, OU=Terms of use at www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +lkoLtsP236oKL30XuIDn5SHLKn0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-01-27T11:30:18Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + E-Sign Class 3 Time Stamping Authority CA + E-Sign Class 3 Time Stamping Authority CA + E-Sign Class 3 Time Stamping Authority CA + E-Sign Class 3 Time Stamping Authority CA + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Time Stamping Authority CA, OU=Terms of use at www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +9RwV8idNsbrWMZP1OP79MBtwq20= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2018-03-28T15:04:02Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-Sign Class 3 Firma Electronica Avanzada CA - G2 + E-Sign Class 3 Firma Electronica Avanzada CA - G2 + E-Sign Class 3 Firma Electronica Avanzada CA - G2 + E-Sign Class 3 Firma Electronica Avanzada CA - G2 + + + +MIIGkTCCBXmgAwIBAgIITl3uQOmKEUgwDQYJKoZIhvcNAQELBQAwgYExCzAJBgNVBAYTAkNMMRQwEgYDVQQKDAtFLVNpZ24gUy5BLjE5MDcGA1UECwwwVGVybXMgb2YgdXNlIGF0IHd3dy5lc2lnbi1sYS5jb20vYWN1ZXJkb3RlcmNlcm9zMSEwHwYDVQQDDBhFc2lnbiBDQSBDbGFzcyAzIFJvb3QgQ0EwHhcNMjUwNTE0MTUyODM5WhcNMzMwOTEyMjMzMDE5WjCB1jELMAkGA1UEBhMCQ0wxFDASBgNVBAoMC0UtU2lnbiBTLkEuMTwwOgYDVQQLDDNUZXJtaW5vcyBkZSB1c28gZW4gd3d3LmVzaWduLWxhLmNvbS9hY3VlcmRvdGVyY2Vyb3MxEzARBgNVBAUTCjk5NTUxNzQwLUsxOjA4BgNVBAMMMUUtU2lnbiBDbGFzcyAzIEZpcm1hIEVsZWN0cm9uaWNhIEF2YW56YWRhIENBIC0gRzIxIjAgBgkqhkiG9w0BCQEWE2Utc2lnbkBlc2lnbi1sYS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzR/mWpt6QW1QDg+/V86ok5C4ED4B5I/bNZl5c1KpITxiTWmhExRnsH0qg+PM8alJCXaTM64Y0A8rtXNZAuowMSMupYjChEttm1zo3CaYQh+RKxmIhu7hDdBVR8K85vTvyL1w8FFs047eGaVPCXRgega7tKT6re169Dj3Pl/OvZFSLszVUQy3SJsWvPq2rxBuo+rRKwVX014cA4qJjwUx4tyPh01Xem/0QyLE/edM/IOGO1PyoKPNwupzLV0ZAZRXTHed+TEFmkm6HszTU/LO0H0hkO/UEX3iGxqZktCz/BCX9TaWr0Qv/8+Hbm2qiIy9buGxBoMeSt6Fwx8kuNAsn/UUDOVrY4gmWPIG9GpigtLr5/EGFNP2E07xpLENEkTqqn7kMDYcjMDIzXM3N4vUgCgKAU4d35wIe4erJfoHItFwJMWAifG3lowCUEco/SEXTBprrdK/vGgA1ER5KexV7C/3+IRXBxySIG8yyiDZ8CGKnLVMKI66IoCLtRQTQ4D3amoX8lsMlQyweFr/9zkNh44+C7xtAgo93xsoK8fWqTYAYNk42ObcswdjQoD5xGQJoYKFNJ2+crpz+jSCARRVjXp29VTbK09LblZEfBYQmhI/vJTpQgUClW6I/1Fa9oclWWtx6ZScyEdvGm5rXiSoYz107IBZIIuDGi3AG2sYD6QIDAQABo4IBtDCCAbAwagYIKwYBBQUHAQEEXjBcMDQGCCsGAQUFBzAChihodHRwOi8vcGtpLmVzaWduLWxhLmNvbS9jYWNlcnRzL3JjYTMuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5lc2lnbi1sYS5jb20wHQYDVR0OBBYEFPU1oQZOsHICCN7vIl7L5OhPMkpUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUI8jxvSFSDsHxy/jRodQcnEBK0s0wgaYGA1UdIASBnjCBmzCBmAYMKwYBBAGCymoBBAEDMIGHMCcGCCsGAQUFBwIBFhtodHRwOi8vd3d3LmVzaWduLWxhLmNvbS9jcHMwXAYIKwYBBQUHAgIwUB5OAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBlAHMAaQBnAG4ALQBsAGEALgBjAG8AbQAvAGEAYwB1AGUAcgBkAG8AdABlAHIAYwBlAHIAbwBzMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9wa2kuZXNpZ24tbGEuY29tL2NybC9yY2EzLmNybDAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAILGPixv0ck9H0E+yT6bRbxO2UDC6Y4Fott79EM2krDYXekJCx38LprR6S3BiZFsW5wZ2MrVnrcjMpR/lKVVQoP/ddb0hi/Tv+ae4ftA9S97ICVfFe8c2+oeI6dzcZU20kK4tzqWQ5YwlFCpGXTkQoHDUMn9sYEVQBLTJDx9pb12hMPogcr4IVySPOQu/af7QkU49gynMOcqcYSuUIYCVC6jpTjS2gH1B1kC6cVReG9bTs9zaDxNNkYol4ZSoOaokWRPqwShmOXky64U6bscPdxeDyWS5sgQy/fShxpKMc1Kv+9QKCxSA5pDoRHqWqsiozQ1FjkqizTnzQUFiztjO2g= + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Firma Electronica Avanzada CA - G2, SERIALNUMBER=99551740-K, OU=Terminos de uso en www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +9TWhBk6wcgII3u8iXsvk6E8ySlQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2025-05-14T11:28:39Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA - G2 + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA - G2 + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA - G2 + E-Sign Class 3 Firma Electronica Avanzada Biometrica CA - G2 + + + +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 + + +EMAILADDRESS=e-sign@esign-la.com, CN=E-Sign Class 3 Firma Electronica Avanzada Biometrica CA - G2, SERIALNUMBER=99551740-K, OU=Terminos de uso en www.esign-la.com/acuerdoterceros, O=E-Sign S.A., C=CL + + +B2P84221IVoSe5v/NKwdZwZElpA= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2025-05-14T11:31:34Z + + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + https://www.esign-la.com/cps/ + + + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + https://www.esign-la.com/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + CertiNet S.A. + CertiNet S.A. + CertiNet S.A. + CertiNet S.A. + + + CertiNet S.A. + RUT 99532830-5 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada mediante la Resolución Exenta N.º 380 del 21 de julio de 2006, y en Sellado de Tiempo mediante la Resolución Exenta N.º 1684 del 5 de junio de 2019, ambas emitidas por la Subsecretaría de Economía y Empresas de Menor Tamaño. + CertiNet S.A. + NTRCL-995328305 + Certification Service Provider accredited in Advanced Electronic Signature by Exempt Resolution No. 380 dated July 21, 2006, and in Time Stamping by Exempt Resolution No. 1684 dated June 5, 2019, both issued by the Undersecretariat of Economy and Small Enterprises. + CertiNet S.A. + RUT 99532830-5 + Prestador de Serviços de Certificação acreditado em Assinatura Eletrônica Avançada pela Resolução Exenta nº 380 de 21 de julho de 2006, e em Carimbo do Tempo pela Resolução Exenta nº 1684 de 5 de junho de 2019, ambas emitidas pela Subsecretaria de Economia e Pequenas Empresas. + CertiNet S.A. + RUT 99532830-5 + Proveedor de Servicios de Certificación oacreditáva Firma Electrónica Avanzada Resolución Exenta No 380 rupive 21 de julio 2006, ha Estampación de Tiempo Resolución Exenta No 1684 5 de junio 2019 rupive, mokõivéva ome'ëva Subsecretaría de Economía ha Pequeña Empresa. + + + + + Avenida Huérfanos 1052, piso 12, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + 1052 Huérfanos Avenue, 12th floor, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Avenida Huérfanos, 1052, 12º andar, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + 1052 Avenida Huérfanos, 12o piso, Santiago-pe + Santiago + Región Metropolitana + 8320000 + CL + + + + https://www.certinet.cl + mailto:soporte@certinet.cl + https://www.certinet.cl + mailto:soporte@certinet.cl + https://www.certinet.cl + mailto:soporte@certinet.cl + https://www.certinet.cl + mailto:soporte@certinet.cl + + + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + VeriSign Class 2 Public Primary Certification Authority - G3 + VeriSign Class 2 Public Primary Certification Authority - G3 + VeriSign Class 2 Public Primary Certification Authority - G3 + VeriSign Class 2 Public Primary Certification Authority - G3 + + + +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKUsQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q + + +CN=VeriSign Class 2 Public Primary Certification Authority - G3, OU="(c) 1999 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US + + ++6M7bsE36VYF2kkWIKOeCqFih8c= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 1999-09-30T20:00:00Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + CertiSur Class 2 CA - G3 + CertiSur Class 2 CA - G3 + CertiSur Class 2 CA - G3 + CertiSur Class 2 CA - G3 + + + +MIIFYDCCBEigAwIBAgIQAsGuxj2AxcWkuCHrNM0t/zANBgkqhkiG9w0BAQsFADCByjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMTk5OSBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzMwHhcNMTUwODE4MDAwMDAwWhcNMjUwODE3MjM1OTU5WjBcMRYwFAYDVQQKEw1DZXJ0aVN1ciBTLkEuMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMSEwHwYDVQQDExhDZXJ0aVN1ciBDbGFzcyAyIENBIC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDe8BidNYO+DWekeA2MkRizK5f49n2OMGhNJmrs+UGA+rSb9uMj+kfneGoOQW1/D0MyGK2eJaf0FSWx9ToxKaj49ZD0aZF19IFmbV5OZONiCASPbDx530xUBwBXoizRXpKAtGxgjeW0Y9ELnFNyLwXNpUks5vgUHk0ZYf2yJtDqEHh++KJKKBLgh1aZlSohgFxzFjqlj0etqOVkLV1/RwnaW/g5s0m7hEvcBVDSmOjRpSrVtd5U7XeKxoUFx7m9zR3feDots37b0dXRH+PxTqqXn5tNYhHoMX0PX3jEtmVIHfx5XOToB251IKAfPHjMs9xtrG/QJY2wRRqeqpqQXxqhAgMBAAGjggGtMIIBqTAPBgNVHRMBAf8EBTADAQH/MBgGA1UdIAQRMA8wDQYLYIZIAYb4RQEHFwIwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL3Muc3ltY2IuY29tL3BjYTItZzMuY3JsMA4GA1UdDwEB/wQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRQWZmU0NDMi0yMDQ4LTEtNzEwHQYDVR0OBBYEFOYB4Us3dtaiDnbznXLMlvfLHajOMIHwBgNVHSMEgegwgeWhgdCkgc0wgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczghBhcMtJjF+YRSnnsKbZUFt6MA0GCSqGSIb3DQEBCwUAA4IBAQBzd4BRctJGfaHTdauoZKGqna8jQeH0A2YPRWjWV/Rzhyw+KzDNfSA2g9BJOrx1EmoeefFlqSeFq10GZlDKUgTEH3CCio9oVIpGf0mOiQqcV9QSpqs7QHzGOwrW9r9xYQSps31vuiR13YSjochnEKomBREN0bC07OztErduQR0oPN93ZWddCYFOem6M3mem9DZ5rTsCVwLJNAk2dbC9RFb2nCpg9P6G7S40I07ZwnPGZ/84eUkLM0bmrUCjDrj2Uw9dA42L4MgpjjkxB6Hci9um22B/TIPPajKTwoQBDHLPraSq9CD4iqPl0FzaI69uDLOqYyGI480QVf7zZl0xhr5K + + +CN=CertiSur Class 2 CA - G3, OU=Symantec Trust Network, O=CertiSur S.A. + + +5gHhSzd21qIOdvOdcsyW98sdqM4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2015-08-17T20:00:00Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + CertiNet S.A. Firma Electronica Avanzada - G2 + CertiNet S.A. Firma Electronica Avanzada - G2 + CertiNet S.A. Firma Electronica Avanzada - G2 + CertiNet S.A. Firma Electronica Avanzada - G2 + + + +MIIFTTCCBDWgAwIBAgIQAqaUb1phzOAmHYjKq3s0oTANBgkqhkiG9w0BAQsFADBcMRYwFAYDVQQKEw1DZXJ0aVN1ciBTLkEuMR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMSEwHwYDVQQDExhDZXJ0aVN1ciBDbGFzcyAyIENBIC0gRzMwHhcNMTUwODE4MDAwMDAwWhcNMTkwOTE1MjM1OTU5WjCB2jELMAkGA1UEBhMCQ0wxFjAUBgNVBAoTDUNlcnRpTmV0IFMuQS4xHzAdBgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxNTAzBgNVBAsTLENsYXNzIDIgTWFuYWdlZCBQS0kgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBMTYwNAYDVQQDEy1DZXJ0aU5ldCBTLkEuIEZpcm1hIEVsZWN0cm9uaWNhIEF2YW56YWRhIC0gRzIxIzAhBgkqhkiG9w0BCQEWFGNlcnRpbmV0QGNlcnRpbmV0LmNsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzA68G0XSQOfyZEmzln7Ih8rq+4qq4K52n18mtQFH7Blbsd2WhxONQZg9H7Eek5o0rXnnBSQ3mcLY8bC1q3bL+r4Z3yJEKtf6mw14R7LKrU5piJs1Op0iAU64JdUIh9qxr/Dfpr9sNeWYCBvGYV2c5PQDxMDbZ1/YPtNs+RspTIOujLvnM8DTBC5SgP+vi+K9NkEk7O7Zo8l2Mx8/n/hxzYntHF+b+djI3NgTV11419XcpeF4f+p+ayTdO941nvcTMnfeKdS/8S14Ethu/0EkRvVd7spG7BnlFYvi9Qx3l+ElMj+oHgYx0zGB4+okNuCNd4KVIYeVW8RrRYZHg1+e4QIDAQABo4IBijCCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADCBggYDVR0gBHsweTB3BgtghkgBhvhFAQcXAjBoMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5jZXJ0aXN1ci5jb20vY3BzMDwGCCsGAQUFBwICMDAaLmh0dHBzOi8vd3d3LmNlcnRpc3VyLmNvbS9ycGEtY2VydGluZXQtYXZhbnphZGEwDgYDVR0PAQH/BAQDAgEGMEMGA1UdEQQ8MDqgGAYIKwYBBAHBAQGgDBYKOTk1MzI4MzAtNaQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTEtNzUzMB0GA1UdDgQWBBQexfzrmcJu/t0ZvmPCBEJbMDVHgDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vcGtpLWNybC5zeW1hdXRoLmNvbS9vZmZsaW5lY2EvQ2VydGlTdXJTQUNlcnRpU3VyQ2xhc3MyQ0FHMy5jcmwwHwYDVR0jBBgwFoAU5gHhSzd21qIOdvOdcsyW98sdqM4wDQYJKoZIhvcNAQELBQADggEBAL9OT+wGgYWq/tEH/6AR0zqM03IJVwEn09YtEQed7UVjIt505amdFEsliK/3A/OdD0gdLByBsqlV/sdop8lMRVfWGfklzsIE2LjvTEa2hYoYLNRigqUFGOqDGeLkNX9C//yUPAoUk9jc9VejQlvbfbvhVvZpZIwJagzaAZgGm8r5/wk1gQ/Tek7tdmaV/RARflpgH42cZc6l4nGueqnWvrn2fKugrv6DGEvKb3liSwV8+QwzRi623s9ItDObaspNbfyPaafZPXShaUjx8WvPv9XriSrzz4kjFMUWWFOSzP7/bAd4qnHWmxNlpN+nKzseKJ2uZil6L5TdKZaBq7ZWV4w= + + +EMAILADDRESS=certinet@certinet.cl, CN=CertiNet S.A. Firma Electronica Avanzada - G2, OU=Class 2 Managed PKI Individual Subscriber CA, OU=Symantec Trust Network, O=CertiNet S.A., C=CL + + +HsX865nCbv7dGb5jwgRCWzA1R4A= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2015-08-17T20:00:00Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Autoridad Certificadora ADSS Raiz de Certinet S A + Autoridad Certificadora ADSS Raiz de Certinet S A + Autoridad Certificadora ADSS Raiz de Certinet S A + Autoridad Certificadora ADSS Raiz de Certinet S A + + + +MIIEAjCCAuqgAwIBAgIUIOLStd/nYiJmrRGXH40yz7cpZZkwDQYJKoZIhvcNAQELBQAwgakxCzAJBgNVBAYTAkNMMSYwJAYJKoZIhvcNAQkBFhdjYS1jZXJ0aW5ldEBjZXJ0aW5ldC5jbDEWMBQGA1UEChMNQ2VydGlOZXQgUy5BLjEeMBwGA1UECxMVTVBLSSBDQSBBRFNTIENlcnRpTmV0MTowOAYDVQQDEzFBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYSBBRFNTIFJhaXogZGUgQ2VydGluZXQgUyBBMB4XDTE5MDYxNzE4NDg0NloXDTQ0MDYxNzE4NDg0NlowgakxCzAJBgNVBAYTAkNMMSYwJAYJKoZIhvcNAQkBFhdjYS1jZXJ0aW5ldEBjZXJ0aW5ldC5jbDEWMBQGA1UEChMNQ2VydGlOZXQgUy5BLjEeMBwGA1UECxMVTVBLSSBDQSBBRFNTIENlcnRpTmV0MTowOAYDVQQDEzFBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYSBBRFNTIFJhaXogZGUgQ2VydGluZXQgUyBBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3aXC2zEP9eGPHP+PJoJhlAyvIGjBpic6w1WoFnwXt9hBmo3GzO4V/t5zCUO/LhMY0ExOfe5glioKAskIjsuBV59XLDMDIu9Qo4kGmczj6v8l9yPALgQcjmugFDp7FBZgVfKQavBaoZRtBrQ+SfCYdM9hoVarIeQts34oJbsjJ60O0DOVUnibFLrMp2wYShDRjaykzARL7pwxmhHxzoIJh00DUjsC5AvAdhq4N3JVSL1c+Zuqtxc0Ne4mqbM3gDv33s1Q1G/B0AnZ7UQJqPpd9gZSDqPQEZQmGjyJzxj7e2+J/8H+dudQt2Vm5uSEVO1YcrUJ9vW0brwqw55ImmSR1QIDAQABoyAwHjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAo88aO/vgxv1rlzxVmrqqxEJmGv7l2W0hmcOh/CpGL9rp9s04dB89tHDSnj8dj05DeQzyLO+4Wv4MZYgmFdRi+BiA2b6xO+xR6LqiIPLjdxB2P+1GCrGmJIyKkvvM2OK+cMZfDBC9/y3o3shyrMlb4kTXxCOhYfmeDyBl1/MIKeTonbSAICjYayeqPtjo5hdR3ba/WzlAu2pB0ZeNwmKOkS/1hK5LqrMl7Gi1O0ffP9EfniO8jChimJAstLQHO+uxvLr7M4na9Tg8yJDkctKE4R8N4UOpURTtI4atweqn+IBTwNrLKt3MBR64MFKuMr1ALIeyjvacdeCIs+TVY6Dc1w== + + +CN=Autoridad Certificadora ADSS Raiz de Certinet S A, OU=MPKI CA ADSS CertiNet, O=CertiNet S.A., EMAILADDRESS=ca-certinet@certinet.cl, C=CL + + +/e4oXTzXLl8vKl0Usdui7htLzG0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-17T14:48:46Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Autoridad Certificadora Intermedia de CertiNet S A + Autoridad Certificadora Intermedia de CertiNet S A + Autoridad Certificadora Intermedia de CertiNet S A + Autoridad Certificadora Intermedia de CertiNet S A + + + +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 + + +CN=Autoridad Certificadora Intermedia de CertiNet S A, OU=MPKI CA ADSS CertiNet, O=CertiNet S.A., EMAILADDRESS=ca-certinet@certinet.cl, C=CL + + +ZHPT3iFji9XFjcYWadl8/AcjjPw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-17T14:52:41Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Certinet S A Firma Electronica Avanzada + Certinet S A Firma Electronica Avanzada + Certinet S A Firma Electronica Avanzada + Certinet S A Firma Electronica Avanzada + + + +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 + + +CN="Certinet S A Firma Electronica Avanzada ", OU=MPKI CA ADSS CertiNet, OU=Firma Electrónica, O=CertiNet S.A., EMAILADDRESS=ca-certinet@certinet.cl, C=CL + + +asVVD0+8iRf14WWYUQGaHuMeIhk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-17T15:13:23Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Autoridad Certificadora TSA02 de Certinet S A + Autoridad Certificadora TSA02 de Certinet S A + Autoridad Certificadora TSA02 de Certinet S A + Autoridad Certificadora TSA02 de Certinet S A + + + +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 + + +CN=Autoridad Certificadora TSA02 de Certinet S A, OU=MPKI CA ADSS CertiNet, O=CertiNet S.A., EMAILADDRESS=ca-certinet@certinet.cl, C=CL + + +jDV1JjydCikVej9+8VLU8IYVUlY= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-28T10:49:10Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Autoridad Certificadora TSA03 de Certinet S A + Autoridad Certificadora TSA03 de Certinet S A + Autoridad Certificadora TSA03 de Certinet S A + Autoridad Certificadora TSA03 de Certinet S A + + + +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 + + +CN=Autoridad Certificadora TSA03 de Certinet S A, OU=MPKI CA ADSS CertiNet, O=CertiNet S.A., EMAILADDRESS=ca-certinet@certinet.cl, C=CL + + +6QfiAsxKZVO4NMxeueaM1WVDcv8= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-06-28T10:48:32Z + + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + https://www.certinet.cl/acreditacion + + + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + https://www.certinet.cl + + + + + + + + + BPO Advisors SpA + BPO Advisors SpA + BPO Advisors SpA + BPO Advisors SpA + + + BPO Advisors SpA + RUT 76610718-4 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada mediante la Resolución Exenta N.º 3696 del 6 de noviembre de 2017, en Sellado de Tiempo mediante la Resolución Exenta N.º 3580 del 30 de noviembre de 2018, y en Biometría mediante la Resolución Exenta N.º 202100002 del 6 de enero de 2021, todas emitidas por la Subsecretaría de Economía y Empresas de Menor Tamaño. + BPO Advisors SpA + NTRCL-766107184 + Certification Service Provider accredited in Advanced Electronic Signature by Exempt Resolution No. 3696 dated November 6, 2017; in Time Stamping by Exempt Resolution No. 3580 dated November 30, 2018; and in Biometrics by Exempt Resolution No. 202100002 dated January 6, 2021 — all issued by the Undersecretariat of Economy and Small Enterprises. + BPO Advisors SpA + RUT 76610718-4 + Prestador de Serviços de Certificação acreditado em Assinatura Eletrônica Avançada pela Resolução Exenta nº 3696 de 6 de novembro de 2017; em Carimbo do Tempo pela Resolução Exenta nº 3580 de 30 de novembro de 2018; e em Biometria pela Resolução Exenta nº 202100002 de 6 de janeiro de 2021 — todas emitidas pela Subsecretaria de Economia e Pequenas Empresas. + BPO Advisors SpA + RUT 76.610718-4 + Proveedor de Servicios de Certificación ojeacreditáva Firma Electrónica Avanzada rupive Resolución Exenta No 3696 6 de noviembre 2017 rupive, Estampación de Tiempo rupive Resolución Exenta No 3580 rupive 30 de noviembre 2018, ha Biométrica-pe Resolución Exenta No 202100002 6 jasyporundy 2021 rupive, opavave ome'êva Subsecretario de Economía ha Pequeña Empresa-kuéra rehegua. + + + + + Doctor Manuel Barros Borgoño 110, oficina 0110, Providencia + Santiago + Región Metropolitana + 7500000 + CL + + + Doctor Manuel Barros Borgoño 110, office 0110, Providencia + Santiago + Región Metropolitana + 7500000 + CL + + + Doutor Manuel Barros Borgoño 110, escritório 0110, Providencia + Santiago + Región Metropolitana + 7500000 + CL + + + Pohanohára Manuel Barros Borgoño 110, oficina 0110, Providencia-pe + Santiago + Región Metropolitana + 7500000 + CL + + + + https://idok.cl/ + mailto:contacto@bpo-advisors.net + https://idok.cl/ + mailto:contacto@bpo-advisors.net + https://idok.cl/ + mailto:contacto@bpo-advisors.net + https://idok.cl/ + mailto:contacto@bpo-advisors.net + + + + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + BPO IDOK ROOT CA + BPO IDOK ROOT CA + BPO IDOK ROOT CA + BPO IDOK ROOT CA + + + +MIIFqTCCBJGgAwIBAgIIHZN3HRv8FoMwDQYJKoZIhvcNAQELBQAwgbExHjAcBgkqhkiG9w0BCQEWD3NvcG9ydGVAaWRvay5jbDEZMBcGA1UEAwwQQlBPIElET0sgUk9PVCBDQTEXMBUGA1UECwwOUlVULTc2NjEwNzE4LTQxIDAeBgNVBAsMF0F1dG9yaWRhZCBDZXJ0aWZpY2Fkb3JhMRkwFwYDVQQKDBBCUE8gQWR2aXNvcnMgU3BBMREwDwYDVQQHDAhTYW50aWFnbzELMAkGA1UEBhMCQ0wwHhcNMTcwODE2MTE1NDI5WhcNMzcwODE2MTE1NDI5WjCBsTEeMBwGCSqGSIb3DQEJARYPc29wb3J0ZUBpZG9rLmNsMRkwFwYDVQQDDBBCUE8gSURPSyBST09UIENBMRcwFQYDVQQLDA5SVVQtNzY2MTA3MTgtNDEgMB4GA1UECwwXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExGTAXBgNVBAoMEEJQTyBBZHZpc29ycyBTcEExETAPBgNVBAcMCFNhbnRpYWdvMQswCQYDVQQGEwJDTDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMeEllu4LLYDxHPM7bWZ6VDm05RhhHYE8zOEBCXe+nSowi2+mtIK7i1X0t+zBDB6JirgR/rNZt9O0U83M2dHqvyqeoCie/ZMVQA5HJAx8T9QjzZMIEZEwOtx72IS99z4fOQJobHmtCZTc6iFp20L3/JXFvgg/h6+B15nSQ7O9egSSqgvXoYVLJJXjcYCzYn7HVIMHVg/UE6OgsDwkamElwylvG3CM4NhulzyLa1Kvw23YTVbk3PQsEkkD5OpWGKUH33SemvhUVY4cQHSbHWF0ZnEx33++Fec1ISUVFhouK+9FgJcVfHfkHPSUJt6yX8GUgBUEf3aTV1pZ+qOGfomk+ECAwEAAaOCAcEwggG9MB0GA1UdDgQWBBTGJH974+WojdbyX2Cy6sh4j8TI3zAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFMYkf3vj5aiN1vJfYLLqyHiPxMjfMIIBWAYDVR0fBIIBTzCCAUswggFHoIHooIHlhoHiaHR0cDovL3BraS5pZG9rLmNsOjgwODAvZWpiY2EvcHVibGljd2ViL3dlYmRpc3QvY2VydGRpc3Q/Y21kPWNybCZpc3N1ZXI9Q049QlBPJTIwSURPSyUyMFJPT1QlMjBDQSxFPXNvcG9ydGVAaWRvay5jbCxPPUJQTyUyMEFkdmlzb3JzJTIwU3BBLE9VPVJVVC03NjYxMDcxOC00LE9VPUF1dG9yaWRhZCUyMENlcnRpZmljYWRvcmEsTD1TYW50aWFnbyxTPVJlZ2lvbiUyME1ldHJvcG9saXRhbmEsQz1DTKJapFgwVjEZMBcGA1UEAwwQQlBPIElET0sgUk9PVCBDQTEeMBwGCSqGSIb3DQEJARYPc29wb3J0ZUBpZG9rLmNsMRkwFwYDVQQKDBBCUE8gQWR2aXNvcnMgU3BBMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAQEAeoIGp8S5h27xbSRXYyxmoUCIdINh0CViKpDyE6tWoDg46SovOLLEVa3P3/W6FujLuAvCec2ebjeUWAK8SQ+X1Jn7b5/xzmEoQdAk1S+R5tJyr3+iOnJg51U2xTmVWL7YBYJuZTI4EGikBa6G/WV5HO/vub8QYc4M/sqAp4DcH2jFW5c6Hw94kNsYf0b9XYzu8w1fSyyG6jXCCOsOpDKkpRxCx/YvNQJVfmV27s42muEf/9JVbs7K6w/CTH5/IEPOWbH3ZddUkPON3hvhPIeOCh+5Cwn6aLVsN3Q4yv9RloudM4r560L/58bYrVAQhJ8ok2kGT+Foh/qCdDC7BAFSLA== + + +C=CL, L=Santiago, O=BPO Advisors SpA, OU=Autoridad Certificadora, OU=RUT-76610718-4, CN=BPO IDOK ROOT CA, EMAILADDRESS=soporte@idok.cl + + +xiR/e+PlqI3W8l9gsurIeI/EyN8= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2017-08-16T07:54:29Z + + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + + + https://idok.cl/ + https://idok.cl/ + https://idok.cl/ + https://idok.cl/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + CA FIRMA ELECTRONICA AVANZADA IDOK + CA FIRMA ELECTRONICA AVANZADA IDOK + CA FIRMA ELECTRONICA AVANZADA IDOK + CA FIRMA ELECTRONICA AVANZADA IDOK + + + +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 + + +C=CL, L=Santiago, O=BPO Advisors SpA, OU=Autoridad Certificadora, OU=RUT-76610718-4, CN=CA FIRMA ELECTRONICA AVANZADA IDOK, EMAILADDRESS=soporte@idok.cl + + +foefDvH3ZNa3vufvH626pCb8rI8= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2017-08-16T22:57:13Z + + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + + + https://www.odok.cl + https://www.odok.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + IDOK FIRMA ELECTRONICA AVANZADA CA OCSP + IDOK FIRMA ELECTRONICA AVANZADA CA OCSP + IDOK FIRMA ELECTRONICA AVANZADA CA OCSP + IDOK FIRMA ELECTRONICA AVANZADA CA OCSP + + + +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 + + +C=CL, L=Santiago, O=BPO Advisors SpA, OU=RUT-76610718-4, OU=Autoridad Certificadora, CN=IDOK FIRMA ELECTRONICA AVANZADA CA OCSP, EMAILADDRESS=soporte@idok.cl + + +wcFITrtlAMQ9MwYqx9HqAA4wfgM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2017-09-26T21:46:46Z + + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + https://idok.cl/politicas-y-certificaciones + + + https://www.odok.cl + https://www.odok.cl + https://www.odok.cl + https://www.odok.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + Thomas Signe Chile S.A. + Thomas Signe Chile S.A. + Thomas Signe Chile S.A. + Thomas Signe Chile S.A. + + + Thomas Signe Chile S.A. + RUT 76934091-2 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada mediante la Resolución Administrativa Exenta (R.A.E.) N.º 442 del 12 de febrero de 2020, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño. + Thomas Signe Chile S.A. + NTRCL-769340912 + Certification Service Provider accredited in Advanced Electronic Signature by Administrative Exempt Resolution (R.A.E.) No. 442 dated February 12, 2020, issued by the Undersecretariat of Economy and Small Enterprises. + Thomas Signe Chile S.A. + RUT 76934091-2 + Prestador de Serviços de Certificação acreditado em Assinatura Eletrônica Avançada por meio da Resolução Administrativa Isenta (R.A.E.) nº 442 de 12 de fevereiro de 2020, emitida pela Subsecretaria de Economia e Pequenas Empresas. + Thomas Signe Chile S.A. + RUT 76934091-2 + Proveedor de Servicios de Certificación ojeacreditáva Firma Electrónica Avanzada-pe Resolución Administrativa Exenta (R.A.E.) No 442 rupive, 12 de febrero 2020, omoherakuãva Subsecretaría de Economía ha Pequeña Empresa. + + + + + Avenida Presidente Kennedy 5600, oficina 806, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + President Kennedy Avenue 5600, office 806, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + Avenida Presidente Kennedy 5600, escritório 806, Las Condes + Santiago + Región Metropolitana + 7550000 + CL + + + Presidente Kennedy avenida 5600, oficina 806, Las Condes-pe + Santiago + Región Metropolitana + 7550000 + CL + + + + https://www.thomas-signe.cl + mailto:comercial@thomas-signe.cl + https://www.thomas-signe.cl + mailto:comercial@thomas-signe.cl + https://www.thomas-signe.cl + mailto:comercial@thomas-signe.cl + https://www.thomas-signe.cl + mailto:comercial@thomas-signe.cl + + + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Thomas Signe Root + Thomas Signe Root + Thomas Signe Root + Thomas Signe Root + + + +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 + + +STREET=see current address at www.thomas-signe.com, CN=Thomas Signe Root, O=Thomas Signe Soluciones Tecnológicas Globales S.A.S., L=Bogotá, ST=Distrito Capital, C=CO, OID.2.5.4.97=900962071-5 + + ++5DqODZIx8CqI46UOjzqSlLQy3g= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2018-03-14T09:50:35Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + + + +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 + + +CN=Thomas Signe Chile AC Firma Electrónica Avanzada, SERIALNUMBER=76934091-2, O=Thomas Signe Chile S.A., C=CL + + +3qDirCD94SX7QcaC53Qp1VwG0S0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2019-05-17T05:26:35Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Thomas Signe Chile Root + Thomas Signe Chile Root + Thomas Signe Chile Root + Thomas Signe Chile Root + + + +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 + + +C=CL, ST=Región Metropolitana, L=Santiago, O=Thomas Signe Chile S.A., OID.2.5.4.97=76934091-2, CN=Thomas Signe Chile Root, EMAILADDRESS=psc-cl@thsigne.com, STREET=see current address at www.thomas-signe.cl + + +GZY6Fibgon3bIoxvu8IibPSh2r4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-17T09:05:34Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + Thomas Signe Chile AC Firma Electrónica Avanzada + + + +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 + + +C=CL, L=Santiago, ST=Región Metropolitana, STREET=see current address at www.thomas-signe.cl, EMAILADDRESS=psc-cl@thsigne.com, OID.2.5.4.97=76934091-2, O=Thomas Signe Chile S.A., CN=Thomas Signe Chile AC Firma Electrónica Avanzada + + +I6YyFpEwjTxfFpQCNYVwmvh4gac= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-17T09:53:00Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Thomas Signe Chile AC TSA + Thomas Signe Chile AC TSA + Thomas Signe Chile AC TSA + Thomas Signe Chile AC TSA + + + +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 + + +C=CL, L=Santiago, ST=Región Metropolitana, STREET=see current address at www.thomas-signe.cl, EMAILADDRESS=psc-cl@thsigne.com, OID.2.5.4.97=76934091-2, O=Thomas Signe Chile S.A., CN=Thomas Signe Chile AC TSA + + +VA4HEgq9CewtVSlcMDXIz7UmWmE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-17T10:04:13Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + Thomas Signe Chile Autoridad de Sello de Tiempo – TSU 01 + Thomas Signe Chile Autoridad de Sello de Tiempo – TSU 01 + Thomas Signe Chile Autoridad de Sello de Tiempo – TSU 01 + Thomas Signe Chile Autoridad de Sello de Tiempo – TSU 01 + + + +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 + + +C=CL, L=Santiago, ST=Región Metropolitana, STREET=see current address at www.thomas-signe.cl, EMAILADDRESS=psc-cl@thsigne.com, OID.2.5.4.97=76934091-2, O=Thomas Signe Chile S.A., CN=Thomas Signe Chile Autoridad de Sello de Tiempo – TSU 01 + + +zu2I6s7hppd25U7NtXUEKPT5D68= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-17T10:17:12Z + + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + https://www.thomas-signe.cl/ppc + + + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + https://www.thomas-signe.cl + + + + + + + + + ABANCERT + ABANCERT + ABANCERT + ABANCERT + + + INVERSIONES ARÁNDANOS SPA. + RUT 77097633-2 + Prestador de Servicios de Certificación acreditado en Firma Electrónica Avanzada por R.A.EX. N° 202200309 de 28 febrero de 2022 de la Subsecretaría de Economía y Empresas de Menor Tamaño. + INVERSIONES ARÁNDANOS SPA. + NTRCL-770976332 + Certification Service Provider accredited for Advanced Electronic Signature by Exempt Resolution No. 202200309 dated February 28, 2022, issued by the Undersecretariat of Economy and Small Enterprises. + INVERSIONES ARÁNDANOS SPA. + RUT 77097633-2 + Prestador de Serviços de Certificação credenciado para Assinatura Eletrônica Avançada pela Resolução Exenta nº 202200309, de 28 de fevereiro de 2022, da Subsecretaria de Economia e Pequenas Empresas. + INVERSIONES ARÁNDANOS SPA. + RUT 77097633-2 + Mbojeroviaha Ñemoneĩ rehegua ohechauka ha'eha oñemoneĩva Firma Electrónica Avanzada rehegua R.A.EX. No 202200309 rehegua ára 28 jasykõi ary 2022, ome'ẽva Subsecretaría de Economía ha Mymba'i Mba'apohára Michĩva rehegua. + + + + + Román Díaz 1180, oficina 311, Providencia + Santiago + Región Metropolitana + 7501085 + CL + + + Román Díaz 1180, office 311, Providencia + Santiago + Región Metropolitana + 7501085 + CL + + + Román Díaz 1180, escritório 311, Providencia + Santiago + Región Metropolitana + 7501085 + CL + + + Román Díaz 1180, oficina 311, Providencia-pe + Santiago + Región Metropolitana + 7501085 + CL + + + + https://www.abancert.cl + mailto:soporte@abancert.cl + https://www.abancert.cl + mailto:soporte@abancert.cl + https://www.abancert.cl + mailto:soporte@abancert.cl + https://www.abancert.cl + mailto:soporte@abancert.cl + + + + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + ABANCERT CA ROOT - G2 + ABANCERT CA ROOT - G2 + ABANCERT CA ROOT - G2 + ABANCERT CA ROOT - G2 + + + +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 + + +CN=ABANCERT CA ROOT - G2, EMAILADDRESS=contactos@abancert.cl, OU=Autoridad Certificadora, O=ABANCERT, L=Santiago, ST=Region Metropolitana, C=CL, SERIALNUMBER=77097633-2 + + +KRn9jVgVuwBaRXK92YA+MAcGEe0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-09-09T09:36:26Z + + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + + + https://www.abancert.cl + https://www.abancert.cl + https://www.abancert.cl + https://www.abancert.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + ABANCERT FIRMA ELECTRONICA AVANZADA - G2 + ABANCERT FIRMA ELECTRONICA AVANZADA - G2 + ABANCERT FIRMA ELECTRONICA AVANZADA - G2 + ABANCERT FIRMA ELECTRONICA AVANZADA - G2 + + + +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 + + +EMAILADDRESS=contactos@abancert.cl, CN=ABANCERT FIRMA ELECTRONICA AVANZADA - G2, OU=Autoridad Certificadora, O=ABANCERT, L=Santiago, ST=Region Metropolitana, C=CL, SERIALNUMBER=77097633-2 + + +sPhJ6QqBn6CurLnNl7aFwXhf4hg= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-09-09T09:48:04Z + + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + https://www.abancert.cl/assets/doc/PoliticaCertificadosFEA.pdf + https://www.abancert.cl/assets/doc/DeclaracionPracticasCertificacion.pdf + + + https://www.abancert.cl + https://www.abancert.cl + https://www.abancert.cl + https://www.abancert.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + Firmadox + Firmadox + Firmadox + Firmadox + + + DOX PSC SPA. + RUT 77190942-6 + Prestador de Servicios de Certificación acreditado para la emisión de certificados de Firma Electrónica Avanzada, conforme a la Resolución Exenta N° 202200985, de fecha 26 de mayo de 2022, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño. + DOX PSC SPA. + NTRCL-771909426 + Certification Service Provider accredited for the issuance of Advanced Electronic Signature certificates, in accordance with Exempt Resolution No. 202200985, dated May 26, 2022, issued by the Undersecretariat of Economy and Small Enterprises. + DOX PSC SPA. + RUT 77190942-6 + Prestador de Serviços de Certificação credenciado para a emissão de certificados de Assinatura Eletrônica Avançada, conforme a Resolução Exenta nº 202200985, de 26 de maio de 2022, emitida pela Subsecretaria de Economia e Pequenas Empresas. + DOX PSC SPA. + RUT 77190942-6 + Mbojeroviaha rembiapo ome’ẽva kuatia’atã rehegua ha oñemoneĩva Firma Electrónica Avanzada rehe, he’iháicha Resolución Exenta No 202200985, ára 26 jasypo 2022, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva. + + + + + Fanor Velasco 85, oficina 303, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Fanor Velasco 85, office 303, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Fanor Velasco 85, escritório 303, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + Fanor Velasco 85, oficina 303, Santiago-pe + Santiago + Región Metropolitana + 8320000 + CL + + + + https://www.firmadox.cl + mailto:comercial@firmadox.cl + https://www.firmadox.cl + mailto:comercial@firmadox.cl + https://www.firmadox.cl + mailto:comercial@firmadox.cl + https://www.firmadox.cl + mailto:comercial@firmadox.cl + + + + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + FIRMA ELECTRONICA AVANZADA - ROOT + FIRMA ELECTRONICA AVANZADA - ROOT + FIRMA ELECTRONICA AVANZADA - ROOT + FIRMA ELECTRONICA AVANZADA - ROOT + + + +MIIFHjCCBAagAwIBAgIQXaOKRACCgY5N8oukrmSRvjANBgkqhkiG9w0BAQsFADCBjDELMAkGA1UEBhMCQ0wxFjAUBgNVBAgTDU1ldHJvcG9saXRhbmExETAPBgNVBAcTCFNhbnRpYWdvMREwDwYDVQQKEwhGaXJtYWRveDETMBEGA1UECxMKNzcxOTA5NDItNjEqMCgGA1UEAxMhRklSTUEgRUxFQ1RST05JQ0EgQVZBTlpBREEgLSBST09UMB4XDTIxMTIxNTE4MzE1OVoXDTM3MTIxNTE4NDE1OVowgYwxCzAJBgNVBAYTAkNMMRYwFAYDVQQIEw1NZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzERMA8GA1UEChMIRmlybWFkb3gxEzARBgNVBAsTCjc3MTkwOTQyLTYxKjAoBgNVBAMTIUZJUk1BIEVMRUNUUk9OSUNBIEFWQU5aQURBIC0gUk9PVDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJR7UURsUZcVJ/pAulWLgXOfJvgi5NZQ/DdEMGuJjQy7rW1bY0bvkq2LlCSufc538vzAr0mteotvOR6yRdWTw71D6hSBIIqJFIrnqSKcmkP1Bfh/hAZn7FklCCqmD+vLm2lpZ2dW0WJQ+T4jtJBbC1KmmOkgSxcyS7o8f+nHdV12Lau/yU59NQ6M6UtRcW8Ky/asJf54c0d8T0QSMHBX54qTwt9ZYjWc467EppTm71ir6JbcaB5YD+dcX++twaR/egY/gQXq+i3F9Zlj1ft0T/PusxAWMoVPBjvUT+3/K6YidGV1SEvvPy7uKMXcFa2q2+VKKkUisZzQZhXerbneH/ECAwEAAaOCAXgwggF0MBMGCSsGAQQBgjcUAgQGHgQAQwBBMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEBMB0GA1UdDgQWBBR5OOl7X9nhfUUTkQBepkJi/fHcXjAQBgkrBgEEAYI3FQEEAwIBADCCAQYGA1UdIASB/jCB+zCB+AYJKwYBBAGDvSADMIHqMIG6BggrBgEFBQcCAjCBrR6BqgBDAGUAcgB0AGkAZgBpAGMAYQBkAG8AIABSAE8ATwBUACAAQwBBAC4AIABQAFMAQwAgAGUAbgAgAHAAcgBvAGMAZQBzAG8AIABkAGUAIABhAGMAcgBlAGQAaQB0AGEAYwBpAG8AbgAgAHAAbwByACAAbABhACAAUwB1AGIAcwBlAGMAcgBlAHQAYQByAGkAYQAgAGQAZQAgAEUAYwBvAG4AbwBtAGkAYQAuMCsGCCsGAQUFBwIBFh9odHRwOi8vY2xpZW50ZXMuZmlybWFkb3guY2wvY3BzMA0GCSqGSIb3DQEBCwUAA4IBAQB9Cz2YPS4M4MDXWwgtXAcN0Kfdy3I35vy0oL9pczlxEt2jbc6DyqFK/76UcdwwcY9rSgz5BP1CQq84iXV5JX3rFvccmxzH16ro+tW3VVEuN1HWEVd4eSWfEjW1waC8tvkhApo0oV8p6ySLLoJVs9LUOnUPGL8YlLnITiEXnMlmYPrGnOYI4KMg1ol8HtHgR160R1Yrm3XQ52rk5B/gqZD6XGk01U6YQPLsM/H8QEVqPFxOf6H4Y/WuzreNob4tKQVTukbBYk0GIYQvcgRu7X2b0PSF37qgcCAfrjA26ya2XfuJp+LB+xWHOL6dwUHVbTxojDGcmkK7eIk9Fm5/COSW + + +CN=FIRMA ELECTRONICA AVANZADA - ROOT, OU=77190942-6, O=Firmadox, L=Santiago, ST=Metropolitana, C=CL + + +eTjpe1/Z4X1FE5EAXqZCYv3x3F4= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-12-15T14:31:59Z + + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + + + https://www.firmadox.cl + https://www.firmadox.cl + https://www.firmadox.cl + https://www.firmadox.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + FIRMA ELECTRONICA AVANZADA - FIRMADOX + FIRMA ELECTRONICA AVANZADA - FIRMADOX + FIRMA ELECTRONICA AVANZADA - FIRMADOX + FIRMA ELECTRONICA AVANZADA - FIRMADOX + + + +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 + + +EMAILADDRESS=Contacto@firmadox.cl.cl, CN=FIRMA ELECTRONICA AVANZADA - FIRMADOX, OU=77190942-6, O=Firmadox, L=Santiago, ST=Metropolitana, C=CL + + +yZ42UNNBkA1QpFsmhgo/uZlgvWc= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2021-12-15T15:41:45Z + + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + https://www.firmadox.cl/legales/ + + + https://www.firmadox.cl + https://www.firmadox.cl + https://www.firmadox.cl + https://www.firmadox.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + E-Digital PKI + E-Digital PKI + E-Digital PKI + E-Digital PKI + + + E-DIGITAL PKI SPA. + RUT 77.423.125-0 + Prestador de Servicios de Certificación acreditado para la emisión de certificados de Firma Electrónica Avanzada, conforme a la Resolución Exenta N° 202202626, de fecha 3 de octubre de 2022, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño. + E-DIGITAL PKI SPA. + NTRCL-774231250 + Certification Service Provider accredited for the issuance of Advanced Electronic Signature certificates, in accordance with Exempt Resolution No. 202202626, dated October 3, 2022, issued by the Undersecretariat of Economy and Small Enterprises. + E-DIGITAL PKI SPA. + RUT 77423125-0 + Prestador de Serviços de Certificação credenciado para a emissão de certificados de Assinatura Eletrônica Avançada, conforme a Resolução Exenta nº 202202626, de 3 de outubro de 2022, emitida pela Subsecretaria de Economia e Pequenas Empresas. + E-DIGITAL PKI SPA. + RUT 77423125-0 + Mbojeroviaha rembiapo oñemoneĩva ome’ẽ hag̃ua kuatia’atã Firma Electrónica Avanzada rehegua, he’iháicha Resolución Exenta No 202202626, ára 3 jasypa ary 2022, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva. + + + + + Badajos 100, piso 15, oficina 1519, Las Condes + Santiago + Región Metropolitana + 7560908 + CL + + + Badajos 100, 15th floor, office 1519, Las Condes + Santiago + Región Metropolitana + 7560908 + CL + + + Badajos 100, 15º andar, escritório 1519, Las Condes + Santiago + Región Metropolitana + 7560908 + CL + + + Badajos 100, piso 15, oficina 1519, Las Condes + Santiago + Región Metropolitana + 7560908 + CL + + + + https://www.signapis.com + mailto:soporte@e-digital.cl + https://www.signapis.com + mailto:soporte@e-digital.cl + https://www.signapis.com + mailto:soporte@e-digital.cl + https://www.signapis.com + mailto:soporte@e-digital.cl + + + + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Autoridad Certificadora Raiz Signapis + Autoridad Certificadora Raiz Signapis + Autoridad Certificadora Raiz Signapis + Autoridad Certificadora Raiz Signapis + + + +MIIEOTCCAyGgAwIBAgIUJbyvidqqA4EhiIM7mMvKpxWajS4wDQYJKoZIhvcNAQELBQAwgaMxJDAiBgkqhkiG9w0BCQEWFWNvbnRhY3RvQHNpZ25hcGlzLmNvbTEuMCwGA1UEAwwlQXV0b3JpZGFkIENlcnRpZmljYWRvcmEgUmFpeiBTaWduYXBpczETMBEGA1UECwwKNzc0MjMxMjUtMDEWMBQGA1UECgwNRS1EaWdpdGFsIFBLSTERMA8GA1UEBwwIU2FudGlhZ28xCzAJBgNVBAYTAkNMMB4XDTIyMDYyMzE1MDMyM1oXDTMyMDYyMDE1MDMyMlowgaMxJDAiBgkqhkiG9w0BCQEWFWNvbnRhY3RvQHNpZ25hcGlzLmNvbTEuMCwGA1UEAwwlQXV0b3JpZGFkIENlcnRpZmljYWRvcmEgUmFpeiBTaWduYXBpczETMBEGA1UECwwKNzc0MjMxMjUtMDEWMBQGA1UECgwNRS1EaWdpdGFsIFBLSTERMA8GA1UEBwwIU2FudGlhZ28xCzAJBgNVBAYTAkNMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1H6lMOgVqb7yzHCPVLSMI61GU/opwmPPg5XCx4EfuY+iV7D5tIFx7DfK6fjDkISZZMzirjFQKGmfg0hOVYQkuvitZP3EjcYk2LaqAvbk48BGredXcVooOswnjv/pXFOStYYrjXjpWs0IfYrUsfIlRBlI6Kw1ehnHrI1/qMbheBrlcQV3J1/S3VnIFRG7GL7cULwBZzbGaqRMhWTn6ZrX0C/2sPTlU+k2H8Kt/hSX0ggKE0c1O2Tnl+f3QWPMsOQEthHD328sxSuAXt8qTQvCWQsOGBktGCSmolEYEsilaDGPbay9g0q3fen779hqgMUBvVuNon1kcOeKzZMT0rs/rQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFCXNkRS94aKixBxqbjw8KLfI6sHkMB0GA1UdDgQWBBQlzZEUveGiosQcam48PCi3yOrB5DAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggEBAJZYVADWCPYeyjZ3S6nC6GKvUUOA19WFif2QF0qTd8wVSlwx1gmkJ08OeX6R7djKlKLC5IknEcf5eDTg3Ouq5jcveH2hiXT+MpXSodr0m7imC3h0OgZmX/oVa+JWWvku2gJsrGXi2ijuBC87Evo2LgvYmG7jwY3I6/nDT0WpjRMF/NaJt7QzS0Xfel7YQ6YU/rany4j9hpErxm7dh6YQhp2Bq4K99hsSnYXpD6TClwoiioOBiNvs7sorUFI43Vvcnv2DY7t4f9sBbmAaiBOxBg8fOf0JkzI0QnG2t30WhTcVHJg+QgAGgGCSEuXz5yQRp8uzmAZjgjRiQ7BqE6/M8OM= + + +C=CL, L=Santiago, O=E-Digital PKI, OU=77423125-0, CN=Autoridad Certificadora Raiz Signapis, EMAILADDRESS=contacto@signapis.com + + +Jc2RFL3hoqLEHGpuPDwot8jqweQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2022-06-23T11:03:23Z + + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + + + https://www.signapis.com + https://www.signapis.com + https://www.signapis.com + https://www.signapis.com + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Autoridad Certificadora Firma Electronica Avanzada Signapis + Autoridad Certificadora Firma Electronica Avanzada Signapis + Autoridad Certificadora Firma Electronica Avanzada Signapis + Autoridad Certificadora Firma Electronica Avanzada Signapis + + + +MIIEkjCCA3qgAwIBAgIURFN/SoiU2dDaeLGDUEZwoXG2JZIwDQYJKoZIhvcNAQELBQAwgaMxJDAiBgkqhkiG9w0BCQEWFWNvbnRhY3RvQHNpZ25hcGlzLmNvbTEuMCwGA1UEAwwlQXV0b3JpZGFkIENlcnRpZmljYWRvcmEgUmFpeiBTaWduYXBpczETMBEGA1UECwwKNzc0MjMxMjUtMDEWMBQGA1UECgwNRS1EaWdpdGFsIFBLSTERMA8GA1UEBwwIU2FudGlhZ28xCzAJBgNVBAYTAkNMMB4XDTIyMDYyMzE1MjAzOVoXDTMyMDYyMDE1MDMyMlowgbkxJDAiBgkqhkiG9w0BCQEWFWNvbnRhY3RvQHNpZ25hcGlzLmNvbTFEMEIGA1UEAww7QXV0b3JpZGFkIENlcnRpZmljYWRvcmEgRmlybWEgRWxlY3Ryb25pY2EgQXZhbnphZGEgU2lnbmFwaXMxEzARBgNVBAsMCjc3NDIzMTI1LTAxFjAUBgNVBAoMDUUtRGlnaXRhbCBQS0kxETAPBgNVBAcMCFNhbnRpYWdvMQswCQYDVQQGEwJDTDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM2nUp+C1ilP9C7MXWXwOJMYDW1PrZKiipj4v1XubDID9I2ZDs2hR6wQmxsz4/P0hwNKqFXZdLscGA3HHbCCnKgExF6o1yUoZZwjQ+KtIVnUqeM48D1Ilo5GVbpBwIinWA5Fdh+o9E5K0G2bGnKosNIkmMJ4QlDR6uMBUDTDrtGd+rR4t94uKPUjCbpZLmGhsvSyd5XDZIFBLC3oDanssVc0O8hUptoZQwJ6bz3U2KEnn0a7O9FkT3RaOfgbIakti4gzMscQj0Ee6824UiVx9THQx1jDNZDGxUpXDYuTHGm1ymWHrDvYyHL+Po2mdtUtON1QB131x3uOYok/GSit808CAwEAAaOBpTCBojAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFCXNkRS94aKixBxqbjw8KLfI6sHkMCMGA1UdEQQcMBqgGAYIKwYBBAHBAQKgDBYKNzc0MjMxMjUtMDAaBgNVHSAEEzARMA8GDSsGAQQBg8QRAgEEAQMwHQYDVR0OBBYEFMG8AvkoXDCvdMMK0kkclcQMldzUMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEAlg10cKe5fhjk/cPaC3v82RMc+J5Fr/+zX70t8HAmozg5SNL04K8bSRpSueKtn/bjHESktCR3bOP/TJ2jYTKEK6ZLySd+ZWXFMvMYVNVXvUE3ed/DbiKnlrhPNoiTuNGwpp4IIvq+kFGie+7xfOcgbu0f9GKVHOHrk7NBuod3iNNVTXiq8UUNpOZkKV28+QJOexfv9Ecklq5rp7J43r8Lml7T9mH+G5WUnNtiLImYdaRPtzJpIQaxHOHdLSzdGy3ZXul5wAwCUMb0OrP/yWqFcusKjaBc6bvL6SQ+wI4rFmBXsC0nqXlvG64NH5yfY3rU/2fa4G0NRgFW2QCkreRyyA== + + +C=CL, L=Santiago, O=E-Digital PKI, OU=77423125-0, CN=Autoridad Certificadora Firma Electronica Avanzada Signapis, EMAILADDRESS=contacto@signapis.com + + +wbwC+ShcMK90wwrSSRyVxAyV3NQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2022-06-23T11:20:39Z + + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + https://signapis.com/pdf/politica_certificados.pdf + https://signapis.com/pdf/declaracion_practicas.pdf + + + https://www.signapis.com + https://www.signapis.com + https://www.signapis.com + https://www.signapis.com + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + Microsystem S.A. + Microsystem S.A. + Microsystem S.A. + Microsystem S.A. + + + MICROSYSTEM S.A. + RUT 94099000-9 + Prestador de Servicios de Certificación acreditado para la emisión de certificados de Firma Electrónica Avanzada, conforme a la Resolución Exenta N° 202300607, de fecha 16 de marzo de 2023, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño. + MICROSYSTEM S.A. + NTRCL-940990009 + Certification Service Provider accredited for the issuance of Advanced Electronic Signature certificates, in accordance with Exempt Resolution No. 202300607, dated March 16, 2023, issued by the Undersecretariat of Economy and Small Enterprises. + MICROSYSTEM S.A. + RUT 94099000-9 + Prestador de Serviços de Certificação credenciado para a emissão de certificados de Assinatura Eletrônica Avançada, conforme a Resolução Exenta nº 202300607, de 16 de março de 2023, emitida pela Subsecretaria de Economia e Pequenas Empresas. + MICROSYSTEM S.A. + RUT 94099000-9 + Mbojeroviaha rembiapo oñemoneĩva ome’ẽ hag̃ua kuatia’atã Firma Electrónica Avanzada rehegua, he’iháicha Resolución Exenta No 202300607, ára 16 jasyapy ary 2023, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva. + + + + + José Miguel de la Barra 536, piso 7, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + José Miguel de la Barra 536, 7th floor, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + José Miguel de la Barra 536, 7º andar, Santiago + Santiago + Región Metropolitana + 8320000 + CL + + + José Miguel de la Barra 536, 7ha piso, Santiago-pe + Santiago + Región Metropolitana + 8320000 + CL + + + + https://www.microsystem.cl + mailto:soportepki@microsystem.cl + https://www.microsystem.cl + mailto:soportepki@microsystem.cl + https://www.microsystem.cl + mailto:soportepki@microsystem.cl + https://www.microsystem.cl + mailto:soportepki@microsystem.cl + + + + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Microsystem Root CA - P1 + Microsystem Root CA - P1 + Microsystem Root CA - P1 + Microsystem Root CA - P1 + + + +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 + + +EMAILADDRESS=soportepki@microsystem.cl, CN=Microsystem Root CA - P1, OU=94099000-9, OU=Autoridad Certificadora, O=Microsystem S.A., L=Santiago, ST=Region Metropolitana, C=CL + + +tbP42zKR8vO14V9lHOGDTCqx+vM= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-01-05T11:22:34Z + + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + + + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Microsystem Firma Electronica Avanzada - P1 + Microsystem Firma Electronica Avanzada - P1 + Microsystem Firma Electronica Avanzada - P1 + Microsystem Firma Electronica Avanzada - P1 + + + +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 + + +EMAILADDRESS=soportepki@microsystem.cl, CN=Microsystem Firma Electronica Avanzada - P1, OU=94099000-9, OU=Autoridad Certificadora, O=Microsystem S.A., L=Santiago, ST=Region Metropolitana, C=CL + + +ZCUgW8XJWdfIT00ZLU3gkSLshOk= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-01-05T11:31:25Z + + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + + + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Microsystem Firma Electronica Avanzada en Linea - P1 + Microsystem Firma Electronica Avanzada en Linea - P1 + Microsystem Firma Electronica Avanzada en Linea - P1 + Microsystem Firma Electronica Avanzada en Linea - P1 + + + +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 + + +EMAILADDRESS=soportepki@microsystem.cl, CN=Microsystem Firma Electronica Avanzada en Linea - P1, OU=94099000-9, OU=Autoridad Certificadora, O=Microsystem S.A., L=Santiago, ST=Region Metropolitana, C=CL + + +xg3n68SqB9sw67b5DsYjJVcVKAg= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2024-10-09T13:37:56Z + + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + https://portal.ca.msys.cl/documentacion/ + + + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + https://portal.ca.msys.cl/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + Certificadora del Sur + Certificadora del Sur + Certificadora del Sur + Certificadora del Sur + + + CERTIFICADORA DEL SUR SPA. + RUT 77058910-K + Prestador de Servicios de Certificación acreditado para la emisión de certificados de Firma Electrónica Avanzada, conforme a la Resolución Exenta N° RAEX202401693, de fecha 5 de junio de 2024, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño. + CERTIFICADORA DEL SUR SPA. + NTRCL-77058910K + Certification Service Provider accredited for the issuance of Advanced Electronic Signature certificates, in accordance with Exempt Resolution No. RAEX202401693, dated June 5, 2024, issued by the Undersecretariat of Economy and Small Enterprises. + CERTIFICADORA DEL SUR SPA. + RUT 77058910-K + Prestador de Serviços de Certificação credenciado para a emissão de certificados de Assinatura Eletrônica Avançada, conforme a Resolução Exenta nº RAEX202401693, de 5 de junho de 2024, emitida pela Subsecretaria de Economia e Pequenas Empresas. + CERTIFICADORA DEL SUR SPA. + RUT 77058910-K + Mbojeroviaha rembiapo oñemoneĩva ome’ẽ hag̃ua kuatia’atã Firma Electrónica Avanzada rehegua, he’iháicha Resolución Exenta RAEX202401693, ára 5 jasypoteĩ ary 2024, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva. + + + + + Lautaro 867, Los Ángeles + Provincia del Bío Bío + VIII Región + 4440000 + CL + + + Lautaro 867, Los Angeles + Bío Bío Province + Region VIII + 4440000 + CL + + + Lautaro 867, Los Angeles + Província de Bío Bío + Região VIII + 4440000 + CL + + + Lautaro 867, Los Ángeles-pe + Bío Bío retãvore + Región VIII rehegua + 4440000 + CL + + + + https://www.certificadoradelsur.cl/website/ + mailto:contacto@certificadoradelsur.cl + https://www.certificadoradelsur.cl/website/ + mailto:contacto@certificadoradelsur.cl + https://www.certificadoradelsur.cl/website/ + mailto:contacto@certificadoradelsur.cl + https://www.certificadoradelsur.cl/website/ + mailto:contacto@certificadoradelsur.cl + + + + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Certificadora del Sur Root CA-C3 + Certificadora del Sur Root CA-C3 + Certificadora del Sur Root CA-C3 + Certificadora del Sur Root CA-C3 + + + +MIIEoTCCA4mgAwIBAgIIQ8LmJpC1U4YwDQYJKoZIhvcNAQELBQAwgd0xCzAJBgNVBAYTAkNMMR4wHAYDVQQKDBVDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIxPjA8BgNVBAsMNVRlcm1pbm9zIGRlIFVzbyBlbiBodHRwczovL3d3dy5jZXJ0aWZpY2Fkb3JhZGVsc3VyLmNsMRMwEQYDVQQrDAo3NzA1ODkxMC1LMSkwJwYDVQQDDCBDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIgUm9vdCBDQS1DMzEuMCwGCSqGSIb3DQEJARYfY29udGFjdG9AY2VydGlmaWNhZG9yYWRlbHN1ci5jbDAeFw0yMzEwMjUxOTA3NTRaFw00MzEwMjUxOTA3NTRaMIHdMQswCQYDVQQGEwJDTDEeMBwGA1UECgwVQ2VydGlmaWNhZG9yYSBkZWwgU3VyMT4wPAYDVQQLDDVUZXJtaW5vcyBkZSBVc28gZW4gaHR0cHM6Ly93d3cuY2VydGlmaWNhZG9yYWRlbHN1ci5jbDETMBEGA1UEKwwKNzcwNTg5MTAtSzEpMCcGA1UEAwwgQ2VydGlmaWNhZG9yYSBkZWwgU3VyIFJvb3QgQ0EtQzMxLjAsBgkqhkiG9w0BCQEWH2NvbnRhY3RvQGNlcnRpZmljYWRvcmFkZWxzdXIuY2wwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCENR9LkrOdYHS2yhsvCfar/a/33nUah7v4JOv4SKR3VblSaY0SEsBtO97fsyI0hl0LsympwKWR0j1HUebJPSXknTiyDIyhx5wZLmYVjdPH+4fnee4LT4mPjZx6ExAz8ewX7eZNbT3KivqA0boo9VQ5cR9WGeNGyrZPvmyW32Bn8VXDawxoywIq3xbLDQri3cZk4QLHOMjA2LXqBrY54TGlzaZ26rGi7LHWRBGQ+PjNVS5/u2Rj0VZ/WWq6RobY7HHrFVj1iN7R/aRa3kaM8OO4knIsTHZ7mMtIp5TEKEYzsI0kq9bo4iIq7XWfgCZwE6p7MZFBGk7H8mRR17uUtCDRAgMBAAGjYzBhMB0GA1UdDgQWBBT/7rESucAYhcv6hLVZvxSGuptN8TAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFP/usRK5wBiFy/qEtVm/FIa6m03xMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEAgHpzjA/PyHwMVeTS+BexuVJouTZFQLxWx+J7sJ3mPp22sLxQHeI7MUuIw5S1osVNkrg6QGVfyaXGRupj8COFnX40iOLIDNn+VB9YpydgRFIJ7/gd9sLuDNPRNqm0Ykw6+prLQu7W8P/Lg3tK1uLS4sw++FlQVsPT9QoiFnA69nk6P7osfMuSZPSe6TavypBXmyA+P6IXBn7i9/UBuV9KknGs2KVrbXAtTko+zBAwkljCUEw93LjVZ4TFC5byALznEkSIcLLdeS70xkLFldDXtlo91ldjkEZPOzmbMFM/8er3x5zO229se3EJNT1tyBGvG3XXcX5yWf5l7QTcgsXm6A== + + +EMAILADDRESS=contacto@certificadoradelsur.cl, CN=Certificadora del Sur Root CA-C3, INITIALS=77058910-K, OU=Terminos de Uso en https://www.certificadoradelsur.cl, O=Certificadora del Sur, C=CL + + +/+6xErnAGIXL+oS1Wb8UhrqbTfE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-10-25T15:07:54Z + + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + + + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + Firma Electronica Avanzada Certificadora del Sur + Firma Electronica Avanzada Certificadora del Sur + Firma Electronica Avanzada Certificadora del Sur + Firma Electronica Avanzada Certificadora del Sur + + + +MIIFDjCCA/agAwIBAgIISMV7lVSXbO8wDQYJKoZIhvcNAQELBQAwgd0xCzAJBgNVBAYTAkNMMR4wHAYDVQQKDBVDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIxPjA8BgNVBAsMNVRlcm1pbm9zIGRlIFVzbyBlbiBodHRwczovL3d3dy5jZXJ0aWZpY2Fkb3JhZGVsc3VyLmNsMRMwEQYDVQQrDAo3NzA1ODkxMC1LMSkwJwYDVQQDDCBDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIgUm9vdCBDQS1DMzEuMCwGCSqGSIb3DQEJARYfY29udGFjdG9AY2VydGlmaWNhZG9yYWRlbHN1ci5jbDAeFw0yMzEwMjUxOTA2MThaFw00MzAxMjExOTA2MThaMIIBFTELMAkGA1UEBhMCQ0wxEDAOBgNVBAgMB0JpbyBCaW8xFDASBgNVBAcMC0xvcyBBbmdlbGVzMR4wHAYDVQQKDBVDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIxPjA8BgNVBAsMNVRlcm1pbm9zIGRlIFVzbyBlbiBodHRwczovL3d3dy5jZXJ0aWZpY2Fkb3JhZGVsc3VyLmNsMRMwEQYDVQQrDAo3NzA1ODkxMC1LMTkwNwYDVQQDDDBGaXJtYSBFbGVjdHJvbmljYSBBdmFuemFkYSBDZXJ0aWZpY2Fkb3JhIGRlbCBTdXIxLjAsBgkqhkiG9w0BCQEWH2NvbnRhY3RvQGNlcnRpZmljYWRvcmFkZWxzdXIuY2wwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuVks20PVRi32JLoYFLyqd/GVNbxExGPvVqLDIexuVx4VUXrZYoaoMnERvUVlUb7ncy61xZMTWRuDWH52DBvHswB6sQdq9Yohe2SshDZ9/KfEBOVCP9eyQ8H+laYa5LHSIhF6N8dFjhROHUa4FAP44lcvOZzYoD9k9kEOMCacq5s5fe4L9FRH5U76L55d2rBp4yzNbykCfW2t7UStdScgt/lwQYsHlhfg8vROEnTEeB1iZ0usha9gKVcEO3/sRoQRdpkOvIAswv7OJsQ7GpiYB+olKSoaFCBMQXc2yKZzyNuPkhUb8WG5Rq4acW+F/piKSH1HntLCu69N/sau/beE5AgMBAAGjgZYwgZMwHQYDVR0OBBYEFDEgj9FMVuudipIhpkd6UbPBqrFiMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU/+6xErnAGIXL+oS1Wb8UhrqbTfEwDgYDVR0PAQH/BAQDAgGGMDAGA1UdEQQpMCegJQYIKwYBBAHBAQKgGTAXoAIbAKERMA+gAwIBAKEIMAYbBG51bGwwDQYJKoZIhvcNAQELBQADggEBAEcfQ5qA3HpTNX2aOPIQiyCi5VWbIviGusNnA7iuLgQgpVc7uQVU4S9Akaa0BVPj4SELXiriqQoZ0ZqVZkDMFhlMPq7gphfJpoC9UIBJcr3Eh0Ze+3HviqbP+JriUNFreU5FPtRlywXhZlozLg9+A8dRQ1GED599XJN9N5VJ/d0E3foaOq8532kIi8h8qhD6hI3OQ9+PSoDfaOkCX052LfwL+1NnEmgvTDIo4yccfO3AF7JF3rsgm77Z1hw0KkEbSpA3sNr72K9aMvu1p/vtmR60wOGy95U7qlZh8ypPfOE8VFvsKjwl2hsWIfgbCIPNpOU8saaTKOymeyzQ4cEQ51I= + + +EMAILADDRESS=contacto@certificadoradelsur.cl, CN=Firma Electronica Avanzada Certificadora del Sur, INITIALS=77058910-K, OU=Terminos de Uso en https://www.certificadoradelsur.cl, O=Certificadora del Sur, L=Los Angeles, ST=Bio Bio, C=CL + + +MSCP0UxW652KkiGmR3pRs8GqsWI= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2023-10-25T15:06:18Z + + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + https://www.certificadoradelsur.cl/website/politicas.html + https://www.certificadoradelsur.cl/website/practicas.html + + + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + https://www.certificadoradelsur.cl/website/ + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + PAPERLESS + PAPERLESS + PAPERLESS + PAPERLESS + + + E-PARTNERS SPA. + RUT 96915310-6 + Mediante Resolución Exenta N° 20220379, de fecha 9 de marzo de 2022, emitida por la Subsecretaría de Economía y Empresas de Menor Tamaño, se dejó sin efecto la acreditación de la empresa E-Partners como Prestador de Servicios de Certificación de Firma Electrónica Avanzada, debido al cese voluntario en la prestación de sus servicios. Asimismo, se dispuso la cancelación de su inscripción en el registro de la Entidad Acreditadora. + E-PARTNERS SPA. + NTRCL-969153106 + By means of Exempt Resolution No. 20220379, dated March 9, 2022, issued by the Undersecretariat of Economy and Small Enterprises, the accreditation of the company E-Partners as a Certification Service Provider for Advanced Electronic Signatures was revoked due to the voluntary cessation of its services. Furthermore, the cancellation of its registration in the Accrediting Entity’s registry was ordered. + E-PARTNERS SPA. + RUT 96915310-6 + Por meio da Resolução Exenta nº 20220379, de 9 de março de 2022, emitida pela Subsecretaria de Economia e Pequenas Empresas, foi revogada a acreditação da empresa E-Partners como Prestadora de Serviços de Certificação de Assinatura Eletrônica Avançada, devido à cessação voluntária na prestação de seus serviços. Ademais, foi determinada a exclusão de sua inscrição no registro da Entidade Acreditadora. + E-PARTNERS SPA. + RUT 96915310-6 + He’iháicha Resolución Exenta RAEX20220379, ára 9 jasyapy ary 2022, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva, oñemboguepa pe empresa E-Partners rehe oñemoneĩva Firma Electrónica Avanzada rehegua mbojeroviaha rembiapo ramo, ha’e voi oheja haguére hembiapo. Avei, oñembogue ijeguatávo héra Entidad Acreditadora kuatia’atãme. + + + + + Enrique Foster Sur 20, piso 5, Las Condes + Santiago + Región Metropilitana + 7550000 + CL + + + Enrique Foster Sur 20, 5th floor, Las Condes + Santiago + Región Metropilitana + 7550000 + CL + + + Enrique Foster Sur 20, 5º andar, Las Condes + Santiago + Región Metropilitana + 7550000 + CL + + + Enrique Foster Sur 20, 5o piso, Las Condes-pe + Santiago + Región Metropilitana + 7550000 + CL + + + + https://www.e-partners.cl + mailto:comunicaciones@pkichile.cl + https://www.e-partners.cl + mailto:comunicaciones@pkichile.cl + https://www.e-partners.cl + mailto:comunicaciones@pkichile.cl + https://www.e-partners.cl + mailto:comunicaciones@pkichile.cl + + + + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + PAPERLESS ROOT CA + PAPERLESS ROOT CA + PAPERLESS ROOT CA + PAPERLESS ROOT CA + + + +MIIElDCCA3ygAwIBAgIQQFBM5/64KptMuFtdx1vd5zANBgkqhkiG9w0BAQsFADCBvDELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzESMBAGA1UEChMJUEFQRVJMRVNTMSAwHgYDVQQLExdBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYTEpMCcGCSqGSIb3DQEJARYaY29tdW5pY2FjaW9uZXNAcGtpY2hpbGUuY2wxGjAYBgNVBAMTEVBBUEVSTEVTUyBST09UIENBMB4XDTEzMDIyMjE1MDEzNVoXDTQ3MDQxMjIyNTY1NlowgbwxCzAJBgNVBAYTAkNMMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFuYTERMA8GA1UEBxMIU2FudGlhZ28xEjAQBgNVBAoTCVBBUEVSTEVTUzEgMB4GA1UECxMXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExKTAnBgkqhkiG9w0BCQEWGmNvbXVuaWNhY2lvbmVzQHBraWNoaWxlLmNsMRowGAYDVQQDExFQQVBFUkxFU1MgUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK+y5zx2yHEeyWhV7WPzk/vQGjRrcmp9uKyJKiRARBEG5gQyJWOi+zReaenfHoI/9ZRJ1xSmPdhNGVOKWmZuHQi8IlhqxRpvkewu/1f6jTswbHHtlv3+0j185M3q/X3YLcH5bK9ES5O0gXwBVd3tZur++F9WmLDG4s9rNQ4XmeKbiH5FjcA0qM57ga/UnTG2oLMw14UTNz6kLQ+Hv9ciCYC5m8/mqTpzxFeY843sM9/+JnJur64tAg2TSyQON+QAmk9JRl2/D4ediyLGcJ/HBKY18Xr09uW+gxVWdIbKiAMpFegVH9sk9w/JEkeBxQiFW+tkfRG0DnW+PNFMHQSdg1kCAwEAAaOBjzCBjDATBgkrBgEEAYI3FAIEBh4EAEMAQTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUHBg2MP/qFOIfXfaJ58UQDC8E8SEwEAYJKwYBBAGCNxUBBAMCAQEwIwYJKwYBBAGCNxUCBBYEFN9lLSc61+R6UTxNKIGexte1r/K3MA0GCSqGSIb3DQEBCwUAA4IBAQBq9jdRvI3Dqn0ChUiMDv+CulCPUfmtDvThkbmeqBbEvSoPwZwJu0R0tVt++0cxEpPMa4ah8u5W8HCnCMN9Wmtawg70K+8Y1ogS7hyt0N3rsjCY0CM/xbeyhnqEHGyZlRTbQ5eSk96fB14E0oG0vs78aZzio7w0Xh/LyBQ7RfWI4Q0T7XlbJF9gaCha8EXIJrVXtW8EGBcHJrWOYH8f2me3avjVcE6WV83FKUQbjBv7vGvGV7hc0Bq1RRle24GFK8TOmXVifBdVfCiWBIwU3cWFYkyOPNWOyuefpPjht5D2X8T7FseWwwy0aJGWs3ugn1GMSXrIwXKCPSH27BEddMQb + + +CN=PAPERLESS ROOT CA, EMAILADDRESS=comunicaciones@pkichile.cl, OU=Autoridad Certificadora, O=PAPERLESS, L=Santiago, ST=Region Metropolitana, C=CL + + +HBg2MP/qFOIfXfaJ58UQDC8E8SE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2013-02-22T11:01:35Z + + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + + + https://www.e-partners.cl + https://www.e-partners.cl + https://www.e-partners.cl + https://www.e-partners.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + PAPERLESS CA FIRMA ELECTRONICA AVANZADA + PAPERLESS CA FIRMA ELECTRONICA AVANZADA + PAPERLESS CA FIRMA ELECTRONICA AVANZADA + PAPERLESS CA FIRMA ELECTRONICA AVANZADA + + + +MIIEyDCCA7CgAwIBAgIKFUOPJAABAAAADjANBgkqhkiG9w0BAQsFADCBvDELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzESMBAGA1UEChMJUEFQRVJMRVNTMSAwHgYDVQQLExdBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYTEpMCcGCSqGSIb3DQEJARYaY29tdW5pY2FjaW9uZXNAcGtpY2hpbGUuY2wxGjAYBgNVBAMTEVBBUEVSTEVTUyBST09UIENBMB4XDTE3MDQxMjIyNTkzOVoXDTQyMDQxMjIzMDkzOVowgdIxCzAJBgNVBAYTAkNMMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFuYTERMA8GA1UEBxMIU2FudGlhZ28xEjAQBgNVBAoTCVBBUEVSTEVTUzEgMB4GA1UECxMXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExMDAuBgNVBAMTJ1BBUEVSTEVTUyBDQSBGSVJNQSBFTEVDVFJPTklDQSBBVkFOWkFEQTEpMCcGCSqGSIb3DQEJARYaY29tdW5pY2FjaW9uZXNAcGtpY2hpbGUuY2wwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSe2/GPt/pFO94bzp/p4lYRtC4BmlkLsddsEGgka/ZKXpvt6M9so/FY1hGWp3LRrkQWEyNZ8AYeTqsTxj/KD1XfSObUNbsCXLHeEhXSp//dT2UZn8IWtlNijEdDik9VellbI0YbI5Ru/tl71ic9BMv0ecXuSfRwPosFm9dDOMITzkTl5QIItod2CTIm8M4bb4zo6eJHGi4befUdaoInPR7+KZ0l3+Kg5a7rJZU+hujBzdrq9xwWsr6uKHG4yW7EKFNNpbDqobkoso/3qca/CkOzHzpXiZ7cmg/B2cU73afx296sxp+7nZTSL5snKhz7AA1eKqp6ePl/b6+GNR8vrdnAgMBAAGjgbMwgbAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUYDBKuITWNdm7HG9iGyEClyGJ8MwwCwYDVR0PBAQDAgGGMBAGCSsGAQQBgjcVAQQDAgEBMCMGCSsGAQQBgjcVAgQWBBQfWlDBWBWHF0etNDDyYIbz1v6ddzAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTAfBgNVHSMEGDAWgBQcGDYw/+oU4h9d9onnxRAMLwTxITANBgkqhkiG9w0BAQsFAAOCAQEAL/i4dFIfrDkjMH5Nibq1rjQIHgOmgNe53zzojk4wQfU0aSwyaZ20bZYaLUS93McGrkutePC3xLmVxu+5l5ycFlLFOBClSyNTwtq+6Y2K4JwQNvDsdGPyDt459aRiKs5ORxbuFBPA2hk7RwKaSuyvQCXX8pP641Q1f8GQLeCwl4uBbtjJNR0wo5nStTDePwELpVvYkGPYRAvYoEjiKSiFR2aVHezyEMC2fBFj+lwFrHWRTOJVUUj6Y+z9C0FI+ZckP7H9HYB9PRB+0SaEz4nxy8zrpj4R5BZ3Gd9B8pWHmQMCIM+R9v8Qt6UZSr6bOw7sfAu34sEPOgZdxy9FO2I4IA== + + +EMAILADDRESS=comunicaciones@pkichile.cl, CN=PAPERLESS CA FIRMA ELECTRONICA AVANZADA, OU=Autoridad Certificadora, O=PAPERLESS, L=Santiago, ST=Region Metropolitana, C=CL + + +YDBKuITWNdm7HG9iGyEClyGJ8Mw= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2017-04-12T18:59:39Z + + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + https://www.e-partners.cl/politicas/ + + + https://www.e-partners.cl + https://www.e-partners.cl + https://www.e-partners.cl + https://www.e-partners.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + + + + TOC + TOC + TOC + TOC + + + TOC S.A. + RUT 76085903-6 + Mediante Resolución Exenta N° 202100976, de fecha 1 de junio de 2021, de la Subsecretaría de Economía y Empresas de Menor Tamaño, ratificada por Resolución Ministerial Exenta N° 5, de fecha 26 de julio de 2021, del Ministerio de Economía, Fomento y Turismo, se dejó sin efecto la acreditación de la empresa TOC S.A. como Prestador de Servicios de Certificación de Firma Electrónica Avanzada, disponiéndose además la cancelación de su inscripción en el registro de la Entidad Acreditadora. + TOC S.A. + NTRCL-760859036 + By means of Exempt Resolution No. 202100976, dated June 1, 2021, issued by the Undersecretariat of Economy and Small Enterprises, and ratified by Ministerial Exempt Resolution No. 5, dated July 26, 2021, of the Ministry of Economy, Development and Tourism, the accreditation of the company TOC S.A. as a Certification Service Provider for Advanced Electronic Signatures was revoked. Furthermore, the cancellation of its registration in the Accrediting Entity’s registry was ordered. + TOC S.A. + RUT 76.085903-6 + Por meio da Resolução Exenta nº 202100976, de 1º de junho de 2021, da Subsecretaria de Economia e Pequenas Empresas, ratificada pela Resolução Ministerial Exenta nº 5, de 26 de julho de 2021, do Ministério da Economia, Fomento e Turismo, foi revogada a acreditação da empresa TOC S.A. como Prestadora de Serviços de Certificação de Assinatura Eletrônica Avançada, sendo também determinada a exclusão de sua inscrição no registro da Entidade Acreditadora. + TOC S.A. + RUT 76085903-6 + He’iháicha Resolución Exenta N° 202100976, ára 1 jasypoteĩ ary 2021, ome’ẽva Subsecretaría de Economía ha Mymba Apoha Michĩva, ha oñemoneĩva avei Resolución Ministerial Exenta N° 5, ára 26 jasypokõi ary 2021, Ministerio de Economía, Fomento ha Turismo rehegua, oñemboguepa pe empresa TOC S.A. rehe oñemoneĩva Firma Electrónica Avanzada rehegua mbojeroviaha rembiapo ramo. Avei, oñembogue ijeguatávo héra Entidad Acreditadora kuatia’atãme. + + + + + Suecia 0142, oficina 202, Providencia + Santiago + Región Metropolitana + 7500000 + CL + + + Sweden 0142, office 202, Providence + Santiago + Región Metropolitana + 7500000 + CL + + + Suécia 0142, escritório 202, Providence + Santiago + Región Metropolitana + 7500000 + CL + + + Suecia 0142, oficina 202, Providencia-pe + Santiago + Región Metropolitana + 7500000 + CL + + + + https://www.toc.cl + mailto:soportepki@toc.cl + https://www.toc.cl + mailto:soportepki@toc.cl + https://www.toc.cl + mailto:soportepki@toc.cl + https://www.toc.cl + mailto:soportepki@toc.cl + + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TOC ROOT CA + TOC ROOT CA + TOC ROOT CA + TOC ROOT CA + + + +MIIEQzCCAyugAwIBAgIQMvhDFx4w4LtFyCnJDQoCljANBgkqhkiG9w0BAQsFADCBpzELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEMMAoGA1UEChMDVE9DMSAwHgYDVQQLExdBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYTEgMB4GCSqGSIb3DQEJARYRc29wb3J0ZXBraUB0b2MuY2wxFDASBgNVBAMTC1RPQyBST09UIENBMB4XDTE2MDgxMTE0Mjk1MVoXDTQ2MDgxMTE0Mzk1MVowgacxCzAJBgNVBAYTAkNMMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFuYTERMA8GA1UEBxMIU2FudGlhZ28xDDAKBgNVBAoTA1RPQzEgMB4GA1UECxMXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExIDAeBgkqhkiG9w0BCQEWEXNvcG9ydGVwa2lAdG9jLmNsMRQwEgYDVQQDEwtUT0MgUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMPF4YObCNonIIK7i+d+uZmZkAmN8hv6brULxLRudUJY9EaNwMY8b5IbHfyyPPc3aTVJNzQ6AFodh81j+/K6Ih8jg+ipo/8KBG02rSxacvdZylFiyRxW1pwboR+opW635Ds7MfRkZoq36D/8sHQ36coWwE5Ee/iA1aOe3JkpER6OsTz0sCLdKuYxzuhXFa/AqKyUFS3zhD1kWwkV80+YbimCFT4FHrGjSLl2InMSiaKbhMuGvARH212qg9LhqTfIYelAp7Z8GD9ErviEuvpJ3j2kVOb7aTbrWclIAGAn3cgPIHVmyP+BGz4FfZ4f/36lzn2jMdkd1dkpeA3yTBqYxckCAwEAAaNpMGcwEwYJKwYBBAGCNxQCBAYeBABDAEEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJFTFQRLZ+gV3gRB/0va9fDR2xD0MBAGCSsGAQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBCwUAA4IBAQBO9YpDhHeV/cYX8m3mxhbEHNsyHM7D6KNI77hq07OO1S2wDO2uFquQI3yBQenVgvM1OqRnM5VG45rJ7xwvRH+9x8n2P8Z7nnUBZxqAM+RjG3zd1x0Kg4OgLggxEzrSl1OJlbFDspO/b/XxSKPVF4CvHHXOjIYgPKqf14vAOIglX5iew5QnW5jODMkTD3TGHLeo6cH6FlzV+L5XhYqIgqU5wBTAa2b/bsChHFRABYYMhAU74qZnGIBpzlVCRwoBUfmPG0mgCNx2NnIOQzfYy3V+gysMyZhREXm72+2PGjVFjB41TAZ1F+eF+ShckHBVJzpBtm/hOXA7QFjUqjX0iMd5 + + +CN=TOC ROOT CA, EMAILADDRESS=soportepki@toc.cl, OU=Autoridad Certificadora, O=TOC, L=Santiago, ST=Region Metropolitana, C=CL + + +kVMVBEtn6BXeBEH/S9r18NHbEPQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2016-08-11T10:29:51Z + + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TOC FIRMA ELECTRONICA AVANZADA CA + TOC FIRMA ELECTRONICA AVANZADA CA + TOC FIRMA ELECTRONICA AVANZADA CA + TOC FIRMA ELECTRONICA AVANZADA CA + + + +MIIEgjCCA2qgAwIBAgITKwAAAAMtLY/67qgVFQAAAAAAAzANBgkqhkiG9w0BAQsFADCBpzELMAkGA1UEBhMCQ0wxHTAbBgNVBAgTFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHEwhTYW50aWFnbzEMMAoGA1UEChMDVE9DMSAwHgYDVQQLExdBdXRvcmlkYWQgQ2VydGlmaWNhZG9yYTEgMB4GCSqGSIb3DQEJARYRc29wb3J0ZXBraUB0b2MuY2wxFDASBgNVBAMTC1RPQyBST09UIENBMB4XDTE2MDgxMTE0NTAyMloXDTQxMDgxMTE1MDAyMlowgb0xCzAJBgNVBAYTAkNMMR0wGwYDVQQIExRSZWdpb24gTWV0cm9wb2xpdGFuYTERMA8GA1UEBxMIU2FudGlhZ28xDDAKBgNVBAoTA1RPQzEgMB4GA1UECxMXQXV0b3JpZGFkIENlcnRpZmljYWRvcmExKjAoBgNVBAMTIVRPQyBGSVJNQSBFTEVDVFJPTklDQSBBVkFOWkFEQSBDQTEgMB4GCSqGSIb3DQEJARYRc29wb3J0ZXBraUB0b2MuY2wwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6jzbUCmf7ObF9rAp+Zl6nsDuImer5KjgZxfaWxHdDlR4R3U8XSuEMNQ0/r/l27jiaKhsG0Nn4j/FHZsypt+GT10P6RFv1KtUVmkRG2TW3WPU12TG0/D5hEMio8mRk0c8iL0iCXTn8SQxe2Whb2zaSwejL/MMC06+a4zifP00pSYkOM1l6SnZ27L/U4nhHAf0TB1MGR4h4uFlDPstTbiX7S1b9ri0xfL6BRv3iR95qVoFf+CvLV8SsiznSWQFQ3XGzKxNSvb9roH7ewI9WLH+5co3K3durfuAm+p2NyIqf9/2+ghW55BZkeWFmm36evSsnXHqNtdVqVW5QqWW4sn7LAgMBAAGjgY4wgYswEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFCagogRTAvAttqd41B57HHVum6rdMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFJFTFQRLZ+gV3gRB/0va9fDR2xD0MA0GCSqGSIb3DQEBCwUAA4IBAQBooqhAART8gMwdHfqzSNp6Y5kA2VnbirbLHBRCU/J2jnluUyZCUyTvOGUnxMPKJ3j3DXMBtSB4fuD6NVwaTdgKfns2uf3z/1SrvV8ZVh6Xw6ecrQ0dqtoP4hnyC+DFJcKKSIGYfX1v8kvXLziNaZriplY9SdFbePmC7j5L4FOXqDBStYvCm3Z9Dmv9Iks/6zWdFF5tNXk6jLxrAQUfPweGT0+IlaZUYMgZtSsEmm6JcsCPwt8CTy4jrrk6hE6DMWeEt9lLdf85vprgtJwCnRDgr2+GrlJLugmHaiHEyAocv0Bl0IIAs1UIGoAWGjZgClAALevr6CzhbOnM1s4TF2aI + + +EMAILADDRESS=soportepki@toc.cl, CN=TOC FIRMA ELECTRONICA AVANZADA CA, OU=Autoridad Certificadora, O=TOC, L=Santiago, ST=Region Metropolitana, C=CL + + +JqCiBFMC8C22p3jUHnscdW6bqt0= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2016-08-11T10:50:22Z + + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TOC FIRMA ELECTRONICA AVANZADA - G2 + TOC FIRMA ELECTRONICA AVANZADA - G2 + TOC FIRMA ELECTRONICA AVANZADA - G2 + TOC FIRMA ELECTRONICA AVANZADA - G2 + + + +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 + + +C=CL, ST=Region Metropolitana, L=Santiago, O=TOC SA, OU=Autoridad Certificadora, SERIALNUMBER=76085903-6, CN=TOC FIRMA ELECTRONICA AVANZADA - G2, EMAILADDRESS=soportepki@toc.cl + + +PuS7wchaDM9gHSEx+MbYCf5TSrE= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2018-03-07T15:50:48Z + + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TSA/QTST + + TOC Autoridad de Sello de Tiempo (TSA) - G1 + TOC Autoridad de Sello de Tiempo (TSA) - G1 + TOC Autoridad de Sello de Tiempo (TSA) - G1 + TOC Autoridad de Sello de Tiempo (TSA) - G1 + + + +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 + + +C=CL, ST=Region Metropolitana, L=Santiago, O=TOC SA, OU=Autoridad Certificadora, SERIALNUMBER=76085903-6, CN=TOC Autoridad de Sello de Tiempo (TSA) - G1, EMAILADDRESS=soportepki@toc.cl + + +R/pwTnskjNdHNS3DbKWYoMFRchU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2018-03-07T15:17:34Z + + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TOC FIRMA ELECTRONICA AVANZADA BIOMETRICA - G1 + TOC FIRMA ELECTRONICA AVANZADA BIOMETRICA - G1 + TOC FIRMA ELECTRONICA AVANZADA BIOMETRICA - G1 + TOC FIRMA ELECTRONICA AVANZADA BIOMETRICA - G1 + + + +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 + + +C=CL, ST=Region Metropolitana, L=Santiago, O=TOC SA, OU=Autoridad Certificadora, SERIALNUMBER=76085903-6, CN=TOC FIRMA ELECTRONICA AVANZADA BIOMETRICA - G1, EMAILADDRESS=soportepki@toc.cl + + +r3RHrNY2DdrQeaP39WrAf2IlbkQ= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2018-03-07T15:40:36Z + + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + http://firma.toc.cl/cps + + + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + https://www.toc.cl + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + +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-06-06T19:53:33ZybROtLUNXGTou+6FQVifbLvhveI=1.2.840.113549.1.9.1=#1613652d7369676e40657369676e2d6c612e636f6d,CN=E-Sign Class 3 Firma Electronica Avanzada CA,OU=Terms of use at www.esign-la.com/acuerdoterceros,O=E-Sign S.A.,C=CL2871894336667731298text/xml \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pnbfcgijbfppbcjloeffpdpibddfhdhh b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pnbfcgijbfppbcjloeffpdpibddfhdhh new file mode 100644 index 0000000000..c137fceb32 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/SingleFileLotlServiceTest/pnbfcgijbfppbcjloeffpdpibddfhdhh @@ -0,0 +1,383 @@ + + + 5 + 6 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/ARlist + + Subsecretaría de Innovación + Undersecretary of Innovation + Subsecretaria de Inovação + Subsecretaría de Innovación + + + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + + https://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + http://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + http://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + http://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + + + + AR:La lista de confianza contiene informaciones referentes a la Ley de Firma Digital N°25506. + AR:This TSL is in compliance with Firma Digital Law N°25506. + + + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/ARdetermination + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + + AR + + El marco legal aplicable a la presente implementación de esta TSL (Trusted-Service Status List) es el Acuerdo del Mercosur y las directrices establecidas por Subsecretaría de Innovación + The legal framework applicable to the present implementation of this TSL (Trusted-Service Status List) is the Mercosur Agreement and the guidelines established by the Undersecretariat of Innovation + O marco legal aplicável à presente implementação desta TSL (Trusted-Service Status List) é o Acordo do Mercosul e as diretrizes estabelecidas pela Subsecretaria de Inovação + El marco legal aplicable a la presente implementación de esta TSL (Trusted-Service Status List) es el Acuerdo del Mercosur y las directrices establecidas por Subsecretaría de Innovación + + 65535 + + + + + + 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 + + + + https://pki.jgm.gov.ar/TSL/tsl-MB.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/MBlistofthelists + + + MB + + + application/vnd.etsi.tsl+xml + + + + Secretaría del Mercosur + Secretaría do Mercosul + Mercosur Secretariat + Secretaría del Mercosur + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/MB + + + + + + + + + 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 + + + + https://pki.jgm.gov.ar/TSL/tsl-AR.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/ARlist + + + AR + + + application/vnd.etsi.tsl+xml + + + + Subsecretaría de Innovación + Undersecretary of Innovation + Subsecretaria de Inovação + Subsecretaría de Innovación + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/AR + + + + + + + + + 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 + + + + https://pki.jgm.gov.ar/TSL/tsl-CL.xml + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/CLlist + + + CL + + + application/vnd.etsi.tsl+xml + + + + Subsecretaría de Economía y Empresas de Menor Tamaño + Subsecretaria de Economia e Pequenas Empresas + Subsecretario de Economía ha Empresa Michîvéva + Undersecretary of Economy and Smaller Companies + + + + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/CL + + + + + + 2025-07-16T03:00:00Z + + 2026-01-16T02:59:59Z + + + https://pki.jgm.gov.ar/TSL/tsl-AR.xml + + + + + + + Infraestructura de Firma Digital de la República Argentina + Digital Signature Infrastructure of the Argentine Republic + Infraestrutura de Assinatura Digital da República Argentina + Infraestructura de Firma Digital de la República Argentina + + + SSI + SSI + SSI + SSI + + + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + Godoy Cruz N° 2320 + Ciudad Autónoma de Buenos Aires + Ciudad Autónoma de Buenos Aires + C1425FQD + AR + + + + https://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + https://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + https://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + https://www.argentina.gob.ar/jefatura/innovacion-ciencia-y-tecnologia/innovacion + + + + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + https://www.argentina.gob.ar/jefatura/innovacion-publica/innovacion-administrativa/firma-digital/normativa-de-firma-digital + + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + + AC Raíz de la República Argentina + Root Certificate Authority of Argentina + AC Raiz da República Argentina + AC Raíz de la República Argentina + + + +MIIF0DCCA7igAwIBAgIQOCMpE8OBZZpHt38BVXeV8jANBgkqhkiG9w0BAQ0FADCBgTELMAkGA1UEBhMCQVIxRDBCBgNVBAoMO0luZnJhZXN0cnVjdHVyYSBkZSBGaXJtYSBEaWdpdGFsIGRlIGxhIFJlcMO6YmxpY2EgQXJnZW50aW5hMSwwKgYDVQQDDCNBQyBSYcOteiBkZSBsYSBSZXDDumJsaWNhIEFyZ2VudGluYTAeFw0xNjA2MzAxNDU3NThaFw0zNjA2MzAxNTA3NTdaMIGBMQswCQYDVQQGEwJBUjFEMEIGA1UECgw7SW5mcmFlc3RydWN0dXJhIGRlIEZpcm1hIERpZ2l0YWwgZGUgbGEgUmVww7pibGljYSBBcmdlbnRpbmExLDAqBgNVBAMMI0FDIFJhw616IGRlIGxhIFJlcMO6YmxpY2EgQXJnZW50aW5hMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA79XGwPO0DTdGz1DSsBkuZcpz8zA8Gau/tsx8UGaqg26PJfTiQ0zr10Vnu1MfIA2YLE+7RoKFn3JCfCuktcX0o/r+qplwqOAstrBYSs94pW2rBKbLuEEPQK+tqFFeuQEE0w6vufZoYR8KK/ONbFo0HMSAOsxkb+kkkGpZjPLMOwj7EKC8lKrHEhNf344a7dIuLlEKn5og5smByRMQr7rf1/QY0r2E8muU0greQ5l7Jff6EH8HTQddDQ0rHnbOqtXGPCJ3w+3qQm4rIF+EDO23TXu3DGsrJQreFgN39JOvLYabNuBEM1q+RDRenGZ0wJIkaBeLjDafR6qK6/aWn5kITYWomOgeMkELph1lsnacTIHLt8qwhjTrguQk223yxB6RBVrfAOdexSLpKPu5czioUZKB7sNKXByfOO1zYh4rRHaOLsABppGYQR0WkTogR1RLlwtxm4pOEAFwqZQDwCpDSU4D0ePYFARZP6xRsk5fQPYAvbykXn07cfYsuCEi1eJCK4U+TGFwDhYhYdjRHQzkeA1Lnyi9OFTEW0buzyH/X6SSX5q96++GHxx2Rrs5uTjMLA4HALCJ0QekQ7TwkpHcX3RfBMRaYRACw3INjkDrJUgad0yY5xtOI3AUPmVHWIilymHFPPs7j8aubFYMDTXR5BmStXfcEGrCCvK7ZQiLz90CAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLge4vs4Nm1/ViXWOUaSCrcWpuDVMA0GCSqGSIb3DQEBDQUAA4ICAQDhfD9S27prvuZlsQKJ4ROwYLVYIcUrJy83J6uCFeaft1j+Rn28s0OS1QgSL16oyGwerUdOGuAhSSUoLdrSPgU1BM8OvKpDtiAbJv20odbBxiWeUSvfTxt5nmYlR4PTJhz2GK1BUP3C4Rk82bz1axV0Hbv6aoMftq6HBpU0J+bTRRWC5i+Q6HcGnCXjTeInpXS7exwbL6DdCDqHXjcVVe+e298KpxMHo+/kHPEYNW51fwgRh/dQ1AVyLxloemtzejAkw7QAzFp6ntiMj1p7JYcTUzpUfpzaUT5ZAeAVy+SsM7wUL4v6y4/+BJkCRQeRzXz7VMVF0QKOO0O/VW+NC1KzDFfmq4PLr+DxCqCTWZbVACAnxAPLtQqoIpztRRzndMeItctmJmyalpej4n+c7ss1G1+0cLxrG0Jd6i/d9FgCA6XWck4LAlq1mo/3bg1vYiJcQJXjdL5yl7tZXUvMNBrjAR8/hskijKHCkuMqUhN9v6r6Tgkger7eJn7m7MesD1s5kdCtvBnlroqKXo73nYL8M9b4HOxrA4VDqFhkuWQLrsW2IrZY437v2stO57xY9W2AIi31OiQ6qYdKbWTJIvKbQejFg5j2pYeU8uGjp3Zt1b9I8rsKE5Ofay0+yUcaW5TICe0X50blfLljPpVL8SKxIG6up/+5JaQ+sx15qaTA4g== + + +CN=AC Raíz de la República Argentina, O=Infraestructura de Firma Digital de la República Argentina, C=AR + + +uB7i+zg2bX9WJdY5RpIKtxam4NU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2016-06-30T14:57:58Z + + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + + + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + https://www.argentina.gob.ar/firmadigital/politicasdecertificacion + + + + + http://uri.etsi.org/TrstSvc/Svctype/NationalRootCA-QC + +AC Raíz de la República Argentina +Root Certificate Authority of Argentina +AC Raiz da República Argentina +AC Raíz de la República Argentina + + + + CN=AC Raíz de la República Argentina, O=Infraestructura de Firma Digital de la República Argentina, C=AR + + + uB7i+zg2bX9WJdY5RpIKtxam4NU= + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/recognisedatnationallevel + 2007-11-22T13:25:39Z + + + + + + + + + + + + + + + +2ucV4a/J2l4bMmQILcI6vzuxhUDKDdzGL+3uWD48Q0s= + + + +UAT//wjI1Lx6GfFssqFofJMh2QN4qsFGliK93KTLx3M= + + + +01/GI/LpBvYqv9ZkfcTcMXlNcb//EwPA5/8Y+R4HERhcfpDklOaNXFbBzWRANBty56QIBwDix0uW +TT82PsaPBkzuUp4/TcqwSB0NTORVNdsnv0VgskEVZDnnaksrZcoikJolTDUhdT8Dsz9CL0AkTpOq +aa3X4krX81r6VRC3dUvKelCh/HHgFYg0FUD0q8A6v+//rBNWwhked/rHmev/cmTadTxxl5E4IEUC +FaY1yeRl2sNV+z+Ixy3DuWCmR52ZqzZQWFu0ccA9QTfnfAMY3bVB6LiuZcW9QmjxvtzKbZVkqJX8 +w46AJ041IaLeQA2+q34540wKiZ857DBYOT53uQ== + + + + +MIIH0jCCBbqgAwIBAgITfwAatU+P4G1P34vbHgABABq1TzANBgkqhkiG9w0BAQsFADCCAUwxCzAJ +BgNVBAYTAkFSMSkwJwYDVQQIDCBDaXVkYWQgQXV0w7Nub21hIGRlIEJ1ZW5vcyBBaXJlczEzMDEG +A1UECwwqU3Vic2VjcmV0YXLDrWEgZGUgVGVjbm9sb2fDrWFzIGRlIEdlc3Rpw7NuMSkwJwYDVQQL +DCBTZWNyZXRhcsOtYSBkZSBHZXN0acOzbiBQw7pibGljYTE5MDcGA1UECwwwT2ZpY2luYSBOYWNp +b25hbCBkZSBUZWNub2xvZ8OtYXMgZGUgSW5mb3JtYWNpw7NuMSowKAYDVQQKDCFKZWZhdHVyYSBk +ZSBHYWJpbmV0ZSBkZSBNaW5pc3Ryb3MxGTAXBgNVBAUTEENVSVQgMzA2ODA2MDQ1NzIxMDAuBgNV +BAMMJ0F1dG9yaWRhZCBDZXJ0aWZpY2FudGUgZGUgRmlybWEgRGlnaXRhbDAeFw0yNTA3MTYxNzU0 +MzFaFw0yNzA3MTYxNzU0MzFaMEkxGTAXBgNVBAUTEENVSUwgMjAyODQyMTAzMzcxCzAJBgNVBAYT +AkFSMR8wHQYDVQQDExZDQVJSSVpPIEVucmlxdWUgTWFudWVsMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4SVCvix4shhKgqI/mR0S5br+LvYUDb2BYBAxvYgZ3MXzw3jyNB+UTCubWP01 +wawXTlPIr5HXoRVK7fIJVe5MD5wzqZ2s5yf2Hoy1MVYrNGv/CpY6jyqsy3momOeuiekjdMqLlnpy +BQbPoCBTyigrwuyqUVVwjGIwAJniCiT10Vmbk7uQmdJZLHC8zTCLZWlMX6pGLbHSfBThoeII1uc4 +FUuUkRJWsovGldMPzVkqadF8r524sllgp/+uRJGysa+cWm1+0e7aXGHcbn+VOZdMwW0fn0ghGRpZ +xiKsosVBhRIb/8D05pbFbFqHSh8PRAiUG02x/H7yqhtIPtWw1YdkRQIDAQABo4ICrDCCAqgwDgYD +VR0PAQH/BAQDAgTwMCQGCCsGAQUFBwEDBBgwFjAUBggrBgEFBQcLAjAIBgZgIAEKAgIwHQYDVR0O +BBYEFG5jlfV+0DMzizj9EmgBdnMPukyDMB0GA1UdEQQWMBSBEnFjYXJyaXpvQGdtYWlsLmNvbTAf +BgNVHSMEGDAWgBSMG/0ubHBsM5IabSTMm8w/mcXrqDBXBgNVHR8EUDBOMEygSqBIhiBodHRwOi8v +cGtpLmpnbS5nb3YuYXIvY3JsL0ZELmNybIYkaHR0cDovL3BraWNvbnQuamdtLmdvdi5hci9jcmwv +RkQuY3JsMIHWBggrBgEFBQcBAQSByTCBxjA1BggrBgEFBQcwAoYpaHR0cDovL3BraS5qZ20uZ292 +LmFyL2FpYS9jYWZkT05USSgxKS5jcnQwOQYIKwYBBQUHMAKGLWh0dHA6Ly9wa2ljb250LmpnbS5n +b3YuYXIvYWlhL2NhZmRPTlRJKDEpLmNydDAmBggrBgEFBQcwAYYaaHR0cDovL3BraS5qZ20uZ292 +LmFyL29jc3AwKgYIKwYBBQUHMAGGHmh0dHA6Ly9wa2ljb250LmpnbS5nb3YuYXIvb2NzcDAMBgNV +HRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAnBgkrBgEEAYI3FQoEGjAY +MAoGCCsGAQUFBwMCMAoGCCsGAQUFBwMEMEQGCSqGSIb3DQEJDwQ3MDUwDgYIKoZIhvcNAwICAgCA +MA4GCCqGSIb3DQMEAgIAgDAHBgUrDgMCBzAKBggqhkiG9w0DBzBDBgNVHSAEPDA6MDgGBWAgAQED +MC8wLQYIKwYBBQUHAgEWIWh0dHA6Ly9wa2kuamdtLmdvdi5hci9jcHMvY3BzLnBkZjANBgkqhkiG +9w0BAQsFAAOCAgEAyCrHfYvfMKXqrVbxGlAySQSVsDz7fZrYxKU5qXbB/+jCj1IY0ENHLN5q77HY +M7eomHM8nX9zpXl0e4nV5PLaSwykmW9ERw6EdqhzzcFGJopYriLfQMbVGvhsJVY+/zhQ4//RwFle +SlkZUZZt92qEQwuau/DLdCfOGq/Xm0c1qpx+I8+sdQKRz7x3iLLExHa7U+dO6pe/ropNSJabKyP5 +ZOXHa2B4s2LRx/qTScfPhg8B06nrLLWnG0QMgpjfEWHL3uPcNI9iMJxRTp7S6Q+a8fQK4Jv2WyLy +9m2ETKAw5HpF0Mbu6yb9/xNkg/zQCY4Ooy7DHxs67j9ETJ+iP1Fl4+nBFYkCkiqlKreeSicPl+fn +vcXcdDZto3UJBqpbW6PVGaYkUQRy8cgy2FANMS8y6P6u8dddiQ0a4XatvVAUgrDlPKxyYQ0ZK4Hw +ggSqcOklFplKSJZyj0Wt1jqF6dtTjxqaMUvqbco/0Zp8fKtMXlqvNu1DbhpIF0Ast/M8DocHuxTM ++b7B1IYmiSZ292aT1ZVYoFww3o3NQuuxNM7CN8GPOF3a09dptvb1NIyWX54DeRX/HF/V2R92vjvE +ukxaNWIIgv/J496j/Hp+p/N5OR0TEIy42DMj1UHWpCy9CGWYS9sYRW8d1EKUu7JHMFkbRdZ4b22b +uRsuF6vI08u1AQE= + + + +2025-07-16T16:01:27.377-03:00odPi324ZEMI7hDq72YnrKLBodZfCkU78Rbo+fm0nMBY=CN=Autoridad Certificante de Firma Digital,2.5.4.5=#131043554954203330363830363034353732,O=Jefatura de Gabinete de Ministros,OU=Oficina Nacional de Tecnologías de Información,OU=Secretaría de Gestión Pública,OU=Subsecretaría de Tecnologías de Gestión,ST=Ciudad Autónoma de Buenos Aires,C=AR2832203728558305937781262908579699388980049231text/xml + \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.1-CONCLUSION.txt b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.1-CONCLUSION.txt new file mode 100644 index 0000000000..07eb1015f8 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.1-CONCLUSION.txt @@ -0,0 +1 @@ +QESig \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.2-CONCLUSION.txt b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.2-CONCLUSION.txt new file mode 100644 index 0000000000..4006299ced --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.1.2-CONCLUSION.txt @@ -0,0 +1 @@ +AdESig \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.2.1-CONCLUSION.txt b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.2.1-CONCLUSION.txt new file mode 100644 index 0000000000..44c2012635 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.2.1-CONCLUSION.txt @@ -0,0 +1 @@ +N/A \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.3.1-CONCLUSION.txt b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.3.1-CONCLUSION.txt new file mode 100644 index 0000000000..07eb1015f8 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/8.3.1-CONCLUSION.txt @@ -0,0 +1 @@ +QESig \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.1.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.1.pem new file mode 100644 index 0000000000..acf713951f --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.1.pem @@ -0,0 +1,40 @@ +-----BEGIN CERTIFICATE----- +MIIETjCCAzagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjExFjAU +BgNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0y +NDEyMjEwMDAwMDdaFw0yNjEyMjEwMDAwMDdaMFYxGDAWBgNVBAMMD0NFUlQtVEVTVC04LjEuMTEa +MBgGA1UECgwRVEw0MSBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJM +VTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJWPqO8niZL9+Yyu+rD9T9LKc5wGschG +gH/7C8agxZoIFUB7EnexRIm7OdmGhuaDYvRUYbZiYtE+EFbfxaCEWG4yDxznG6D4izfWu1ysKlIH +fKsun5xb6wm3MlD7KLkbsM8/7myxOCJAl7QLK+iUEYwj+GFLf7wvGB3Bjp8B0vYJJt7cABLMLa0s +e9jozv9ax4MI9zD/kMzZxhut1bi6c+gr+lNvJmQIZjWkuud/T6g5y0gbQaoSg9Pciej3YryWKckL +QjqxTtBiAAyvH4OI5TYxyP0Im8g/ou5BYZlWLN/O8I7gjDk5X2oT2cx2KLOzxwc0KY8CjHpQhmt8 +77V0dH0CAwEAAaOCAS8wggErMA4GA1UdDwEB/wQEAwIGQDA3BggrBgEFBQcBAwQrMCkwCAYGBACO +RgEBMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATBaBgNVHR8EUzBRME+gTaBLhklodHRw +czovL2VpZGFzLmVjLmV1cm9wYS5ldS9lZmRhL2FwaS92Mi92YWxpZGF0aW9uLXRlc3RzL2NybC9T +REktOC4xLjEuY3JsMGUGCCsGAQUFBwEBBFkwVzBVBggrBgEFBQcwAoZJaHR0cHM6Ly9laWRhcy5l +Yy5ldXJvcGEuZXUvZWZkYS9hcGkvdjIvdmFsaWRhdGlvbi10ZXN0cy9jcnQvU0RJLTguMS4xLmNy +dDAdBgNVHQ4EFgQUkasmqzgnxhrXIhZf1ziXqNyYLBwwDQYJKoZIhvcNAQELBQADggEBAF7gKkws +o1EARd76Pppv2QOxTGR967hju10sToWrQ/H1JGYmY7jrL7f0QfVkpvF+zkClNP5LBFJhuMiJZZDF +IiA7AzQDEBUa69KKoixkI4raOZKYGCLHybT8Q37zed1uaTj+pqIyiB8/A+Dptm2PWT8QmBwXVRcw +L4fZilHm6qmU9vwVZ8Vl7VIMMq8afv7lp0q3iLR3jCsLL6UqmB3r4DRhD8gO4z+S2uOkfraPZBuj +O8d9J2Xd7xfMGodGwxJMvJzUiaBzEjOtaTK0er9ceeuzSG4UbQVWMiVKCboTfLocSTxuBNu5u8Af +BCbnL4qcpR4zC6+awefMVzazgY/b1mw= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjExFjAU +BgNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0y +NDEyMjEwMDAwMDZaFw0yNjEyMjEwMDAwMDZaMEwxEjAQBgNVBAMMCVNESS04LjEuMTEWMBQGA1UE +CgwNVFNQLTQxLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymYvtoDY41ckbhdMWZDTxO+8Ud5CeLdXFgPOcb070OwO +PfjRXRaU7/THN/BQWtZbrdaTpFLSzANlCOriRX1HWcrrvC6kqrbXEWvckiEwDTHabJnN565aZk3K +zR+Ve+PrIlLWs9nZmPHudQRI+VvOnC/9fMQsMlFQLlGIZm63aHq1PWvWWwysJLEIa0bue9mPA00S +nYIWHAP9umwrCQzUEYKRZd4GWTMaRF1Sk08kWG4XWGbTHMLM7YvHdtzDOGIIStlSGo+wOOWw54vz +fXrmsfi1/luTUqF0vG20iJyQfZfqcl3eIbSbdvbBJPXQaJl/wmQTAMIolsktB/AtjxkBvwIDAQAB +o0IwQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFyKmhrzuaxwhOqdBxx8rkzA73lrMA8GA1Ud +EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACiOilchF/Ytz7zOZ0XY+TsMsoPUhc4QcHXn +ZJf33zPi795NW1pRdQh4FadqerexEjjI9UX1kgPqN3Y6VgBOQzqMd+ZNqSSUiyP1xkTynizY85Pt +nGBT/SiHGn+T2GCrG8z2BUOSoLpxRaNM7aOHCPRvrSy1oy6Jump2nC1THBgmG4AHDbnOhUTLYMh3 +cEBTkNp4XTyPCBQozj8n70MchMQ33FTq3M2B0eq2hLgxQpEiBWTYc17zs120HBMOw39IvWpMBBd2 +yD3RQIhaX9hmvMioxDi0TLVpJ+J4NkzoMepdTcwzQoIWU/0lUZUUcnA4xLCq3/D6bnqDRC+sWnsn +4rE= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.2.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.2.pem new file mode 100644 index 0000000000..558defd447 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.1.2.pem @@ -0,0 +1,39 @@ +-----BEGIN CERTIFICATE----- +MIIETjCCAzagAwIBAgIBBTANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjIxFjAUB +gNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0yND +EyMjEwMDAwMDdaFw0yNjEyMjEwMDAwMDdaMFYxGDAWBgNVBAMMD0NFUlQtVEVTVC04LjEuMjEaMBg +GA1UECgwRVEw0MSBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMv3UodtocM2FgeU+HzS46B6mS8RAetlPjmLc +Dui+en1fZ3pMPhVDKr8o5NwAEOrPth4tuOkQFOaqcYGH/PRRHdD5aQx9v9ikZ9rVwGQOtbWxRX1DJ +eYmhO/8eZ7+/YJdRQMEmgzsQpsvT890o1MRbcrd0x2u4EKZ0e3zHtTnDOdzK5GIoL+2yyKT6qvxyY +WWP83Q6AP+D8dJDq9nmyZ2mvXY0T6vn1L1n45uzqL3PgdG30ofHTL3sf7mZsi9s+c+tdNBle2Mh30 +6HzlcfzvVIIm+Z3xso+/Olz6lFL/mYxL6t8q33RGaApK5752C1FQ9ZJyOUiCOiQnUhx07dotClkCA +wEAAaOCAS8wggErMA4GA1UdDwEB/wQEAwIGQDA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBg +QAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATBaBgNVHR8EUzBRME+gTaBLhklodHRwczovL2VpZGF +zLmVjLmV1cm9wYS5ldS9lZmRhL2FwaS92Mi92YWxpZGF0aW9uLXRlc3RzL2NybC9TREktOC4xLjIu +Y3JsMGUGCCsGAQUFBwEBBFkwVzBVBggrBgEFBQcwAoZJaHR0cHM6Ly9laWRhcy5lYy5ldXJvcGEuZ +XUvZWZkYS9hcGkvdjIvdmFsaWRhdGlvbi10ZXN0cy9jcnQvU0RJLTguMS4yLmNydDAdBgNVHQ4EFg +QU7JpZe3jCJkqio5PyOSzG8zcvQuMwDQYJKoZIhvcNAQELBQADggEBAI/mI9kjAa1Xiwf1/1VvQwH +MtKOotLN83ghDiYXAzzArtOd+lKpeiyBi7yU2ZQLfkmRk1hT750Y/xvDKGvZ/E1fUDKCSeGyjk2pT +G0c4ZvEWDrSLnUxnA/nlktXD900/9ithJCd+t5FqWi9HN1C7FsILF8LZHFZUwaTi/kHJPFdWIDmVM +VeZKEh4TQL0NQqDPEws/wdB9QpsdwJdfkr58rtEJVlhVr0NQvoQTx0TDGVCDhG36Gms0myd+eLMYk +fVPbrarhwIL/sxbh3ChYu0PetVXI7Anpd+6MFMMVj5sk0fYRnl1LpakHyk9UPFFY5mKsi/gXnfO4m +k+V7+zz5SzOE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIBBDANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjIxFjAUB +gNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0yND +EyMjEwMDAwMDdaFw0yNjEyMjEwMDAwMDdaMEwxEjAQBgNVBAMMCVNESS04LjEuMjEWMBQGA1UECgw +NVFNQLTQxLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEArlLmeT2mkca3Lj8M85jhTRZL9wiur54O8bXT8L0NXeDFmTqOF +KtrhFP5hbeL+0GjmZk/kj2sXVPrB/ttohNfu/2nHcNLiHj6bpnjlhPKNUAAMfP5rCZWjNHRvolMpL ++lsFRgOX727M9QIo6KuUorsMymPSO2A71POfS7jf9JgRe4Y0S95m6ua3q82WOrcAs23+b0p197SE8 +4P/9wqg/2EXo/czOabitjMR2sI/55ScMsEuoJaAeFEyw1ugZXijb9Kn6Bu1HIxii99tRvYib3rJ2u +22p8AN3R9QQ/6eZ97GPkD2yW6LNN4yxIwIKVi+hfaqwOSVc1F7uKnRbXs2TOBwIDAQABo0IwQDAOB +gNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFKiRqh76me0qMZ4dBs9b0pJTjjt+MA8GA1UdEwEB/wQFMA +MBAf8wDQYJKoZIhvcNAQELBQADggEBAGuc213tmUAlqE6bbDxgvVsaUvYmiFGPuaBeCdgBHGimTqf +IZjPYLYwrmfHhMvpgrhhulVCN4eFNxAG2jrL+5JIPb/iXsWonL8d5iM6/xb9eAGO375jE0cmmg/7m +JBQ8VxBjb1KDwXGqyLtAWMKQjVZShzLCoiHBr1GvofukPfKQDZd8GbNekNlIyzmcHlDhV7QkHKNQi +JRWLIrrEm3WWhIQjp+TzYCvtOuOiY1K97VnvyAPprXw/goXbp+18HYGbURwmdw5isshJDI+Co5paE +mIs3kxDYL5vDj9RLDdaBiq9aSp85OvWx1nBVFaXmTJUA4FN4z/A0gqBIFZ0jbljmg= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.3.1.pem b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.3.1.pem new file mode 100644 index 0000000000..0491cb7f42 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_certificates/certificate_8.3.1.pem @@ -0,0 +1,39 @@ +-----BEGIN CERTIFICATE----- +MIIETjCCAzagAwIBAgIBAzANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4zLjExFjAUB +gNVBAoMDVRTUC00My4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTAeFw0yND +EyMjEwMDAwMTFaFw0yNjEyMjEwMDAwMTFaMFYxGDAWBgNVBAMMD0NFUlQtVEVTVC04LjMuMTEaMBg +GA1UECgwRVEw0MyBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbcFfF7xsAVwnjRDybwcoTRBpB77cNiC/COs +1U4uZRpHEiEodt21jEjqAepwZHMoC6mL4B6PyMu/MSUClPAcb+1Tolb/KMV07VWamo9JXN2o2E9id +usKofutNP1f/mYb+O9sd6amLacDwQwhpkKmMAHJ4optTPp1u8SzHBz1nq/86MkzUCfLuuKgBdyy2M +NVCJFYAqE5dgs0mcqmpTcQa29ouLFUtcJPlPfnEqA/gtxPzbqGVZQmzyOCQnKXBGh+ttBmMtkTYZz +Kjm7SyHIAMQ6DNaJ8V2SBBzraO3MkWs557eNBPg6GJ4Ivc57mYH8ZBSc+xrSuB+gr7fPo1ZY990CA +wEAAaOCAS8wggErMA4GA1UdDwEB/wQEAwIGQDA3BggrBgEFBQcBAwQrMCkwCAYGBACORgEBMAgGBg +QAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGATBaBgNVHR8EUzBRME+gTaBLhklodHRwczovL2VpZGF +zLmVjLmV1cm9wYS5ldS9lZmRhL2FwaS92Mi92YWxpZGF0aW9uLXRlc3RzL2NybC9TREktOC4zLjEu +Y3JsMGUGCCsGAQUFBwEBBFkwVzBVBggrBgEFBQcwAoZJaHR0cHM6Ly9laWRhcy5lYy5ldXJvcGEuZ +XUvZWZkYS9hcGkvdjIvdmFsaWRhdGlvbi10ZXN0cy9jcnQvU0RJLTguMy4xLmNydDAdBgNVHQ4EFg +QUqmuuuEBe3WPeF3/vTkzrSmKpgdcwDQYJKoZIhvcNAQELBQADggEBACfnhy1pZJZb62ZiQAR/sOb +zMZ0phtvkPuEbN9iZudJ5bAVbD1FjLkERfrhx2ogZbH99Fa16m2BZB5JkBSPTOZmeZXV5vR6UKBWJ +zrC5C8DRfOtLPPv7cYUabDDYgX1IUJAysMAvK2WvNBCWTSoE//OPj14lynQIzkT9RBmtRmfZWjx8X +ag8365gEidazxeG7+8/RjBYkns+NcdXXbU1oDPQtVMBVRczHVcsupV4x7C67e1kWSSeeki+OW9IoF +SHjtJv5CGN5pXYnWyghkfWpkGsu4W1XOG8vmXoqvppciMgVpLZS3Ru3nXzbI6Ygevtuf90sdrpxso +Xdms/0bzI2ns= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4zLjExFjAUB +gNVBAoMDVRTUC00My4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTAeFw0yND +EyMjEwMDAwMTBaFw0yNjEyMjEwMDAwMTBaMEwxEjAQBgNVBAMMCVNESS04LjMuMTEWMBQGA1UECgw +NVFNQLTQzLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkJFMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiDIXTV2TKG/hMHJDTs25XeQfuiUHFrmmqXJoxLTQgnFWKnqpC +WI2cJUDYJvBd6sM5sqHThVKZA4CBV8rcZoAAVB7ut6np114fuACqc6wnOBorYBEeJYiVAEklvEvmA +lwYy2Mq88qR0cOpqUjHGSLPZ0n7Udn642RgNkDIFfdbMxcnS/L6em1vckez6VI9K22DwqFfYAsdvC +HTSbbc2mCXL6I3R1d7pFfE4AVdP9k3lBmrOHYFWX26KenLP1NVl8B6aP59uciyOLsOemaBpICuWuD +rzTWmreux0EtlCcNkvKuEOwqYM75Nu67HxlmUUeH8QQu/I4qqhkMf2oxfed5JwIDAQABo0IwQDAOB +gNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMWrVLaH+EA9bchpo+KZvPRc/xMqMA8GA1UdEwEB/wQFMA +MBAf8wDQYJKoZIhvcNAQELBQADggEBACM0JEF10D2KyYtpQWIlvlgRgh7sSWHLz7FSjbTa0UiVQz+ +0Xw0LdVFielhUO4pWvNf4myKMtVmjYXKTPFCVKZNH60WZvdNbOVuTknDjY4I8+lVe/OQV5vERcbvn +coZ4i0cQDzBX3zbNYiyjMgG8sJe5d8rB8koVQIto8RPaTa9MSVzi+W9yQHxkhsRzM2u/AbqxHCfA1 +/VKUBxoleb/GKBuopiE07G7bgrx/81ww4Ax1BaNGkMSa2NjlwJ0wbTQ04/zZ+pVrHTqYvu5FRGe4P +tRvKnQFvkJ+NTlmI7UfyP3zN1Dgpic8Tsn+iAAj8DOHt9jP5LE5iudz9yMbpZe90s= +-----END CERTIFICATE----- \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/dnnmfemllcleoiieildbliihnjmimgeh b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/dnnmfemllcleoiieildbliihnjmimgeh new file mode 100644 index 0000000000..da37257d1e --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/dnnmfemllcleoiieildbliihnjmimgeh @@ -0,0 +1,149 @@ + + + 6 + 1 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists + + EU Operator name + + + + + TEST + TEST + TEST + EU + + + + mailto:test@test.test + + + + EU: TEST + + + https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=uriserv:OJ.C_.2019.276.01.0001.01.ENG + https://ec.europa.eu/tools/lotl/eu-lotl-legalnotice.html#en + + http://uri.etsi.org/TrstSvc/TrustedList/StatusDetn/EUlistofthelists + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUlistofthelists + + EU + + TEST + + 65535 + + + + + + MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwHhcNMjQxMjIxMDAwMDA2WhcNMjYxMjIxMDAwMDA2WjBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiu8CP3OKq8DMOoJigZH8n1xssQhLtySOJ5tGS6KOWTfDaTl3eq+4svjLzhqGNDgSYwk/khYZEoJntO3lrkDN6KsYSOBDFNpjYpxa7p3EUjuJxDb1clqx27kkuMTIFl5pcs9oNuUORntyZ2SqjqqnqxkjsSpqNPl8nyZc9gaAY13XU4D2ACsRmnpURmkFj4ppMucMjTCeqlFesvJELf06jfJcLHIJU/b2Wx8a20x3nN564anLIpBfL5Ws40ScRywp9tve2M77DXWXhXKSAaE5D7Fnb7NRb/pPbW5sdfjhDoO7EghXsIDKgJPtdJlThikTkGTk59t6IODu9gnZ5x7uvAgMBAAGjITAfMB0GA1UdDgQWBBROJGXazRDpyPzpJpUN2EBep0AzazANBgkqhkiG9w0BAQ0FAAOCAQEAnOzoRYzYEhFdNqXwA89CaHTTEnfubTXqv+fx5t5SpXxr+TEYt4Vrhxepk+nHTfR9zcwsECYRaZ8c436F7Gk/Fva99njCSJKvh8Awtbmi1+qv8hdkaaNTs2mH+6zR0ivaanq+G3ozGXQ20L6/HdYXrmrBl6i4JjZ2jbbc5whPx/urgAlngB9oD34YfaedLVUfQr8y9OCwFNh0zVvLwYbFyPFdvmt9bgxvxmAH+pD/k8Sxe8HkMbqVqMo2/PgHlEaW7CoKoEnAsgGlvmTA4fA2rlUNIUWzZNCr6ee6pdfM6+wZS4v4301L1JezYzyJxJHN/Ols4IYrBvATPiZl2kxVPQ== + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/LOTL-4.xml + + + EU + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists + + + + EU Operator name + + + + application/vnd.etsi.tsl+xml + + + + + + + + MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBRMRMwEQYDVQQDDApDRVJULVRMLTQxMRowGAYDVQQKDBFUTDQxIE9yZ2FuaXphdGlvbjERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMB4XDTI0MTIyMTAwMDAwNloXDTI2MTIyMTAwMDAwNlowUTETMBEGA1UEAwwKQ0VSVC1UTC00MTEaMBgGA1UECgwRVEw0MSBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ7o5NneCcKsLRSNL2HvpQ2IuFoqbeQp/kES93aoJ8OsHbY1dVBknrECy26+z7jEZ65tQdIKeI7EmRMQbTO20Iq0p+sjepFixBQbSllfEA6GaKLtvUDrzUgyw3MCRZx1zgEPy0DVmQg65urgMUqo2B835ffGSyq8czTJju7xWWZeLzJJMqRcZagJcj+Z2bBAgLkZanVqaUQtNtZ72Olw2j7oBP5KcghcrHE/eGEUVs8wlqJI+VzdEEfiPbGEnwJWOWTgyqs4NVywnq52Vr9SkiS+cPAAHzD545Hv0L+UL70wzohcyOt7A8APmF9uMcfa2azxCQASH18eZt0I/Uc+cP0CAwEAAaMhMB8wHQYDVR0OBBYEFAZ50rQUFw/Z/KmTU4iZ55tVIC8KMA0GCSqGSIb3DQEBDQUAA4IBAQBV8aNctP/UoZeaBFpORV7CDVhhkn0COs0E+8dG6WQUOEtAhpjxWCmn90+vgEfTfWKbnonQhRCkjfnX6uA584o4pLel7R+CqUoyBdgOvel/WLeD7kZeASJwMm3nNvUl3jsi/FREgkLg/ZBCq3QQGYmsV3uT41vTx/hmlPICe1ay0hHcR8UimDAXvrtS4U/EU8YD4N0gJJmCqurXYdBqFle3eHgKGtvCm0in4FJE91+34xFClC2OTwQ4BIfDoHVn1vV8jUZNgvXsDurIYxaajWr5PsKrjSY6bj0yvpVzjTOXA6CVe43wJmai4iQP5fXK6OpeTgdrt+P99wfHVzEelV6Y + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/TL-41.xml + + + LU + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric + + + + LU Operator name + + + + application/vnd.etsi.tsl+xml + + + + + + + + MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBRMRMwEQYDVQQDDApDRVJULVRMLTQyMRowGAYDVQQKDBFUTDQyIE9yZ2FuaXphdGlvbjERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkZSMB4XDTI0MTIyMTAwMDAwOFoXDTI2MTIyMTAwMDAwOFowUTETMBEGA1UEAwwKQ0VSVC1UTC00MjEaMBgGA1UECgwRVEw0MiBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJGUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN+oBKd7cTJ7KAaxAlNa1UesLHX/nSwGoyaeDbcPsHNYVVnKfVYD9h5Lb6Ms5PNkhnSS6uqJIONWG2aFfI1VDj+TCJUfsYWAodvTJNLMiffjdOFtCm9Q//APAf5OnB4IaxF1gjCGDCzXrSlU8l8LJC6t3kEQ15/sCjRMtMOGtG5eCAgBHlB9uJ055tVOylPN5lhFNTpxaYiJUW+5R7k6KxWSfTbPjWZQHOWWp3zj6/sGccfUmpElkbEF7eajandlYNAi2J9afNSOnXfkeacqjwovCv5ij0Cy/OMb/ReScnHzZmdwBrTK5DS9jMZVyKkv8NtAKJUHIEJQH6atBMg1j5sCAwEAAaMhMB8wHQYDVR0OBBYEFHtdU8IXmE3eXBvS6IXse/hwOEAvMA0GCSqGSIb3DQEBDQUAA4IBAQAx1BcbYtMmTsbAGvV1zfuEVgUrqY8FzqQ8uUCfvV8ybmOiq2pbwAT6NH6HywnbVLWXti54EDlOaLlc/ZkbXGExkmmOT64lkyRldxRP9sFQPy60WpKfiHAiwQA0jIusGnXwhHm5st0aTen23HDc6ixTtdAcG3UGWS3mDcGXxI3SrO6HO5/UZCLbViTWGrQPErFO7Jm2xq0qZMtxBtQHGgpxFqllKbCrMozI4GaUjc6AyGABkdaZxvKqerNtbhk9qABWsc/GIuONjmYVKbghdJWr8LXISR7bPcmBBlifFuNscV1gi4bPhlgdLHRGuwdXJ517c4lYh00A5KSpLfaxVBDn + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/TL-42.xml + + + FR + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric + + + + FR Operator name + + + + application/vnd.etsi.tsl+xml + + + + + + + + MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBRMRMwEQYDVQQDDApDRVJULVRMLTQzMRowGAYDVQQKDBFUTDQzIE9yZ2FuaXphdGlvbjERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkJFMB4XDTI0MTIyMTAwMDAxMFoXDTI2MTIyMTAwMDAxMFowUTETMBEGA1UEAwwKQ0VSVC1UTC00MzEaMBgGA1UECgwRVEw0MyBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM8gGwjv82ehFl521h+JsWfROBm7ddSks2nmqOXXofgnl5uZhgEw3yeviJ59UTCaBVcAsS9cjgJEHTls9AarYesva6ODCErrN7VIvqMVi+B5As9uGxiUYfypt0AWv294fOFUMFgnV68QJHVF7Js1JAMQc3DwqGQUTxw8UrNh17PksF+m8T6tvsfkE7GCiKvl+Yu/qIoVhltmAoN8TZ9+vWRc12+uFO5cKXSa3xwedJYRtFR6MlUg8DwLYnrIgpiM0IHqhcKxkR/HzPPWKu2Fj1SyH7Z3FLy7FoPghosyOyf3AzX/xp+7k9iFhKDR69fvrQJFMQF/Xg0new3dIEEkHvcCAwEAAaMhMB8wHQYDVR0OBBYEFLNS5ThnMT91dGgyg9/doRwmdgO2MA0GCSqGSIb3DQEBDQUAA4IBAQCTiDflwDOlTyFo0OMut0kGORy0Pa0aptixjQuDs8FgeLYbWbiHHSS4Xc+1RH7s4jHkvf3vfCxPHeowxd5LgU/BKz+AJqRcTnK35jT7aOTNeJjU6zTVWARcUjIx7DfyQ7omlDWT6fucXL2OZ98fcsmi6s0RGVD8tguPO8BHrV/Fc9mkNWRkG1MrhhRueeg5gkzq6kUW2Z4OBkiFP5bVeSeB/cG+HqAtihwTVMWdrtCJX3uUdeaIwc8ONuKGUjyDiUtgx7a6NNIacHBG2YO+r0zXWy9p91Hy1TyhZybzDnpa+NwsD1hlgAf1vwnwav3JXmFc1r1BsKBp910OXU8qhIXa + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/TL-43.xml + + + BE + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric + + + + BE Operator name + + + + application/vnd.etsi.tsl+xml + + + + + 2025-12-20T00:00:00Z + + 2026-01-21T00:00:00Z + + +dMtSfBA3nLZL/WXLTMVZn22uiHqIZgJCX4wnYEJRpS95qgGb2XEGsNP0FZPuXMyVBgZUZby0SG7yiMOL5aIMPg==8hzhfhSAkHnEU3RFYUaCbii1SRkckhr9I4mvYr3ApT5dLxPpP+v1pyH9O8LmF2o96PcvlRTIeMIOOy5lMuV0JA==J86+v1r7SsPRMPf1jSRsZt0uweB519ZzY/yk4RGGA7zxFEVUEMVbRxueP86yymZt76tFTaKAzOXL4sTY/bExNFe0/lbwb59M6DyJ4LbrJ/RlGgkM8qlPozQDu9YHYkn2zRJz0BAx13TRkkYZbEDU4HDVj2qRpwDatcErLF4cZ3f2+9DmRX1Dvh5/qeMGvfyJSCTNSGWcV9nu3na3TiME1+svBpulJW3Uw2DhDkJV513OtUdCyyjdMip2KaRhSLJMduFKAG66GvIc+/T7IdClphe0esL6LpeWIfuRMTpsei9IbXiAaZDuSTwLKUjG4WlnmKcrWEFtetHRCJC6RUiiGg==MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwHhcNMjQxMjIxMDAwMDA2WhcNMjYxMjIxMDAwMDA2WjBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiu8CP3OKq8DMOoJigZH8n1xssQhLtySOJ5tGS6KOWTfDaTl3eq+4svjLzhqGNDgSYwk/khYZEoJntO3lrkDN6KsYSOBDFNpjYpxa7p3EUjuJxDb1clqx27kkuMTIFl5pcs9oNuUORntyZ2SqjqqnqxkjsSpqNPl8nyZc9gaAY13XU4D2ACsRmnpURmkFj4ppMucMjTCeqlFesvJELf06jfJcLHIJU/b2Wx8a20x3nN564anLIpBfL5Ws40ScRywp9tve2M77DXWXhXKSAaE5D7Fnb7NRb/pPbW5sdfjhDoO7EghXsIDKgJPtdJlThikTkGTk59t6IODu9gnZ5x7uvAgMBAAGjITAfMB0GA1UdDgQWBBROJGXazRDpyPzpJpUN2EBep0AzazANBgkqhkiG9w0BAQ0FAAOCAQEAnOzoRYzYEhFdNqXwA89CaHTTEnfubTXqv+fx5t5SpXxr+TEYt4Vrhxepk+nHTfR9zcwsECYRaZ8c436F7Gk/Fva99njCSJKvh8Awtbmi1+qv8hdkaaNTs2mH+6zR0ivaanq+G3ozGXQ20L6/HdYXrmrBl6i4JjZ2jbbc5whPx/urgAlngB9oD34YfaedLVUfQr8y9OCwFNh0zVvLwYbFyPFdvmt9bgxvxmAH+pD/k8Sxe8HkMbqVqMo2/PgHlEaW7CoKoEnAsgGlvmTA4fA2rlUNIUWzZNCr6ee6pdfM6+wZS4v4301L1JezYzyJxJHN/Ols4IYrBvATPiZl2kxVPQ==2025-12-21T00:00:52ZifB5PbV8j3FiO96SuIWxDGUgMchzYDiDOXRlVZywLDA4ctbnx9AHNCVTVFgCNMmBRJ6Nd6nT8WY2LnKJ/8e7UA==MFkwVKRSMFAxFDASBgNVBAMMC0NFUlQtTE9UTC00MRgwFgYDVQQKDA9FVSBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVQIBAQ==application/octet-stream \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/fkkimbibbiophbnabfbkfpakelclcdog b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/fkkimbibbiophbnabfbkfpakelclcdog new file mode 100644 index 0000000000..e87942c39d --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/fkkimbibbiophbnabfbkfpakelclcdog @@ -0,0 +1,159 @@ + + + 6 + 1 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric + + LU Operator name + + + + + TEST + TEST + TEST + EU + + + + mailto:test@test.test + +352123456789 + + + + LU: TEST + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/test-disclaimer/ + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/test-disclaimer/ + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LU + + LU + + TEST + + 65535 + + + + + + MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwHhcNMjQxMjIxMDAwMDA2WhcNMjYxMjIxMDAwMDA2WjBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiu8CP3OKq8DMOoJigZH8n1xssQhLtySOJ5tGS6KOWTfDaTl3eq+4svjLzhqGNDgSYwk/khYZEoJntO3lrkDN6KsYSOBDFNpjYpxa7p3EUjuJxDb1clqx27kkuMTIFl5pcs9oNuUORntyZ2SqjqqnqxkjsSpqNPl8nyZc9gaAY13XU4D2ACsRmnpURmkFj4ppMucMjTCeqlFesvJELf06jfJcLHIJU/b2Wx8a20x3nN564anLIpBfL5Ws40ScRywp9tve2M77DXWXhXKSAaE5D7Fnb7NRb/pPbW5sdfjhDoO7EghXsIDKgJPtdJlThikTkGTk59t6IODu9gnZ5x7uvAgMBAAGjITAfMB0GA1UdDgQWBBROJGXazRDpyPzpJpUN2EBep0AzazANBgkqhkiG9w0BAQ0FAAOCAQEAnOzoRYzYEhFdNqXwA89CaHTTEnfubTXqv+fx5t5SpXxr+TEYt4Vrhxepk+nHTfR9zcwsECYRaZ8c436F7Gk/Fva99njCSJKvh8Awtbmi1+qv8hdkaaNTs2mH+6zR0ivaanq+G3ozGXQ20L6/HdYXrmrBl6i4JjZ2jbbc5whPx/urgAlngB9oD34YfaedLVUfQr8y9OCwFNh0zVvLwYbFyPFdvmt9bgxvxmAH+pD/k8Sxe8HkMbqVqMo2/PgHlEaW7CoKoEnAsgGlvmTA4fA2rlUNIUWzZNCr6ee6pdfM6+wZS4v4301L1JezYzyJxJHN/Ols4IYrBvATPiZl2kxVPQ== + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/LOTL-4.xml + + + EU + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists + + + + EU Operator name + + + + application/vnd.etsi.tsl+xml + + + + + 2025-12-20T00:00:00Z + + 2026-01-21T00:00:00Z + + + + + + + TSP-41.1 Name + + + TSP-41.1 Trade name + + + + + Street address + Locality + Province + 123 + LU + + + + mailto:test@test.test + + + + http://tsp.information.uri/test + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TS-8.1.1 Name + + + +MIIDVTCCAj2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjExFjAUBgNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0yNDEyMjEwMDAwMDZaFw0yNjEyMjEwMDAwMDZaMEwxEjAQBgNVBAMMCVNESS04LjEuMTEWMBQGA1UECgwNVFNQLTQxLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymYvtoDY41ckbhdMWZDTxO+8Ud5CeLdXFgPOcb070OwOPfjRXRaU7/THN/BQWtZbrdaTpFLSzANlCOriRX1HWcrrvC6kqrbXEWvckiEwDTHabJnN565aZk3KzR+Ve+PrIlLWs9nZmPHudQRI+VvOnC/9fMQsMlFQLlGIZm63aHq1PWvWWwysJLEIa0bue9mPA00SnYIWHAP9umwrCQzUEYKRZd4GWTMaRF1Sk08kWG4XWGbTHMLM7YvHdtzDOGIIStlSGo+wOOWw54vzfXrmsfi1/luTUqF0vG20iJyQfZfqcl3eIbSbdvbBJPXQaJl/wmQTAMIolsktB/AtjxkBvwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFyKmhrzuaxwhOqdBxx8rkzA73lrMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACiOilchF/Ytz7zOZ0XY+TsMsoPUhc4QcHXnZJf33zPi795NW1pRdQh4FadqerexEjjI9UX1kgPqN3Y6VgBOQzqMd+ZNqSSUiyP1xkTynizY85PtnGBT/SiHGn+T2GCrG8z2BUOSoLpxRaNM7aOHCPRvrSy1oy6Jump2nC1THBgmG4AHDbnOhUTLYMh3cEBTkNp4XTyPCBQozj8n70MchMQ33FTq3M2B0eq2hLgxQpEiBWTYc17zs120HBMOw39IvWpMBBd2yD3RQIhaX9hmvMioxDi0TLVpJ+J4NkzoMepdTcwzQoIWU/0lUZUUcnA4xLCq3/D6bnqDRC+sWnsn4rE= + + +C=LU,OU=PKI-TEST,O=TSP-41.1 Name,CN=SDI-8.1.1 + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-30T22:00:00Z + + https://some.supply.point.uri + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TS-8.1.2 Name + + + +MIIDVTCCAj2gAwIBAgIBBDANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4xLjIxFjAUBgNVBAoMDVRTUC00MS4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTAeFw0yNDEyMjEwMDAwMDdaFw0yNjEyMjEwMDAwMDdaMEwxEjAQBgNVBAMMCVNESS04LjEuMjEWMBQGA1UECgwNVFNQLTQxLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArlLmeT2mkca3Lj8M85jhTRZL9wiur54O8bXT8L0NXeDFmTqOFKtrhFP5hbeL+0GjmZk/kj2sXVPrB/ttohNfu/2nHcNLiHj6bpnjlhPKNUAAMfP5rCZWjNHRvolMpL+lsFRgOX727M9QIo6KuUorsMymPSO2A71POfS7jf9JgRe4Y0S95m6ua3q82WOrcAs23+b0p197SE84P/9wqg/2EXo/czOabitjMR2sI/55ScMsEuoJaAeFEyw1ugZXijb9Kn6Bu1HIxii99tRvYib3rJ2u22p8AN3R9QQ/6eZ97GPkD2yW6LNN4yxIwIKVi+hfaqwOSVc1F7uKnRbXs2TOBwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFKiRqh76me0qMZ4dBs9b0pJTjjt+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGuc213tmUAlqE6bbDxgvVsaUvYmiFGPuaBeCdgBHGimTqfIZjPYLYwrmfHhMvpgrhhulVCN4eFNxAG2jrL+5JIPb/iXsWonL8d5iM6/xb9eAGO375jE0cmmg/7mJBQ8VxBjb1KDwXGqyLtAWMKQjVZShzLCoiHBr1GvofukPfKQDZd8GbNekNlIyzmcHlDhV7QkHKNQiJRWLIrrEm3WWhIQjp+TzYCvtOuOiY1K97VnvyAPprXw/goXbp+18HYGbURwmdw5isshJDI+Co5paEmIs3kxDYL5vDj9RLDdaBiq9aSp85OvWx1nBVFaXmTJUA4FN4z/A0gqBIFZ0jbljmg= + + +C=LU,OU=PKI-TEST,O=TSP-41.1 Name,CN=SDI-8.1.2 + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/withdrawn + 2016-06-30T22:00:00Z + + https://some.supply.point.uri + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + +oKi0uU8S9x8pU2xkk0ReNK8U/3xFgaO1Of4ZZnPOvLj0OAAKYYumHy8szcsjNYe2CEq8FAlvHNi9aSainlkpmQ==7BGN72olUD1/5EqtIXDye2tykwB4nFnKO5TxDsXPIOpkJa5NTaTJpPJLr8vJLi54Bx/aBq8w4ByyCFsE4MYIDQ==TgTyEGItG9Au+kcP1latcC1hb3/SzkByvVdSU+4F/s4G3x7GCSakBJdcC+B0TzKoxWJQ6ODhzuHdlDrbf3FcMr2RvVLLB9N+WtdjVZN6cqfRvrUQpbSd2BKH4FPoZR/ZWIaLRrCL6BRJLsU4niGB4ama6pyG5LVMYwEjM99n4EYmGHXDZFbL5O3vZFaMKZN9dWMS16mXp47bgRfuTj8//m58EcTWWYFKJJnzgMnz8t4NiCVK48+IxHklDkN/r0oo+rbjgbR+jwM6s3WC555DGlLuc2KHcBwYRbibpuA20c2sgEdAK5jdc+2umwgn9Ub6k0paS60CRQg//KRSIH51jw==MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBRMRMwEQYDVQQDDApDRVJULVRMLTQxMRowGAYDVQQKDBFUTDQxIE9yZ2FuaXphdGlvbjERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkxVMB4XDTI0MTIyMTAwMDAwNloXDTI2MTIyMTAwMDAwNlowUTETMBEGA1UEAwwKQ0VSVC1UTC00MTEaMBgGA1UECgwRVEw0MSBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJMVTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ7o5NneCcKsLRSNL2HvpQ2IuFoqbeQp/kES93aoJ8OsHbY1dVBknrECy26+z7jEZ65tQdIKeI7EmRMQbTO20Iq0p+sjepFixBQbSllfEA6GaKLtvUDrzUgyw3MCRZx1zgEPy0DVmQg65urgMUqo2B835ffGSyq8czTJju7xWWZeLzJJMqRcZagJcj+Z2bBAgLkZanVqaUQtNtZ72Olw2j7oBP5KcghcrHE/eGEUVs8wlqJI+VzdEEfiPbGEnwJWOWTgyqs4NVywnq52Vr9SkiS+cPAAHzD545Hv0L+UL70wzohcyOt7A8APmF9uMcfa2azxCQASH18eZt0I/Uc+cP0CAwEAAaMhMB8wHQYDVR0OBBYEFAZ50rQUFw/Z/KmTU4iZ55tVIC8KMA0GCSqGSIb3DQEBDQUAA4IBAQBV8aNctP/UoZeaBFpORV7CDVhhkn0COs0E+8dG6WQUOEtAhpjxWCmn90+vgEfTfWKbnonQhRCkjfnX6uA584o4pLel7R+CqUoyBdgOvel/WLeD7kZeASJwMm3nNvUl3jsi/FREgkLg/ZBCq3QQGYmsV3uT41vTx/hmlPICe1ay0hHcR8UimDAXvrtS4U/EU8YD4N0gJJmCqurXYdBqFle3eHgKGtvCm0in4FJE91+34xFClC2OTwQ4BIfDoHVn1vV8jUZNgvXsDurIYxaajWr5PsKrjSY6bj0yvpVzjTOXA6CVe43wJmai4iQP5fXK6OpeTgdrt+P99wfHVzEelV6Y2025-12-21T00:00:52ZfNZ61QFJNuL1aY5cDboKgmAKBMGQuYVBEcvTURjL5NndqdFTDU5++ISr6SbkEZMduKXVZnx5FuAytKQgX8xG9Q==MFowVaRTMFExEzARBgNVBAMMCkNFUlQtVEwtNDExGjAYBgNVBAoMEVRMNDEgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUCAQE=application/octet-stream \ No newline at end of file diff --git a/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/oeclkbkococfggeecjahnohihkhjcfhn b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/oeclkbkococfggeecjahnohihkhjcfhn new file mode 100644 index 0000000000..0495d93615 --- /dev/null +++ b/sign/src/test/resources/com/itextpdf/signatures/validation/lotl/TSLVersion6Test/test_lotl_snapshot/oeclkbkococfggeecjahnohihkhjcfhn @@ -0,0 +1,151 @@ + + + 6 + 1 + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUgeneric + + LU Operator name + + + + + TEST + TEST + TEST + EU + + + + mailto:test@test.test + + + + LU: TEST + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/test-disclaimer/ + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/test-disclaimer/ + + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/EUcommon + http://uri.etsi.org/TrstSvc/TrustedList/schemerules/LU + + LU + + TEST + + 65535 + + + + + + MIIDPDCCAiSgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwHhcNMjQxMjIxMDAwMDA2WhcNMjYxMjIxMDAwMDA2WjBQMRQwEgYDVQQDDAtDRVJULUxPVEwtNDEYMBYGA1UECgwPRVUgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCTFUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiu8CP3OKq8DMOoJigZH8n1xssQhLtySOJ5tGS6KOWTfDaTl3eq+4svjLzhqGNDgSYwk/khYZEoJntO3lrkDN6KsYSOBDFNpjYpxa7p3EUjuJxDb1clqx27kkuMTIFl5pcs9oNuUORntyZ2SqjqqnqxkjsSpqNPl8nyZc9gaAY13XU4D2ACsRmnpURmkFj4ppMucMjTCeqlFesvJELf06jfJcLHIJU/b2Wx8a20x3nN564anLIpBfL5Ws40ScRywp9tve2M77DXWXhXKSAaE5D7Fnb7NRb/pPbW5sdfjhDoO7EghXsIDKgJPtdJlThikTkGTk59t6IODu9gnZ5x7uvAgMBAAGjITAfMB0GA1UdDgQWBBROJGXazRDpyPzpJpUN2EBep0AzazANBgkqhkiG9w0BAQ0FAAOCAQEAnOzoRYzYEhFdNqXwA89CaHTTEnfubTXqv+fx5t5SpXxr+TEYt4Vrhxepk+nHTfR9zcwsECYRaZ8c436F7Gk/Fva99njCSJKvh8Awtbmi1+qv8hdkaaNTs2mH+6zR0ivaanq+G3ozGXQ20L6/HdYXrmrBl6i4JjZ2jbbc5whPx/urgAlngB9oD34YfaedLVUfQr8y9OCwFNh0zVvLwYbFyPFdvmt9bgxvxmAH+pD/k8Sxe8HkMbqVqMo2/PgHlEaW7CoKoEnAsgGlvmTA4fA2rlUNIUWzZNCr6ee6pdfM6+wZS4v4301L1JezYzyJxJHN/Ols4IYrBvATPiZl2kxVPQ== + + + + https://eidas.ec.europa.eu/efda/api/v2/validation-tests/testcase/tl/LOTL-4.xml + + + EU + + + http://uri.etsi.org/TrstSvc/TrustedList/TSLType/EUlistofthelists + + + + EU Operator name + + + + application/vnd.etsi.tsl+xml + + + + + 2025-12-20T00:00:00Z + + 2026-01-21T00:00:00Z + + + + + + + TSP-43.1 Name + + + TSP-43.1 Trade name + + + + + Street address + Locality + Province + 123 + LU + + + + mailto:test@test.test + + + + http://tsp.information.uri/test + + + + + + http://uri.etsi.org/TrstSvc/Svctype/TLIssuer + + TS-8.3.1 TLIssuer + + + +MIIDVTCCAj2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4zLjExFjAUBgNVBAoMDVRTUC00My4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTAeFw0yNDEyMjEwMDAwMTBaFw0yNjEyMjEwMDAwMTBaMEwxEjAQBgNVBAMMCVNESS04LjMuMTEWMBQGA1UECgwNVFNQLTQzLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkJFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiDIXTV2TKG/hMHJDTs25XeQfuiUHFrmmqXJoxLTQgnFWKnqpCWI2cJUDYJvBd6sM5sqHThVKZA4CBV8rcZoAAVB7ut6np114fuACqc6wnOBorYBEeJYiVAEklvEvmAlwYy2Mq88qR0cOpqUjHGSLPZ0n7Udn642RgNkDIFfdbMxcnS/L6em1vckez6VI9K22DwqFfYAsdvCHTSbbc2mCXL6I3R1d7pFfE4AVdP9k3lBmrOHYFWX26KenLP1NVl8B6aP59uciyOLsOemaBpICuWuDrzTWmreux0EtlCcNkvKuEOwqYM75Nu67HxlmUUeH8QQu/I4qqhkMf2oxfed5JwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMWrVLaH+EA9bchpo+KZvPRc/xMqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACM0JEF10D2KyYtpQWIlvlgRgh7sSWHLz7FSjbTa0UiVQz+0Xw0LdVFielhUO4pWvNf4myKMtVmjYXKTPFCVKZNH60WZvdNbOVuTknDjY4I8+lVe/OQV5vERcbvncoZ4i0cQDzBX3zbNYiyjMgG8sJe5d8rB8koVQIto8RPaTa9MSVzi+W9yQHxkhsRzM2u/AbqxHCfA1/VKUBxoleb/GKBuopiE07G7bgrx/81ww4Ax1BaNGkMSa2NjlwJ0wbTQ04/zZ+pVrHTqYvu5FRGe4PtRvKnQFvkJ+NTlmI7UfyP3zN1Dgpic8Tsn+iAAj8DOHt9jP5LE5iudz9yMbpZe90s= + + +C=BE,OU=PKI-TEST,O=TSP-43.1 Name,CN=SDI-8.3.1 + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-30T22:00:00Z + + https://some.supply.point.uri + + + + + + http://uri.etsi.org/TrstSvc/Svctype/CA/QC + + TS-8.3.1 CA_QC + + + +MIIDVTCCAj2gAwIBAgIBAjANBgkqhkiG9w0BAQsFADBMMRIwEAYDVQQDDAlTREktOC4zLjExFjAUBgNVBAoMDVRTUC00My4xIE5hbWUxETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTAeFw0yNDEyMjEwMDAwMTBaFw0yNjEyMjEwMDAwMTBaMEwxEjAQBgNVBAMMCVNESS04LjMuMTEWMBQGA1UECgwNVFNQLTQzLjEgTmFtZTERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkJFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiDIXTV2TKG/hMHJDTs25XeQfuiUHFrmmqXJoxLTQgnFWKnqpCWI2cJUDYJvBd6sM5sqHThVKZA4CBV8rcZoAAVB7ut6np114fuACqc6wnOBorYBEeJYiVAEklvEvmAlwYy2Mq88qR0cOpqUjHGSLPZ0n7Udn642RgNkDIFfdbMxcnS/L6em1vckez6VI9K22DwqFfYAsdvCHTSbbc2mCXL6I3R1d7pFfE4AVdP9k3lBmrOHYFWX26KenLP1NVl8B6aP59uciyOLsOemaBpICuWuDrzTWmreux0EtlCcNkvKuEOwqYM75Nu67HxlmUUeH8QQu/I4qqhkMf2oxfed5JwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMWrVLaH+EA9bchpo+KZvPRc/xMqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBACM0JEF10D2KyYtpQWIlvlgRgh7sSWHLz7FSjbTa0UiVQz+0Xw0LdVFielhUO4pWvNf4myKMtVmjYXKTPFCVKZNH60WZvdNbOVuTknDjY4I8+lVe/OQV5vERcbvncoZ4i0cQDzBX3zbNYiyjMgG8sJe5d8rB8koVQIto8RPaTa9MSVzi+W9yQHxkhsRzM2u/AbqxHCfA1/VKUBxoleb/GKBuopiE07G7bgrx/81ww4Ax1BaNGkMSa2NjlwJ0wbTQ04/zZ+pVrHTqYvu5FRGe4PtRvKnQFvkJ+NTlmI7UfyP3zN1Dgpic8Tsn+iAAj8DOHt9jP5LE5iudz9yMbpZe90s= + + +C=BE,OU=PKI-TEST,O=TSP-43.1 Name,CN=SDI-8.3.1 + + + http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/granted + 2016-06-30T22:00:00Z + + https://some.supply.point.uri + + + + + http://uri.etsi.org/TrstSvc/TrustedList/SvcInfoExt/ForeSignatures + + + + + + + + +62nmbK74vTaSrzxGiKng932opc0QuE1QLhqvdFnKB1qg4aoiSW0/RRq0KeNV/Z/virLflKBzLy3Fh5UQTX+4DA==8CLHaKC8w08hZ2TeXokT7m/hyUlpFTVQfiR8/CrwkOCJ6R3IiFKwvzm28IHfAmqUcPQx8Hh8g5hyC0oYihx6fg==YG5dW4zQOj3Hcp8pxEnWF+OVtkbfi+HHu9G+jetL1phqTWm4+DwOrf7ehoH3gxgQZxezR/3Lo7tvSUlZ+/QSdJEmo6cB2RWPFD3E9QFvXYFMxF1KWgcajaOeCNL/yzOIdPdV02NqY/Zk+imvAwqqOvSLPB+N7ydyKS1wP0VGwJzXhkvcqZoB021KGsQluzJ7+Bx0UjaDfGYbZLqE3EXCpjfYsNgLEGVapmHLNbqBz1wE9ZRBV31LH2TzlIRGjMklciqdJxH2n0+jLzaPSpYzy9zFFLDa+cp06291iHgqGE5J7X1cOIYXgnTjxTKNIRo7HaJ+WYSlx8gXfoTa30uAiA==MIIDPjCCAiagAwIBAgIBATANBgkqhkiG9w0BAQ0FADBRMRMwEQYDVQQDDApDRVJULVRMLTQzMRowGAYDVQQKDBFUTDQzIE9yZ2FuaXphdGlvbjERMA8GA1UECwwIUEtJLVRFU1QxCzAJBgNVBAYTAkJFMB4XDTI0MTIyMTAwMDAxMFoXDTI2MTIyMTAwMDAxMFowUTETMBEGA1UEAwwKQ0VSVC1UTC00MzEaMBgGA1UECgwRVEw0MyBPcmdhbml6YXRpb24xETAPBgNVBAsMCFBLSS1URVNUMQswCQYDVQQGEwJCRTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM8gGwjv82ehFl521h+JsWfROBm7ddSks2nmqOXXofgnl5uZhgEw3yeviJ59UTCaBVcAsS9cjgJEHTls9AarYesva6ODCErrN7VIvqMVi+B5As9uGxiUYfypt0AWv294fOFUMFgnV68QJHVF7Js1JAMQc3DwqGQUTxw8UrNh17PksF+m8T6tvsfkE7GCiKvl+Yu/qIoVhltmAoN8TZ9+vWRc12+uFO5cKXSa3xwedJYRtFR6MlUg8DwLYnrIgpiM0IHqhcKxkR/HzPPWKu2Fj1SyH7Z3FLy7FoPghosyOyf3AzX/xp+7k9iFhKDR69fvrQJFMQF/Xg0new3dIEEkHvcCAwEAAaMhMB8wHQYDVR0OBBYEFLNS5ThnMT91dGgyg9/doRwmdgO2MA0GCSqGSIb3DQEBDQUAA4IBAQCTiDflwDOlTyFo0OMut0kGORy0Pa0aptixjQuDs8FgeLYbWbiHHSS4Xc+1RH7s4jHkvf3vfCxPHeowxd5LgU/BKz+AJqRcTnK35jT7aOTNeJjU6zTVWARcUjIx7DfyQ7omlDWT6fucXL2OZ98fcsmi6s0RGVD8tguPO8BHrV/Fc9mkNWRkG1MrhhRueeg5gkzq6kUW2Z4OBkiFP5bVeSeB/cG+HqAtihwTVMWdrtCJX3uUdeaIwc8ONuKGUjyDiUtgx7a6NNIacHBG2YO+r0zXWy9p91Hy1TyhZybzDnpa+NwsD1hlgAf1vwnwav3JXmFc1r1BsKBp910OXU8qhIXa2025-12-21T00:00:53ZAa/usCpFx+eZ0LU3n9Xw3qhK9bPvoggGY4g2jbwyrSHns6NHfVEG2mT9PSdUIBXwIxfR4q2zDGijWai1G9B+pw==MFowVaRTMFExEzARBgNVBAMMCkNFUlQtVEwtNDMxGjAYBgNVBAoMEVRMNDMgT3JnYW5pemF0aW9uMREwDwYDVQQLDAhQS0ktVEVTVDELMAkGA1UEBhMCQkUCAQE=application/octet-stream \ No newline at end of file diff --git a/styled-xml-parser/pom.xml b/styled-xml-parser/pom.xml index 3fb9eb0ed5..bfcaf2bd67 100644 --- a/styled-xml-parser/pom.xml +++ b/styled-xml-parser/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT styled-xml-parser diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java index 077e4a1b21..bf9bfa31ac 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CommonAttributeConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java index 67499cefef..973567893a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/CssRuleSetComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java index d0bfa6f0e4..ed0f58483e 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/IXmlParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java index 511e86034e..fb0c043c52 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/PortUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java index 3661414381..dfa958baa5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CommonCssConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -1799,6 +1799,11 @@ public class CommonCssConstants { */ public static final String CHECKED = "checked"; + /** + * The Constant HAS. + */ + public static final String HAS = "has"; + /** * The Constant DISABLED. */ diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java index 2868d1fe7c..148f1d123a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactory.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactory.java index 5a470e261c..1c62c58988 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactory.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java index 589c1d5d44..cd22cb8e6a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssContextNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java index 4c638c7f7a..e23be32dc4 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssDeclaration.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java index 6f1fd9b5f0..df6add47e3 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssFontFaceRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssImportAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssImportAtRule.java index ba4ecc8e3b..8582ea59c4 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssImportAtRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssImportAtRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java index be604e6e90..933ad44859 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java index d15a9b3300..3a19f59727 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssNestedAtRuleFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java index 802d36f581..a840966a98 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleName.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java index 75916bda9d..7f725c484d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java index 3c6d2c7888..8ecf8db54e 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssRuleSetComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java index b1bd01dad1..2b0c05e418 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssSemicolonAtRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java index 60dfd85853..3ff37b021f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStatement.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java index 1e81738afb..7bbce21614 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/CssStyleSheet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java index 3095c6e9ae..a20a3c02fe 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/ICssResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java index a977287486..86172c5397 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/font/CssFontFace.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java index 26600521ee..2469f4e9b5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/CssMediaRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java index 2d8fabf6e7..2c1dd2fc59 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaDeviceDescription.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java index 55a8d05215..ada288b263 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaExpression.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java index 73a386fa01..5b01cbb0cb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaFeature.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java index 75a7101a18..6dd17bb9fe 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQuery.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java index 8fe82ab003..a02b3d20a0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaQueryParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java index e32ca45e84..a3379ca5d9 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaRuleConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java index 18747a885a..11aa1aedb4 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/media/MediaType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java index 04db64e0d2..29bac43b02 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssMarginRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java index dddab8f6f1..771c02c8d3 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssNonStandardRuleSet.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java index 1f823c5380..af53472077 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/CssPageRule.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java index da6330eb59..ea1260e1eb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java index fc9883d134..ff9c01d681 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageContextNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java index d50e3aadbd..9ec372c5e0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java index 405858dbd4..7e3a786602 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParser.java index 3f277a4cd9..533865bf60 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java index ed4e556361..0758ca1861 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssPageSelectorParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java index 90da9fc06e..1bf84f38ea 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java index 68dafc3e63..08d26007c8 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -24,6 +24,8 @@ This file is part of the iText (R) project. import com.itextpdf.commons.datastructures.Tuple2; import com.itextpdf.commons.utils.MessageFormatUtil; +import com.itextpdf.styledxmlparser.css.selector.CssSelector; +import com.itextpdf.styledxmlparser.css.selector.ICssSelector; import com.itextpdf.styledxmlparser.css.selector.item.CssAttributeSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.CssClassSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.CssIdSelectorItem; @@ -32,12 +34,15 @@ This file is part of the iText (R) project. import com.itextpdf.styledxmlparser.css.selector.item.CssSeparatorSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.CssTagSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.ICssSelectorItem; +import com.itextpdf.styledxmlparser.css.util.CssUtils; +import com.itextpdf.styledxmlparser.css.util.EscapeGroup; import com.itextpdf.styledxmlparser.exceptions.StyledXmlParserExceptionMessage; import com.itextpdf.styledxmlparser.logs.StyledXmlParserLogMessageConstant; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * Utility class for parsing CSS selectors. @@ -59,6 +64,20 @@ private CssSelectorParser() { // Utility class, no instances allowed. } + /** + * Parses a comma-separated list of CSS selectors from a string and returns a list of + * {@link ICssSelector} objects that represent the selectors. + * + * @param arguments the string containing a comma-separated list of CSS selectors + * + * @return a list of {@link ICssSelector} objects representing the parsed selectors + */ + public static List parseCommaSeparatedSelectors(String arguments) { + return splitByTopLevelComma(arguments).stream().filter(part -> !part.isEmpty()) + .map(part -> (ICssSelector) new CssSelector(CssSelectorParser.parseSelectorItems(part, true))) + .collect(Collectors.toList()); + } + /** * Parses the given CSS selector string into a list of {@link ICssSelectorItem} objects. * This method processes the selector string character by character, handling state transitions @@ -69,6 +88,22 @@ private CssSelectorParser() { * @return a list of {@link ICssSelectorItem} objects representing the components of the parsed selector */ public static List parseSelectorItems(String selector) { + return parseSelectorItems(selector, false); + } + + /** + * Parses the given CSS selector string into a list of {@link ICssSelectorItem} objects, with an option + * to allow a relative selector at the beginning. This method processes the selector character + * by character, handling state transitions and escaped sequences to properly parse the structure. + * + * @param selector the CSS selector string to be parsed + * @param allowRelativeSelectorAtStart a boolean flag indicating whether a relative selector + * is allowed at the start of the selector string + * + * @return a list of {@link ICssSelectorItem} objects representing the parsed components + * of the CSS selector + */ + static List parseSelectorItems(String selector, boolean allowRelativeSelectorAtStart) { List selectorItems = new ArrayList<>(); State state = new NoneState(); for (int i = 0; i < selector.length(); ++i) { @@ -76,6 +111,7 @@ public static List parseSelectorItems(String selector) { State nextState; //process escape sequence if necessary boolean isEscaped = false; + if (c == '\\') { Tuple2 escapedSeq = processEscape(i, selector); i = (int) escapedSeq.getFirst(); @@ -84,7 +120,7 @@ public static List parseSelectorItems(String selector) { //Only tags can start with an escaped character nextState = trySwitchToTagState(state); } else { - nextState = trySwitchState(state, c); + nextState = trySwitchState(state, c, allowRelativeSelectorAtStart); } if (state != nextState) { @@ -97,6 +133,20 @@ public static List parseSelectorItems(String selector) { return selectorItems; } + /** + * Splits a string by top-level commas, ignoring commas inside parentheses or quoted strings. + * This handles escape sequences for quotes correctly. + * + * @param input the string to split + * @return a list of string parts split by top-level commas + */ + static List splitByTopLevelComma(String input) { + return CssUtils.splitString(input, ',', + new EscapeGroup('(', ')'), + new EscapeGroup('"'), + new EscapeGroup('\'')); + } + /** * Processes a possible escape sequence in the given source string, starting from the specified index. * This method extracts and decodes an escape sequence based on its hexadecimal representation @@ -181,10 +231,11 @@ private static State trySwitchToTagState(State state) { * @return the new state after evaluating the character; if no switch is performed, * the original state is returned */ - private static State trySwitchState(State state, char c) { + private static State trySwitchState(State state, char c, boolean allowRelativeSelectorAtStart) { if (!state.isReadyForSwitch(c)) { return state; } + switch (c) { case '.': return new ClassState(); @@ -200,7 +251,7 @@ private static State trySwitchState(State state, char c) { case '~': case ',': case '|': - return new SeparatorState(); + return new SeparatorState(allowRelativeSelectorAtStart); case '*': return new TagState(); default: @@ -208,6 +259,7 @@ private static State trySwitchState(State state, char c) { } } + /** * Represents the state of a CSS selector parser. Each state defines a specific behavior for * processing characters, transitioning between states, and modifying the selector items list. @@ -306,18 +358,41 @@ public void process(List selectorItems) { */ private static final class SeparatorState implements State { private char data = '\0'; + private final boolean allowRelativeSelectorAtStart; + + public SeparatorState(boolean allowRelativeSelectorAtStart) { + this.allowRelativeSelectorAtStart = allowRelativeSelectorAtStart; + } + @Override public boolean isReadyForSwitch(char c) { - return true; + if (data != '\0' && data != ' ' && Character.isWhitespace(c)) { + return false; + } + //If we already captured a descendant separator (' '), collapse multiple whitespace chars. + return data != ' ' || !Character.isWhitespace(c); } @Override public void addChar(char c, boolean isEscaped) { - if (data != '\0') { - throw new IllegalArgumentException(MessageFormatUtil - .format(StyledXmlParserExceptionMessage.INVALID_SELECTOR_STRING, "" + data + c)); + if (data == '\0') { + // Normalize any whitespace separator to ' ' for consistent downstream behavior. + if (!isEscaped && Character.isWhitespace(c)) { + data = ' '; + } else { + data = c; + } + return; } - data = c; + + // If we stayed in this state to consume whitespace (see isReadyForSwitch), + // treat it as insignificant and ignore it. + if (!isEscaped && Character.isWhitespace(c)) { + return; + } + + throw new IllegalArgumentException(MessageFormatUtil + .format(StyledXmlParserExceptionMessage.INVALID_SELECTOR_STRING, "" + data + c)); } /** @@ -338,9 +413,15 @@ public void addChar(char c, boolean isEscaped) { @Override public void process(List selectorItems) { if (selectorItems.isEmpty()) { + // Allow relative selectors at the start only when explicitly enabled (e.g. inside :has()). + if (allowRelativeSelectorAtStart && isCombinator(data)) { + selectorItems.add(new CssSeparatorSelectorItem(data)); + return; + } throw new IllegalArgumentException(MessageFormatUtil.format( StyledXmlParserExceptionMessage.INVALID_SELECTOR_STRING, data)); } + ICssSelectorItem lastItem = selectorItems.get(selectorItems.size() - 1); CssSeparatorSelectorItem curItem = new CssSeparatorSelectorItem(data); if (lastItem instanceof CssSeparatorSelectorItem) { @@ -355,6 +436,10 @@ public void process(List selectorItems) { selectorItems.add(curItem); } } + + private static boolean isCombinator(char c) { + return c == '+' || c == '>' || c == '~'; + } } /** @@ -407,7 +492,6 @@ public void process(List selectorItems) { } } - /** * Represents an abstract state for managing the parsing and processing of CSS selector * elements that involve function-like syntax. It provides common functionality for diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java index 068248698a..7f85cc3858 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java index d4ae0d34c1..12347edcdb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/AtRuleBlockState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java index 359197d296..f18a0b28f2 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/BlockState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java index c092f171d4..048a18a492 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentEndState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java index a1ce697f77..ef44d835f9 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentInnerState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java index d71eeadf9f..701e76a583 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CommentStartState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java index 3149fba82f..5008c2e771 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/ConditionalGroupAtRuleBlockState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java index b9812191a9..1589699348 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/CssParserStateController.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java index 9dba72b8a2..11eb7f590a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/IParserState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/NoDuplicatesResourceRetriever.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/NoDuplicatesResourceRetriever.java index ad095a3f18..421c420e35 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/NoDuplicatesResourceRetriever.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/NoDuplicatesResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java index 994b981f46..05600c6531 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/RuleState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java index fb105683de..87543b8fd6 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/syntax/UnknownState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java index baa1afc73d..b5a3abcb39 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java index 96fa7b75ee..5d265e3b4a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java index c69291105d..1a82247978 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/AbstractCssContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java index 9db793ded7..c1ee8decfd 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssDefaults.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java index f4177fa24c..4372edf848 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java index 80225996e6..21042e9c8f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMerger.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java index dabe4f9239..fe3bc1e3f7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/CssQuotes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java index 150b97bc6b..40828a45cb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/IStyleInheritance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java index fa2f1e10cd..e022b175d7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/IShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java index 5bfa4f9dbe..b2531457f2 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ShorthandResolverFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java index 2a7a81defd..195647a88f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBorderShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java index e3cd5759a4..b04e837479 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractBoxShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java index 2b1d8ac1ad..6d61e3ac14 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/AbstractCornersShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java index 596933cb09..2b93666032 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundPositionShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java index 44329b6d63..a5bf65bf27 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BackgroundShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java index 3ae5a3fc28..542cd76e04 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderBottomShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java index bc74702136..752bbf2785 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderColorShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java index 9161ecbfc6..35070b3b5f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderLeftShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java index 3116d5fb1d..67c70afdb3 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRadiusShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java index ee949fa285..d15ce64d84 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderRightShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java index 640c6d17b6..b3b39ee414 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java index 71d24f34a7..49df4139c4 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderStyleShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java index acb8a6cbfb..2e207aaa86 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderTopShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java index 69c05578ac..40339d81e0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/BorderWidthShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShortHandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShortHandResolver.java index f27222d574..67850cee6d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShortHandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShortHandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnsShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnsShorthandResolver.java index 50453c0577..79d9b99314 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnsShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnsShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java index 05b96aa5f9..fca1f3bbf0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexFlowShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java index 36178b8357..cdce9e9437 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FlexShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java index 29c300dcd0..9ffd211ec1 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/FontShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java index 5b3e475ecf..666566b99d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GapShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridColumnShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridColumnShorthandResolver.java index eb669f9e84..16ab97910b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridColumnShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridColumnShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolver.java index 3c0097b574..f8a62109b5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridRowShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridRowShorthandResolver.java index 983afc3059..ddb774567b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridRowShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridRowShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolver.java index 100ec9fa54..b46cdb8e68 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolver.java index 867d44f28b..288354aed4 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java index c211458893..7adede9727 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ListStyleShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java index 90420a386b..7865e59714 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarginShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarkerShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarkerShorthandResolver.java index 1a54e9022d..32ab43a560 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarkerShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/MarkerShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java index 950158f304..fbc3deaf5b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/OutlineShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java index 2e75ee5bd3..87096affcc 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PaddingShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java index 806463f0da..76ec867e7f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/PlaceItemsShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java index 2119ada108..6fa0b1e1fa 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/TextDecorationShorthandResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java index ac9c496407..0418a49a30 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/AbstractCssSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java index 750958d8ad..edee7f8fa1 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageMarginBoxSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java index 49397bfcbb..8fc4dddc2b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssPageSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java index 7ce757517a..dfc0d482f7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -60,7 +60,23 @@ public CssSelector(String selector) { * @see com.itextpdf.styledxmlparser.css.selector.ICssSelector#matches(com.itextpdf.styledxmlparser.html.node.INode) */ public boolean matches(INode element) { - return matches(element, selectorItems.size() - 1); + return matches(element, selectorItems.size() - 1, null); + } + + /** + * Checks if the node matches this selector, but limits ancestor traversal so that it never + * goes above the provided {@code scope} node. + *

+ * This is primarily used to implement {@code :has(...)} correctly: when matching a candidate + * descendant against an argument selector, ancestor combinators must not escape the {@code :has()} + * scope element. + * + * @param element the element to match + * @param scope the scope boundary (inclusive). If {@code null}, behaves like {@link #matches(INode)}. + * @return true if the element matches within the given scope, false otherwise + */ + public boolean matchesWithinScope(INode element, INode scope) { + return matches(element, selectorItems.size() - 1, scope); } /** @@ -72,7 +88,7 @@ public boolean matches(INode element) { public boolean notMatches(INode element) { int counter = 0; while (counter != selectorItems.size()) { - boolean matches = matches(element, selectorItems.size() - counter - 1); + boolean matches = matches(element, selectorItems.size() - counter - 1, null); if (matches) { return false; } else { @@ -87,9 +103,10 @@ public boolean notMatches(INode element) { * * @param element the node * @param lastSelectorItemInd the index of the last selector + * @param scope the boundary scope node (inclusive) for ancestor traversal, or {@code null} for unbounded * @return true, if there's a match */ - private boolean matches(INode element, int lastSelectorItemInd) { + private boolean matches(INode element, int lastSelectorItemInd, INode scope) { if (!(element instanceof IElementNode)) { return false; } @@ -110,14 +127,17 @@ private boolean matches(INode element, int lastSelectorItemInd) { char separator = ((CssSeparatorSelectorItem) currentItem).getSeparator(); switch (separator) { case '>': - return matches(element.parentNode(), i - 1); + return matches(element.parentNode(), i - 1, scope); case ' ': { INode parent = element.parentNode(); while (parent != null) { - boolean parentMatches = matches(parent, i - 1); + boolean parentMatches = matches(parent, i - 1, scope); if (parentMatches) { return true; } else { + if (scope != null && parent == scope) { + break; + } parent = parent.parentNode(); } } @@ -128,7 +148,7 @@ private boolean matches(INode element, int lastSelectorItemInd) { if (parent != null) { int indexOfElement = parent.childNodes().indexOf(element); for (int j = indexOfElement - 1; j >= 0; j--) { - if (matches(parent.childNodes().get(j), i - 1)) { + if (matches(parent.childNodes().get(j), i - 1, scope)) { return true; } } @@ -146,7 +166,7 @@ private boolean matches(INode element, int lastSelectorItemInd) { break; } if (previousElement != null) - return indexOfElement > 0 && matches(previousElement, i - 1); + return indexOfElement > 0 && matches(previousElement, i - 1, scope); } return false; } diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java index 6a171ad8fe..c71d0774e1 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/CssSelectorComparator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java index c742fcfa08..ad957af4e0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/ICssSelector.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java index f5b589f461..0ff50ad089 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssAttributeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java index 739728b341..fc6499cec2 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssClassSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java index c71a58ab0c..99af10c1cd 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssIdSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java index 4efd719b68..9a7bf32028 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPagePseudoClassSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java index 2c491d8ecf..2f749dc83b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPageTypeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java index 50dc2011aa..e713af2b4e 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassChildSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -22,10 +22,7 @@ This file is part of the iText (R) project. */ package com.itextpdf.styledxmlparser.css.selector.item; -import com.itextpdf.styledxmlparser.node.IElementNode; import com.itextpdf.styledxmlparser.node.INode; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; class CssPseudoClassChildSelectorItem extends CssPseudoClassSelectorItem { @@ -50,17 +47,7 @@ class CssPseudoClassChildSelectorItem extends CssPseudoClassSelectorItem { * @return the sibling nodes */ List getAllSiblings(INode node) { - INode parentElement = node.parentNode(); - if (parentElement != null) { - List childrenUnmodifiable = parentElement.childNodes(); - List children = new ArrayList(childrenUnmodifiable.size()); - for (INode iNode : childrenUnmodifiable) { - if (iNode instanceof IElementNode) - children.add(iNode); - } - return children; - } - return Collections.emptyList(); + return CssSelectorItemTraversalUtil.getElementSiblings(node); } /** @@ -70,16 +57,6 @@ List getAllSiblings(INode node) { * @return the sibling nodes with the type of a child node */ List getAllSiblingsOfNodeType(INode node) { - INode parentElement = node.parentNode(); - if (parentElement != null) { - List childrenUnmodifiable = parentElement.childNodes(); - List children = new ArrayList(childrenUnmodifiable.size()); - for (INode iNode : childrenUnmodifiable) { - if (iNode instanceof IElementNode && ((IElementNode) iNode).name().equals(((IElementNode) node).name())) - children.add(iNode); - } - return children; - } - return Collections.emptyList(); + return CssSelectorItemTraversalUtil.getElementSiblingsOfSameType(node); } -} +} \ No newline at end of file diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java index 088fd9c1bb..9040516828 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java index e7750260be..2c6c659baa 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassEmptySelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java index 7c243f61fe..1e3ad18a86 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstChildSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java index 3f3735fedc..345bf72970 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassFirstOfTypeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItem.java new file mode 100644 index 0000000000..92df8d49e5 --- /dev/null +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItem.java @@ -0,0 +1,252 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.styledxmlparser.css.selector.item; + +import com.itextpdf.styledxmlparser.css.CommonCssConstants; +import com.itextpdf.styledxmlparser.css.selector.CssSelector; +import com.itextpdf.styledxmlparser.css.selector.ICssSelector; +import com.itextpdf.styledxmlparser.node.IElementNode; +import com.itextpdf.styledxmlparser.node.INode; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + + +/** + * A class representing a CSS pseudo-class selector item for the ":has()" CSS pseudo-class. + * This class is responsible for evaluating whether a given node matches the conditions + * defined in the ":has()" selector. + *

+ * The primary responsibility of this class is handling the logic for matching nodes based on + * argument selectors and compiled versions of those selectors. The ":has()" pseudo-class takes + * other selectors as its arguments, and it matches elements that have descendants or other + * relative elements matching the provided criteria. + */ +class CssPseudoClassHasSelectorItem extends CssPseudoClassSelectorItem { + private final List compiledArguments; + + CssPseudoClassHasSelectorItem(List argumentSelectors, String argumentsString) { + super(CommonCssConstants.HAS, argumentsString); + this.compiledArguments = compileArguments(argumentSelectors); + } + + CssPseudoClassHasSelectorItem(ICssSelector argumentsSelector) { + this(Collections.singletonList(argumentsSelector), argumentsSelector.toString()); + } + + @Override + public int getSpecificity() { + int maxSpecificity = 0; + for (CompiledHasArgument compiled : compiledArguments) { + if (compiled.getSelector() != null) { + maxSpecificity = Math.max(maxSpecificity, compiled.getSelector().calculateSpecificity()); + } + } + return maxSpecificity; + } + + @Override + public boolean matches(INode node) { + if (!CssSelectorItemTraversalUtil.isValidElementNode(node)) { + return false; + } + + for (CompiledHasArgument compiledArgument : compiledArguments) { + if (matchesCompiled(node, compiledArgument)) { + return true; + } + } + return false; + } + + private static boolean matchesCompiled(INode node, CompiledHasArgument compiled) { + return compiled.getRelativeSteps() != null + ? matchesRelativeSelector(node, compiled.getRelativeSteps()) + : hasDescendantMatching(node, compiled.getSelector()); + } + + private static List compileArguments(List argumentSelectors) { + List result = new ArrayList<>(argumentSelectors.size()); + for (ICssSelector selector : argumentSelectors) { + final CompiledHasArgument compiled; + if (!(selector instanceof CssSelector)) { + compiled = new CompiledHasArgument(selector, null); + } else { + CssSelector cssSelector = (CssSelector) selector; + List items = cssSelector.getSelectorItems(); + if (items.isEmpty()) { + compiled = new CompiledHasArgument(null, null); + } else if (items.get(0) instanceof CssSeparatorSelectorItem) { + List steps = compileRelativeSteps(items); + compiled = new CompiledHasArgument(cssSelector, steps); + } else { + compiled = new CompiledHasArgument(cssSelector, null); + } + } + result.add(compiled); + } + + return result; + } + + private static List compileRelativeSteps(List relativeItems) { + int i = 0; + List steps = new ArrayList<>(); + + while (i < relativeItems.size()) { + ICssSelectorItem item = relativeItems.get(i); + if (!(item instanceof CssSeparatorSelectorItem)) { + return Collections.emptyList(); + } + + i++; + + int seqStart = i; + while (i < relativeItems.size() && !(relativeItems.get(i) instanceof CssSeparatorSelectorItem)) { + i++; + } + + if (seqStart == i) { + return Collections.emptyList(); + } + + CssSelector sequenceSelector = new CssSelector(relativeItems.subList(seqStart, i)); + steps.add(new RelativeStep(((CssSeparatorSelectorItem) item).getSeparator(), sequenceSelector)); + } + + return steps; + } + + private static boolean matchesRelativeSelector(INode scope, List steps) { + if (steps.isEmpty()) { + return false; + } + + List currentScopes = Collections.singletonList(scope); + + for (RelativeStep step : steps) { + List nextScopes = new ArrayList<>(); + + for (INode currentScope : currentScopes) { + fillNextScopesByCombinator(currentScope, step.getCombinator(), step.getSelector(), nextScopes); + } + + if (nextScopes.isEmpty()) { + return false; + } + currentScopes = nextScopes; + } + + return true; + } + + private static void fillNextScopesByCombinator(INode scope, char combinator, CssSelector sequenceSelector, + List nextScopes) { + switch (combinator) { + case '>': + for (INode child : scope.childNodes()) { + if (child instanceof IElementNode && sequenceSelector.matches(child)) { + nextScopes.add(child); + } + } + return; + + case ' ': + CssSelectorItemTraversalUtil.forEachDescendantElement(scope, candidate -> { + if (sequenceSelector.matches(candidate)) { + nextScopes.add(candidate); + } + }); + return; + + case '+': + INode next = CssSelectorItemTraversalUtil.getNextElementSibling(scope); + if (next != null && sequenceSelector.matches(next)) { + nextScopes.add(next); + } + return; + + case '~': + CssSelectorItemTraversalUtil.forEachFollowingElementSibling(scope, sibling -> { + if (sequenceSelector.matches(sibling)) { + nextScopes.add(sibling); + } + }); + return; + + default: + } + } + + private static boolean hasDescendantMatching(INode scope, ICssSelector selector) { + if (selector == null) { + return false; + } + + if (selector instanceof CssSelector) { + CssSelector cssSelector = (CssSelector) selector; + return CssSelectorItemTraversalUtil.anyDescendantElementMatches(scope, + (candidate) -> cssSelector.matchesWithinScope(candidate, scope)); + } + + return CssSelectorItemTraversalUtil.anyDescendantElementMatches( + scope, (candidate) -> selector.matches(candidate)); + } + + private static final class CompiledHasArgument { + private final ICssSelector selector; + private final List relativeSteps; + + public CompiledHasArgument(ICssSelector selector, List relativeSteps) { + this.selector = selector; + this.relativeSteps = relativeSteps; + } + + public ICssSelector getSelector() { + return selector; + } + + public List getRelativeSteps() { + return relativeSteps; + } + } + + private static final class RelativeStep { + private final char combinator; + private final CssSelector selector; + + public RelativeStep(char combinator, CssSelector selector) { + this.combinator = combinator; + this.selector = selector; + } + + public char getCombinator() { + return combinator; + } + + public CssSelector getSelector() { + return selector; + } + } +} diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java index 080fc6b0dd..9d9be744a3 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastChildSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java index 67c947c4c1..913226c1d5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassLastOfTypeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java index 6011ac8679..d85027cfc1 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java index a73389bcb6..8db64c740c 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthChildSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastChildSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastChildSelectorItem.java index d04ddfed2f..cad32e04b9 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastChildSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastChildSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastOfTypeSelectorItem.java index 3ed6e774b4..539d9530e5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastOfTypeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthLastOfTypeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java index e8a94b0e73..e6c55deb16 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthOfTypeSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java index edeb9a676a..76467068eb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNthSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java index bc394eb61f..4665e44c1b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassRootSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java index bf11f8d3c4..d75009350d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -23,9 +23,13 @@ This file is part of the iText (R) project. package com.itextpdf.styledxmlparser.css.selector.item; import com.itextpdf.styledxmlparser.css.CommonCssConstants; +import com.itextpdf.styledxmlparser.css.parse.CssSelectorParser; import com.itextpdf.styledxmlparser.css.selector.CssSelector; +import com.itextpdf.styledxmlparser.css.selector.ICssSelector; import com.itextpdf.styledxmlparser.node.INode; +import java.util.List; + /** * {@link ICssSelectorItem} implementation for pseudo class selectors. */ @@ -111,14 +115,10 @@ public static CssPseudoClassSelectorItem create(String pseudoClass, String argum return new CssPseudoClassNthOfTypeSelectorItem(arguments); case CommonCssConstants.NTH_LAST_OF_TYPE: return new CssPseudoClassNthLastOfTypeSelectorItem(arguments); + case CommonCssConstants.HAS: + return createHasSelectorItem(arguments); case CommonCssConstants.NOT: - CssSelector selector = new CssSelector(arguments); - for (ICssSelectorItem item : selector.getSelectorItems()) { - if (item instanceof CssPseudoClassNotSelectorItem || item instanceof CssPseudoElementSelectorItem) { - return null; - } - } - return new CssPseudoClassNotSelectorItem(selector); + return createNotSelectorItem(arguments); case CommonCssConstants.ROOT: return CssPseudoClassRootSelectorItem.getInstance(); case CommonCssConstants.LINK: @@ -150,6 +150,31 @@ public static CssPseudoClassSelectorItem create(String pseudoClass, String argum } } + private static CssPseudoClassNotSelectorItem createNotSelectorItem(String arguments) { + CssSelector selector = new CssSelector(arguments); + for (ICssSelectorItem item : selector.getSelectorItems()) { + if (item instanceof CssPseudoClassNotSelectorItem || item instanceof CssPseudoElementSelectorItem) { + return null; + } + } + return new CssPseudoClassNotSelectorItem(selector); + } + + private static CssPseudoClassHasSelectorItem createHasSelectorItem(String arguments) { + List hasSelectors = CssSelectorParser.parseCommaSeparatedSelectors(arguments); + for (ICssSelector hasSelector : hasSelectors) { + if (hasSelector instanceof CssSelector) { + for (ICssSelectorItem item : ((CssSelector) hasSelector).getSelectorItems()) { + // Pseudo-elements are restricted as they don't make sense in :has() context. + if (item instanceof CssPseudoElementSelectorItem || item instanceof CssPseudoClassHasSelectorItem) { + return null; + } + } + } + } + return new CssPseudoClassHasSelectorItem(hasSelectors, arguments); + } + /* (non-Javadoc) * @see com.itextpdf.styledxmlparser.css.selector.item.ICssSelectorItem#getSpecificity() */ diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java index 1c42493a0c..6d839e5048 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoElementSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSelectorItemTraversalUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSelectorItemTraversalUtil.java new file mode 100644 index 0000000000..ba196476cd --- /dev/null +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSelectorItemTraversalUtil.java @@ -0,0 +1,188 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.styledxmlparser.css.selector.item; + +import com.itextpdf.styledxmlparser.node.ICustomElementNode; +import com.itextpdf.styledxmlparser.node.IDocumentNode; +import com.itextpdf.styledxmlparser.node.IElementNode; +import com.itextpdf.styledxmlparser.node.INode; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Stack; +import java.util.function.Consumer; +import java.util.function.Predicate; + +/** + * Utility class providing methods for traversing and filtering nodes + * in a tree structure, particularly focusing on element nodes based + * on various criteria. This class serves as a helper for operations + * related to CSS selector processing. + */ +final class CssSelectorItemTraversalUtil { + + private CssSelectorItemTraversalUtil() { + // utility class + } + + static boolean isValidElementNode(INode node) { + return node instanceof IElementNode + && !(node instanceof ICustomElementNode) + && !(node instanceof IDocumentNode); + } + + static List getElementSiblings(INode node) { + INode parent = node != null ? node.parentNode() : null; + return parent != null ? getElementChildren(parent) : Collections.emptyList(); + } + + static List getElementSiblingsOfSameType(INode node) { + if (!(node instanceof IElementNode)) { + return Collections.emptyList(); + } + INode parent = node.parentNode(); + if (parent == null) { + return Collections.emptyList(); + } + + List children = parent.childNodes(); + if (children == null || children.isEmpty()) { + return Collections.emptyList(); + } + + List result = new ArrayList<>(children.size()); + String name = ((IElementNode) node).name(); + for (INode child : children) { + if (child instanceof IElementNode && name.equals(((IElementNode) child).name())) { + result.add(child); + } + } + + return result; + } + + static INode getNextElementSibling(INode node) { + INode parent = node != null ? node.parentNode() : null; + if (parent == null) { + return null; + } + + boolean afterNode = false; + for (INode sibling : parent.childNodes()) { + if (!afterNode) { + afterNode = (sibling == node); + continue; + } + if (sibling instanceof IElementNode) { + return sibling; + } + } + return null; + } + + static void forEachFollowingElementSibling(INode node, Consumer action) { + INode parent = node != null ? node.parentNode() : null; + if (parent == null) { + return; + } + + boolean afterNode = false; + for (INode sibling : parent.childNodes()) { + if (!afterNode) { + afterNode = (sibling == node); + continue; + } + if (sibling instanceof IElementNode) { + action.accept(sibling); + } + } + } + + static boolean anyDescendantElementMatches(INode scope, Predicate predicate) { + if (scope == null) { + return false; + } + + Stack stack = new Stack<>(); + for (INode child : scope.childNodes()) { + if (child instanceof IElementNode) { + stack.push(child); + } + } + + while (!stack.isEmpty()) { + INode candidate = stack.pop(); + if (predicate.test(candidate)) { + return true; + } + for (INode child : candidate.childNodes()) { + if (child instanceof IElementNode) { + stack.push(child); + } + } + } + + return false; + } + + static void forEachDescendantElement(INode scope, Consumer action) { + if (scope == null) { + return; + } + + Stack stack = new Stack<>(); + for (INode child : scope.childNodes()) { + if (child instanceof IElementNode) { + stack.push(child); + } + } + + while (!stack.isEmpty()) { + INode candidate = stack.pop(); + action.accept(candidate); + for (INode child : candidate.childNodes()) { + if (child instanceof IElementNode) { + stack.push(child); + } + } + } + } + + private static List getElementChildren(INode parent) { + if (parent == null) { + return Collections.emptyList(); + } + List children = parent.childNodes(); + if (children == null || children.isEmpty()) { + return Collections.emptyList(); + } + List result = new ArrayList<>(children.size()); + for (INode child : children) { + if (child instanceof IElementNode) { + result.add(child); + } + } + return result; + } +} diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java index ecbc35c84c..325e6e054d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSeparatorSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java index 6ee8ec5c41..93998963c0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssSpecificityConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java index 1edca63766..b16dc571c7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/CssTagSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java index 05b226954f..c095f7af6f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/selector/item/ICssSelectorItem.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java index ef18e71dae..4ebbecbe3f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java index df54f10119..8c87ce08ae 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java index bc4afab538..cf00a8e57b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java index 7c7296b624..9fbf7b57d0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java index 5022ec32a1..cd37c8b4b2 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java index e1ff66bf91..a2b25347d0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/CssUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java index f52fe16d3d..5ce362cd21 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/util/EscapeGroup.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java index 44c721e94b..fe7e5f78a6 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMaster.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java index cfaf38a583..bf536714ab 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDataTypeValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java index 8bd157edea..7c3e84dab2 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/ICssDeclarationValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDefaultValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDefaultValidator.java index 36857e061b..12d9e226df 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDefaultValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDefaultValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDeviceCmykAwareValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDeviceCmykAwareValidator.java index 34084034ec..6a6f143e2c 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDeviceCmykAwareValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/CssDeviceCmykAwareValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java index 586419dfb1..9d36e753a5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/ArrayDataTypeValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java index eff684d102..8415c8c040 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBackgroundValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java index 82566708b7..f7955d69b8 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssBlendModeValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssCmykAwareColorValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssCmykAwareColorValidator.java index c79a470680..7202b44879 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssCmykAwareColorValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssCmykAwareColorValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java index 4e6721a371..c6b277a5c5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssColorValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java index 1c4c4d7e83..71c15a4031 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssEnumValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java index b967129a14..5b0d075817 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIdentifierValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIntegerNumberValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIntegerNumberValueValidator.java index ef86ac0137..e0e4339fae 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIntegerNumberValueValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssIntegerNumberValueValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java index 52c3638c89..b274dc5179 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssLengthValueValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java index f2f1d77c64..da471b012c 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssNumberValueValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java index 37beeb1320..d22f8b7aa7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssPercentageValueValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java index 2dc8efeebd..f41e966f17 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssQuotesValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java index 1a593ade88..9a588d98f7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/datatype/CssTransformValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java index ad2545bf3a..1b1b1293c7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/MultiTypeDeclarationValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java index abb24cf1e6..f06eccc014 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/validate/impl/declaration/SingleTypeDeclarationValidator.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java index d9d9f1d46c..edf901eacc 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/ReadingByteLimitException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java index 8191b6987e..33744d9a12 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXMLParserException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java index 38e4e539cf..8b0b194906 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/exceptions/StyledXmlParserExceptionMessage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java index 73096912dd..688dc47348 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/logs/StyledXmlParserLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java index 90ea6a9db2..a9d569c0c5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttribute.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java index 0bfdca23b2..1116a77591 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributesContainer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributesContainer.java index 0aa73ab019..e92465dd25 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributesContainer.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IAttributesContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java index 0aeebaee77..81acd333d7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ICustomElementNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java index 5b7d459e76..9f253d8fa8 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDataNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java index 1cd03d5972..d691bf8c75 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java index 071e52986c..a65877db78 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IDocumentTypeNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java index c817a86148..4bb2bb4bba 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IElementNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INameContainer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INameContainer.java index e17fa6317d..bc0e9e5bfc 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INameContainer.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INameContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java index 89b221cd69..d62c029c7e 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/INode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java index dc698d1442..b60f4675e6 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IStylesContainer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java index d7d92bb2eb..6d572d2e52 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/ITextNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IXmlDeclarationNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IXmlDeclarationNode.java index 3d986df3b5..e7db25c5c7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IXmlDeclarationNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/IXmlDeclarationNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java index e3581ea861..e76a42eb76 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupHtmlParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java index 09732b7e0e..0812019c72 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/JsoupXmlParser.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java index 4ad9ea2e37..1e42135bd5 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttribute.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java index 81d5bd7276..465c7e1f86 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupAttributes.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java index 10810115e3..63d5b056bb 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDataNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java index 47e9480e3b..158099c9e7 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java index 36d9be8fe6..0cba59c817 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupDocumentTypeNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java index 9fc48d6a66..bc1e78da92 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupElementNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java index 6ee29143e1..af0aa9b455 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java index d88e196c9b..5daa0deabf 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupTextNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupXmlDeclarationNode.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupXmlDeclarationNode.java index 2cdfca3d46..225d9cc3cc 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupXmlDeclarationNode.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/node/impl/jsoup/node/JsoupXmlDeclarationNode.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java index 3682af82f1..e6b941d322 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProvider.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java index 1f6a4939e5..2205cfa7f1 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java index 6f6bd94f59..d3cee5e586 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/IResourceRetriever.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java index 7698f1ae2e..6c15b94a95 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java index 188bda6fb9..0d1c3ffd69 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java index 8ec2725c83..b09181f57d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCache.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java index 809586215c..c5dafa661f 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriEncodeUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java index c09867c318..be4381f7d0 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/CssVariableUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/CssVariableUtil.java index 5385b552b2..b710458d2a 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/CssVariableUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/CssVariableUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java index e0131656c8..60dad62597 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java index b6bc006a0f..e2fbf10d5d 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/StyleUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java index 8824b3867e..47244a8d9b 100644 --- a/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java +++ b/styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigCustomMembers.java b/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigCustomMembers.java index 0e59a43bca..9e391cb2e5 100644 --- a/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigCustomMembers.java +++ b/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigCustomMembers.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigMapping.java b/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigMapping.java index 716b9b731b..affb61a2c8 100644 --- a/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigMapping.java +++ b/styled-xml-parser/src/sharpenconfig/java/com/itextpdf/styledxmlparser/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactoryTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactoryTest.java index 0cd656d03d..5c683ffc70 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactoryTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssAtRuleFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java index 96f10c880f..3e5d721f2b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceRuleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java index ac79ba3c20..123422d616 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceSrcTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java index 7f4bea9462..2e1bf537b9 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssFontFaceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java index cfbf12bded..16b5f61256 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssMatchingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssRuleSetTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssRuleSetTest.java index 9e98d551f8..4c51734373 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssRuleSetTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/CssRuleSetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java index 66c51d8a77..a7deebeaf5 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/CssMediaRuleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java index 8d1f45078e..cf23194a90 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaExpressionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java index 7c717f798e..42498e614c 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/media/MediaQueryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java index f26d6777c0..1b5ca0d326 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/page/PageMarginBoxContextNodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParserTest.java index 6bfcb85b19..675d54db90 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParserTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationVarParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java index 10fc49cb03..8bb8e0931f 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssRuleSetParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java index d4181280a5..974a1600d3 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssSelectorParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -32,9 +32,13 @@ This file is part of the iText (R) project. import com.itextpdf.styledxmlparser.css.selector.item.CssSeparatorSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.CssTagSelectorItem; import com.itextpdf.styledxmlparser.css.selector.item.ICssSelectorItem; +import com.itextpdf.styledxmlparser.css.selector.ICssSelector; import com.itextpdf.styledxmlparser.exceptions.StyledXmlParserExceptionMessage; +import com.itextpdf.styledxmlparser.logs.StyledXmlParserLogMessageConstant; import com.itextpdf.test.ExtendedITextTest; +import com.itextpdf.test.annotations.LogMessage; +import com.itextpdf.test.annotations.LogMessages; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Tag; @@ -210,7 +214,7 @@ public void listSelectorTest() throws IOException { @Test public void separatorAtStartTest() throws IOException { - String selector = "+test"; + String selector = "+ test"; Assertions.assertThrows(IllegalArgumentException.class, () -> CssSelectorParser.parseSelectorItems(selector)); } @@ -324,4 +328,75 @@ public void camelCaseInPseudoStateTest() { Assertions.assertTrue(parsedSelector.get(1) instanceof CssPseudoClassSelectorItem); Assertions.assertEquals(":nth-last-of-type(EvEn)", parsedSelector.get(1).toString()); } -} \ No newline at end of file + + @Test + public void descendantCombinatorCollapsesMultipleSpacesTest() throws IOException { + String selector = "ul.my-things li"; + List parsedSelector = CssSelectorParser.parseSelectorItems(selector); + + Assertions.assertEquals(4, parsedSelector.size()); + Assertions.assertTrue(parsedSelector.get(0) instanceof CssTagSelectorItem); + Assertions.assertEquals("ul", parsedSelector.get(0).toString()); + Assertions.assertTrue(parsedSelector.get(1) instanceof CssClassSelectorItem); + Assertions.assertEquals(".my-things", parsedSelector.get(1).toString()); + + Assertions.assertTrue(parsedSelector.get(2) instanceof CssSeparatorSelectorItem); + // Multiple spaces must be treated as a single descendant combinator + Assertions.assertEquals(" ", parsedSelector.get(2).toString()); + + Assertions.assertTrue(parsedSelector.get(3) instanceof CssTagSelectorItem); + Assertions.assertEquals("li", parsedSelector.get(3).toString()); + } + + @Test + public void parseCommaSeparatedSelectorsNullInputTest() { + List selectors = CssSelectorParser.parseCommaSeparatedSelectors(null); + Assertions.assertNotNull(selectors); + Assertions.assertTrue(selectors.isEmpty()); + } + + @Test + public void parseCommaSeparatedSelectorsOnlyCommasTest() { + List selectors = CssSelectorParser.parseCommaSeparatedSelectors(",,,"); + Assertions.assertNotNull(selectors); + Assertions.assertTrue(selectors.isEmpty()); + } + + @LogMessages(messages = @LogMessage(messageTemplate = StyledXmlParserLogMessageConstant.INCORRECT_CHARACTER_SEQUENCE)) + @Test + public void parseCommaSeparatedSelectorsMalformedParenthesisDoesNotCrashTest() { + List selectors = CssSelectorParser.parseCommaSeparatedSelectors("a),b,c"); + + Assertions.assertEquals(3, selectors.size()); + Assertions.assertEquals("a)", selectors.get(0).toString()); + Assertions.assertEquals("b", selectors.get(1).toString()); + Assertions.assertEquals("c", selectors.get(2).toString()); + } + + @Test + public void parseCommaSeparatedSelectorsBackslashBeforeCommaDoesNotCrashTest() { + List selectors = CssSelectorParser.parseCommaSeparatedSelectors("\\,a"); + + Assertions.assertEquals(2, selectors.size()); + Assertions.assertEquals("\uFFFD", selectors.get(0).toString()); + Assertions.assertEquals("a", selectors.get(1).toString()); + } + + @Test + public void whitespaceAfterChildCombinatorIsIgnoredTest() throws IOException { + // SeparatorState consumes whitespace following a non-space combinator without creating extra items. + String selector = "a>\n\t b"; + List parsedSelector = CssSelectorParser.parseSelectorItems(selector); + + Assertions.assertEquals(3, parsedSelector.size()); + Assertions.assertTrue(parsedSelector.get(0) instanceof CssTagSelectorItem); + Assertions.assertEquals("a", parsedSelector.get(0).toString()); + + Assertions.assertTrue(parsedSelector.get(1) instanceof CssSeparatorSelectorItem); + Assertions.assertEquals(" > ", parsedSelector.get(1).toString()); + + Assertions.assertTrue(parsedSelector.get(2) instanceof CssTagSelectorItem); + Assertions.assertEquals("b", parsedSelector.get(2).toString()); + } + +} diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java index 17e3704674..3d4c6fafa0 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleAttributeParseTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java index 100deca3aa..b4a11d0ef0 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/parse/CssStyleSheetParserTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java index 709dadcfef..40ae6dd622 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementNodeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java index 4815b07722..6acf084d40 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/pseudo/CssPseudoElementUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java index 4dd6613543..6bec691c0b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java index 0d0612d622..b6208839bc 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssInheritanceUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java index d2625b9188..7443080446 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssPropertyMergerUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java index 6217366283..1b41e53693 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundPositionShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java index cb34d07265..52cd1c8d66 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BackgroundShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BorderRadiusShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BorderRadiusShorthandResolverTest.java index 6a8eee8c36..e9a64107af 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BorderRadiusShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/BorderRadiusShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ColumnsShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ColumnsShorthandResolverTest.java index b14d7a39ba..b46953d593 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ColumnsShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/ColumnsShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java index 1bfa432244..cec6e78f5d 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/CssShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java index 4ec2038e4a..aa3d76605b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexFlowShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java index 191d78fb32..bcd31f3955 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/FlexShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java index b4e0197e9e..b5e936575a 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/GapShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/MarkerShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/MarkerShorthandResolverTest.java index a69ee0abe2..e3dbe88739 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/MarkerShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/MarkerShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java index 43aad5b4b3..e41a6d31e3 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/PlaceItemsShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java index af7a053651..110771b2dd 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/TextDecorationUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShorthandResolverTest.java index 0d37d45502..5354c7233b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/ColumnRuleShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolverTest.java index 694cd19a2a..7b614dc962 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridItemShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolverTest.java index 3c21373cd1..ad6a086fca 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolverTest.java index 53f3d071d4..47c49f0a87 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/shorthand/impl/GridTemplateShorthandResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java index c083234bcc..e0ff9ddbe2 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssMatchesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java index a6401d6537..056e281221 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItemTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItemTest.java new file mode 100644 index 0000000000..6d2de90368 --- /dev/null +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassHasSelectorItemTest.java @@ -0,0 +1,790 @@ +/* + This file is part of the iText (R) project. + Copyright (c) 1998-2026 Apryse Group NV + Authors: Apryse Software. + + This program is offered under a commercial and under the AGPL license. + For commercial licensing, contact us at https://itextpdf.com/sales. For AGPL licensing, see below. + + AGPL licensing: + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package com.itextpdf.styledxmlparser.css.selector.item; + +import com.itextpdf.styledxmlparser.IXmlParser; +import com.itextpdf.styledxmlparser.css.parse.CssSelectorParser; +import com.itextpdf.styledxmlparser.css.selector.CssSelector; +import com.itextpdf.styledxmlparser.css.selector.ICssSelector; +import com.itextpdf.styledxmlparser.node.IDocumentNode; +import com.itextpdf.styledxmlparser.node.IElementNode; +import com.itextpdf.styledxmlparser.node.INode; +import com.itextpdf.styledxmlparser.node.impl.jsoup.JsoupHtmlParser; +import com.itextpdf.test.ExtendedITextTest; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("UnitTest") +public class CssPseudoClassHasSelectorItemTest extends ExtendedITextTest { + + @Test + public void hasDescendantSelectorItemTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("p")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode documentNode = htmlParser.parse("

"); + IElementNode host = findElementById(documentNode, "host"); + + Assertions.assertFalse(item.matches(documentNode)); + Assertions.assertTrue(item.matches(host)); + Assertions.assertFalse(item.matches(null)); + } + + @Test + public void hasDirectChildSelectorItemTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("> p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode docDirect = htmlParser.parse("

"); + IElementNode hostDirect = findElementById(docDirect, "host"); + + IDocumentNode docNested = htmlParser.parse("

"); + IElementNode hostNested = findElementById(docNested, "host"); + + Assertions.assertTrue(item.matches(hostDirect)); + Assertions.assertFalse(item.matches(hostNested)); + } + + @Test + public void hasNextSiblingSelectorItemTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("+ p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "" + + "

" + + "

" + + "
"); + IElementNode a = findElementById(doc, "a"); + + Assertions.assertTrue(item.matches(a)); + } + + @Test + public void hasNextSiblingSelectorItemSkipsNonElementNodesTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("+ p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "" + + " some text " + + "

" + + "
"); + IElementNode a = findElementById(doc, "a"); + + Assertions.assertTrue(item.matches(a)); + } + + @Test + public void hasFollowingSiblingSelectorItemTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("~ p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "" + + "" + + "

" + + "
"); + IElementNode a = findElementById(doc, "a"); + + Assertions.assertTrue(item.matches(a)); + } + + @Test + public void hasNegativeCaseNoMatchingElementsTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("p.needle")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode documentNode = htmlParser.parse("

"); + IElementNode host = findElementById(documentNode, "host"); + + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasSelectorWithCommaInAttributeTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("span[title='a,b']").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("
"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertTrue(item.matches(host)); + } + + + @Test + public void hasSelectorIntegrationViaCssSelectorTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode documentNode = htmlParser.parse( + "
" + + "

" + + "
" + + "
"); + + IElementNode a = findElementById(documentNode, "a"); + IElementNode b = findElementById(documentNode, "b"); + + CssSelector selector = new CssSelector("div:has(p)"); + + Assertions.assertTrue(selector.matches(a)); + Assertions.assertFalse(selector.matches(b)); + } + + @Test + public void hasDoesNotMatchBasedOnScopeElementItselfTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("div")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("
"); + IElementNode host = findElementById(doc, "host"); + + // Must be false because the scope element itself should not be considered a "descendant". + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasDescendantDeepNestedSelectorItemTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("p")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertTrue(item.matches(host)); + } + + @Test + public void hasDirectChildDoesNotMatchNestedDescendantTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("> p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasNextSiblingIsOnlyNextElementSiblingTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("+ p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "" + + "" + + "

" + + "
"); + IElementNode a = findElementById(doc, "a"); + + // Next element sibling is , so "+ p" must be false. + Assertions.assertFalse(item.matches(a)); + } + + @Test + public void hasFollowingSiblingSkipsUntilMatchTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("~ p").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "" + + "" + + "

" + + "
"); + IElementNode a = findElementById(doc, "a"); + + // "~ p" should match any following element sibling, not necessarily the next. + Assertions.assertTrue(item.matches(a)); + } + + @Test + public void hasSiblingSelectorsReturnFalseWhenNoParentTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("
"); + IElementNode root = findElementById(doc, "root"); + + CssPseudoClassHasSelectorItem nextSibling = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("+ p").get(0)); + CssPseudoClassHasSelectorItem followingSibling = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors("~ p").get(0)); + + Assertions.assertFalse(nextSibling.matches(root)); + Assertions.assertFalse(followingSibling.matches(root)); + } + + @Test + public void hasSupportsAttributeSelectorInArgumentsTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("[data-x]")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("
"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertTrue(item.matches(host)); + } + + @Test + public void hasSupportsMultiStepSelectorInArgumentsTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("div > p")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertTrue(item.matches(host)); + } + + @Test + public void hasIntegrationWithLeadingCombinatorViaCssSelectorTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "

" + + "

" + + "
"); + + IElementNode a = findElementById(doc, "a"); + IElementNode b = findElementById(doc, "b"); + + CssSelector selector = new CssSelector("div:has(> p)"); + + Assertions.assertTrue(selector.matches(a)); + Assertions.assertFalse(selector.matches(b)); + } + + @Test + public void hasCombinatorOnlyReturnsFalseTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors(">").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasSelectorListCommaSeparatedTest() { + // :has(p, span) should match if element has either p OR span descendant + CssSelector selector = new CssSelector("div:has(p, span)"); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "

" + + "
" + + "
" + + "
"); + + IElementNode a = findElementById(doc, "a"); + IElementNode b = findElementById(doc, "b"); + IElementNode c = findElementById(doc, "c"); + + Assertions.assertTrue(selector.matches(a)); // has

+ Assertions.assertTrue(selector.matches(b)); // has + Assertions.assertFalse(selector.matches(c)); // has neither + } + + @Test + public void hasSelectorWithMultipleCombinatorsDoesNotMatchWhenHierarchyDiffersTest() { + CssSelector selector = new CssSelector("div:has(div > p > span)"); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "

" + + "

" + + "
" + + "
" + + "
"); + + IElementNode a = findElementById(doc, "a"); + Assertions.assertFalse(selector.matches(a)); + } + + + @Test + public void hasSpecificityWithSelectorListTest() { + // Specificity should be the maximum of all selectors + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + java.util.Arrays.asList((ICssSelector) new CssSelector("p"), (ICssSelector) new CssSelector("#id")), + "p, #id" + ); + + // #id has higher specificity (0,1,0,0) than p (0,0,0,1) + Assertions.assertEquals(new CssSelector("#id").calculateSpecificity(), item.getSpecificity()); + } + + @Test + public void hasMalformedCombinatorOnlyTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem( + CssSelectorParser.parseCommaSeparatedSelectors(">").get(0)); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasWithPseudoElementReturnsNullTest() { + // Pseudo-elements in :has() should not be supported + CssPseudoClassSelectorItem item = CssPseudoClassSelectorItem.create("has", "p::before"); + Assertions.assertNull(item); + } + + @Test + public void hasEmptyArgumentsReturnsFalseTest() { + CssPseudoClassHasSelectorItem item = new CssPseudoClassHasSelectorItem(new CssSelector("")); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse("

"); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertFalse(item.matches(host)); + } + + @Test + public void hasNoSpaceAfterLeadingCombinatorTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "

" + + "

" + + "
"); + + IElementNode a = findElementById(doc, "a"); + IElementNode b = findElementById(doc, "b"); + + Assertions.assertTrue(new CssSelector("div:has(>p)").matches(a)); + Assertions.assertTrue(new CssSelector("div:has(>p)").matches(b)); // direct children are and

in b? actually b has direct and

+ Assertions.assertTrue(new CssSelector("div:has(>p)").matches(b)); + + Assertions.assertFalse(new CssSelector("div:has(+p)").matches(a)); // next element sibling is b (div), not p + Assertions.assertFalse(new CssSelector("div:has(~p)").matches(a)); // following siblings are divs, not p + } + + @Test + public void hasSelectorListWithMixedLeadingCombinatorsTest() { + // div:has(> p, +span, em) should match: + // - by direct child p + // - OR by next sibling span + // - OR by descendant em + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "

" + + "

" + + "
" + + "
" + + "" + + "
"); + + IElementNode x = findElementById(doc, "x"); + IElementNode y = findElementById(doc, "y"); + IElementNode z = findElementById(doc, "z"); + + CssSelector selector = new CssSelector("div:has(> p, +span, em)"); + + Assertions.assertTrue(selector.matches(x)); // has direct child

+ Assertions.assertFalse(selector.matches(y)); // no direct

, no descendant , next sibling is z (div) not span + Assertions.assertTrue(selector.matches(z)); // has descendant + } + + @Test + public void hasDeepRelativeSelectorTest() { + // :has(> div > p) requires a direct child div which itself has a direct child p. + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docOk = htmlParser.parse("

"); + IElementNode hostOk = findElementById(docOk, "host"); + + IDocumentNode docBad = htmlParser.parse("

"); + IElementNode hostBad = findElementById(docBad, "host"); + + CssSelector selector = new CssSelector("section:has(> div > p)"); + + Assertions.assertTrue(selector.matches(hostOk)); + Assertions.assertFalse(selector.matches(hostBad)); + } + + @Test + public void hasChainedNextSiblingRelativeSelectorTest() { + // :has(+ div > p) requires that the next element sibling is a div that has a direct child p. + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docOk = htmlParser.parse( + "
" + + "" + + "

" + + "
"); + IElementNode hostOk = findElementById(docOk, "host"); + + IDocumentNode docBadNextIsNotDiv = htmlParser.parse( + "
" + + "" + + "

" + + "
"); + IElementNode hostBadNextIsNotDiv = findElementById(docBadNextIsNotDiv, "host"); + + IDocumentNode docBadDivWithoutP = htmlParser.parse( + "
" + + "" + + "
" + + "
"); + IElementNode hostBadDivWithoutP = findElementById(docBadDivWithoutP, "host"); + + CssSelector selector = new CssSelector("span:has(+ div > p)"); + + Assertions.assertTrue(selector.matches(hostOk)); + Assertions.assertFalse(selector.matches(hostBadNextIsNotDiv)); + Assertions.assertFalse(selector.matches(hostBadDivWithoutP)); + } + + @Test + public void hasChainedFollowingSiblingRelativeSelectorTest() { + // :has(~ div > p) requires that some following element sibling is a div that has a direct child p. + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docOk = htmlParser.parse( + "
" + + "" + + "" + + "

" + + "
"); + IElementNode hostOk = findElementById(docOk, "host"); + + IDocumentNode docBadNoFollowingDiv = htmlParser.parse( + "
" + + "" + + "" + + "

" + + "
"); + IElementNode hostBadNoFollowingDiv = findElementById(docBadNoFollowingDiv, "host"); + + IDocumentNode docBadDivWithoutP = htmlParser.parse( + "
" + + "" + + "
" + + "
" + + "
"); + IElementNode hostBadDivWithoutP = findElementById(docBadDivWithoutP, "host"); + + CssSelector selector = new CssSelector("span:has(~ div > p)"); + + Assertions.assertTrue(selector.matches(hostOk)); + Assertions.assertFalse(selector.matches(hostBadNoFollowingDiv)); + Assertions.assertFalse(selector.matches(hostBadDivWithoutP)); + } + + + @Test + public void hasNestedHasInFullSelectorShouldThrowTest() { + // Factory returns null for nested :has(), and parser treats unsupported pseudo selector as an error. + Assertions.assertThrows(IllegalArgumentException.class, () -> new CssSelector("div:has(p:has(span))")); + } + + @Test + public void hasNestedNotSelectorTest() { + // div:has(p:not(.ignore)) + CssSelector selector = new CssSelector("div:has(p:not(.ignore))"); + + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
" + + "

Valid

" + + "

Ignored

" + + "
"); + + IElementNode a = findElementById(doc, "a"); + IElementNode b = findElementById(doc, "b"); + + Assertions.assertTrue(selector.matches(a)); + Assertions.assertFalse(selector.matches(b)); + } + + @Test + public void hasWithComplexDescendantSelectorTest() { + // div:has(section p) means: match a div that contains a section which contains a p + // The section must be INSIDE the div, not outside + IXmlParser htmlParser = new JsoupHtmlParser(); + + // Case 1: section is INSIDE the div -> should match + IDocumentNode docMatch = htmlParser.parse( + "
" + + "
" + + "

" + + "
" + + "
"); + IElementNode hostMatch = findElementById(docMatch, "host"); + + // Case 2: section is OUTSIDE the div (ancestor) -> should NOT match + // because :has() only searches descendants + IDocumentNode docNoMatch = htmlParser.parse( + "
" + + "
" + + "

" + + "
" + + "
"); + IElementNode hostNoMatch = findElementById(docNoMatch, "host"); + + CssSelector selector = new CssSelector("div:has(section p)"); + + // Should match: div contains section > p + Assertions.assertTrue(selector.matches(hostMatch)); + + // Should NOT match: section is ancestor, not descendant + // This is correct behavior per CSS spec + Assertions.assertFalse(selector.matches(hostNoMatch)); + } + + @Test + public void hasWithNestedStructureRequiringBothLevelsTest() { + // div:has(ul li.active) - match div that has a ul containing li.active + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docMatch = htmlParser.parse( + "
" + + "
    " + + "
  • Item
  • " + + "
" + + "
"); + + IDocumentNode docNoUl = htmlParser.parse( + "
" + + "
  • Item without ul parent
  • " + + "
    "); + + IDocumentNode docNoActiveClass = htmlParser.parse( + "
    " + + "
      " + + "
    • Item without active class
    • " + + "
    " + + "
    "); + + IElementNode a = findElementById(docMatch, "a"); + IElementNode b = findElementById(docNoUl, "b"); + IElementNode c = findElementById(docNoActiveClass, "c"); + + CssSelector selector = new CssSelector("div:has(ul li.active)"); + + Assertions.assertTrue(selector.matches(a)); // has ul > li.active + Assertions.assertFalse(selector.matches(b)); // li.active exists but not inside ul + Assertions.assertFalse(selector.matches(c)); // ul > li exists but not .active + } + + @Test + public void hasWithAdjacentSiblingSelectorInArgumentsTest() { + // div:has(span + p) should match only when a

    exists whose immediately preceding sibling is + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docOk = htmlParser.parse( + "

    " + + "" + + "

    " + + "
    "); + IElementNode hostOk = findElementById(docOk, "host"); + + IDocumentNode docBadNotAdjacent = htmlParser.parse( + "
    " + + "" + + "" + + "

    " + + "
    "); + IElementNode hostBadNotAdjacent = findElementById(docBadNotAdjacent, "host"); + + CssSelector selector = new CssSelector("div:has(span + p)"); + + Assertions.assertTrue(selector.matches(hostOk)); + Assertions.assertFalse(selector.matches(hostBadNotAdjacent)); + } + + @Test + public void hasWithGeneralSiblingSelectorInArgumentsTest() { + // div:has(span ~ p) should match when a

    exists that has any preceding sibling + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode docOk = htmlParser.parse( + "

    " + + "" + + "" + + "

    " + + "
    "); + IElementNode hostOk = findElementById(docOk, "host"); + + IDocumentNode docBadSpanAfterP = htmlParser.parse( + "
    " + + "

    " + + "" + + "
    "); + IElementNode hostBadSpanAfterP = findElementById(docBadSpanAfterP, "host"); + + CssSelector selector = new CssSelector("div:has(span ~ p)"); + + Assertions.assertTrue(selector.matches(hostOk)); + Assertions.assertFalse(selector.matches(hostBadSpanAfterP)); + } + + @Test + public void hasRelativeSelectorWithDescendantCombinatorStepMatchesDeepDescendantTest() { + // Covers CssPseudoClassHasSelectorItem#fillNextScopesByCombinator case ' ' + // via a relative selector that includes a descendant combinator step: + // :has(> div p) => first step '>' then step ' ' (descendant). + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode doc = htmlParser.parse( + "
    " + + "
    " + + "

    " + + "
    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector("section:has(> div p.target)"); + Assertions.assertTrue(selector.matches(host)); + } + + @Test + public void hasRelativeSelectorWithDescendantCombinatorStepDoesNotEscapeChildScopeTest() { + // Negative case for :has(> div p): p exists, but not as a descendant of the matched "div" scope. + IXmlParser htmlParser = new JsoupHtmlParser(); + + IDocumentNode doc = htmlParser.parse( + "
    " + + "
    " + + "

    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector("section:has(> div p.target)"); + Assertions.assertFalse(selector.matches(host)); + } + + @Test + public void hasArgumentSelectorDoesNotEscapeHasScopeWhenMatchingAncestorsTest() { + // Verifies CssSelector#matchesWithinScope boundary is respected inside :has(). + // The candidate

    is inside the host

    , but "body p" requires an ancestor "body". + // Since ancestor traversal is limited to the :has() scope element, this must be false. + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "" + + "

    " + + ""); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector("div:has(body p)"); + Assertions.assertFalse(selector.matches(host)); + } + + @Test + public void hasRelativeSelectorDescendantStepWorksAcrossMultipleCurrentScopesTest() { + // Ensures the descendant step (' ') is applied for EACH current scope when there are multiple + // scopes after a previous step (e.g. after '> div' there may be multiple div scopes). + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
    " + + "

    " + + "

    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector("section:has(> div p.target)"); + Assertions.assertTrue(selector.matches(host)); + } + + @Test + public void hasRelativeSelectorDescendantStepReturnsFalseWhenNoDescendantMatchesInAnyScopeTest() { + // Negative counterpart to the test above. + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
    " + + "

    " + + "

    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector("section:has(> div p.target)"); + Assertions.assertFalse(selector.matches(host)); + } + + @Test + public void emptyHasTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
    " + + "

    " + + "

    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + Assertions.assertFalse(new CssSelector("has()").matches(host)); + Assertions.assertFalse(new CssSelector("has(,)").matches(host)); + } + + @Test + public void trippleHasTest() { + IXmlParser htmlParser = new JsoupHtmlParser(); + IDocumentNode doc = htmlParser.parse( + "
    " + + "

    " + + "

    " + + "
    "); + IElementNode host = findElementById(doc, "host"); + + CssSelector selector = new CssSelector(":has(.c1, > .target, > .c2)"); + Assertions.assertTrue(selector.matches(host)); + } + + private static IElementNode findElementById(INode root, String id) { + if (root instanceof IElementNode) { + IElementNode el = (IElementNode) root; + String attr = el.getAttribute("id"); + if (id.equals(attr)) { + return el; + } + } + + for (INode child : root.childNodes()) { + IElementNode found = findElementById(child, id); + if (found != null) { + return found; + } + } + return null; + } +} diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItemTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItemTest.java index d47e13848e..5de9eb1974 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItemTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/CssPseudoClassNotSelectorItemTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java index cfc5dc771a..c9c93dc657 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/selector/item/SpecificityCalculationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java index 6a08876d9d..71f565d360 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssBackgroundUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java index 7999384ff2..92c4a498cb 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssDimensionParsingUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java index d3fcbaacca..a340c76c15 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssGradientUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java index 24ffbd470d..16ab888b2a 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssPropertyNormalizerTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java index 4cb6716118..9cb15480fa 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssTypesValidationUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java index d2294830c8..34443c0e79 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/util/CssUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java index 08d30d8c54..b9d780d518 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/ArrayDataTypeValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java index 9d52ec648d..ac6d448d9b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBackgroundValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java index 66d6810826..02940399da 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssBlendModeValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java index 739f612080..b10883d56d 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssDeclarationValidationMasterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssIntegerNumberValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssIntegerNumberValueValidatorTest.java index 9d2370c3a1..25d7cb5dbe 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssIntegerNumberValueValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssIntegerNumberValueValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java index 95359be41a..2f024efd82 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssLengthValueValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java index c8e69bd509..9dff334865 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssNumberValueValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java index e399ef9d4c..a3b1721b27 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/validate/CssPercentageValueValidatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProviderTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProviderTest.java index 5aa74df0d9..a4ac437ed8 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProviderTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/font/BasicFontProviderTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. -Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetrieverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetrieverTest.java index 58782f6e4b..9a39317e55 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetrieverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/DefaultResourceRetrieverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -133,4 +133,4 @@ private void startServer() throws IOException, InterruptedException { } } } -} \ No newline at end of file +} diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java index f8a64c134c..313d77c70b 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/LimitedInputStreamTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java index e7fe3f237d..5abc4061f9 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/ResourceResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java index 98b026cbd5..7e3ce64e2e 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/SimpleImageCacheTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java index e9d6f14ad1..b92d5451d7 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/resolver/resource/UriResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/CssVariableUtilUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/CssVariableUtilUnitTest.java index 62d28cd196..5ffee1429c 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/CssVariableUtilUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/CssVariableUtilUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java index 7b326c8099..8f3046d9e2 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/FontFamilySplitterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java index 781de03690..1735e5cf01 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/StyleUtilUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java index 1040285718..63ecb801cc 100644 --- a/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java +++ b/styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/util/WhiteSpaceUtilUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/pom.xml b/svg/pom.xml index c9439bf378..c52c6dbcc6 100644 --- a/svg/pom.xml +++ b/svg/pom.xml @@ -5,7 +5,7 @@ com.itextpdf root - 9.5.0 + 9.6.0-SNAPSHOT svg diff --git a/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java b/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java index 411b524cd0..aad67364a0 100644 --- a/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java +++ b/svg/src/main/java/com/itextpdf/svg/MarkerVertexType.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/SvgConstants.java b/svg/src/main/java/com/itextpdf/svg/SvgConstants.java index 236c265d31..1e1d838aca 100644 --- a/svg/src/main/java/com/itextpdf/svg/SvgConstants.java +++ b/svg/src/main/java/com/itextpdf/svg/SvgConstants.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java b/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java index b9afb0b3da..9cfb16cdf7 100644 --- a/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java +++ b/svg/src/main/java/com/itextpdf/svg/converter/SvgConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java b/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java index 300099a4bf..a027b2d213 100644 --- a/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java +++ b/svg/src/main/java/com/itextpdf/svg/css/SvgCssContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/css/SvgStrokeParameterConverter.java b/svg/src/main/java/com/itextpdf/svg/css/SvgStrokeParameterConverter.java index 137c4bd0dc..d46666e798 100644 --- a/svg/src/main/java/com/itextpdf/svg/css/SvgStrokeParameterConverter.java +++ b/svg/src/main/java/com/itextpdf/svg/css/SvgStrokeParameterConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java index 282578e696..2c1b70a2fd 100644 --- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java +++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgAttributeInheritance.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java index ced6cac03b..63c7d18750 100644 --- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java +++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java index 9567eb74f9..2f1dfbf7df 100644 --- a/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java +++ b/svg/src/main/java/com/itextpdf/svg/css/impl/SvgStyleResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/element/SvgImage.java b/svg/src/main/java/com/itextpdf/svg/element/SvgImage.java index 2b2f719086..ed0ea7dc90 100644 --- a/svg/src/main/java/com/itextpdf/svg/element/SvgImage.java +++ b/svg/src/main/java/com/itextpdf/svg/element/SvgImage.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java index 964912599c..5edddb8d12 100644 --- a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java +++ b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgExceptionMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java index 2d41d8f2f3..110d957549 100644 --- a/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java +++ b/svg/src/main/java/com/itextpdf/svg/exceptions/SvgProcessingException.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java b/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java index 044b00aa1e..be9e055751 100644 --- a/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java +++ b/svg/src/main/java/com/itextpdf/svg/logs/SvgLogMessageConstant.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java index 5d798ee473..137d6397ea 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgConverterProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java index 56f3193322..2ba39987a4 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java index 91b3805ddf..fbb634e737 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/ISvgProcessorResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java index ca4f67e1c0..76151cb46d 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java index 516422a5b3..a4217fda91 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/ProcessorState.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java index 726e65b5c1..adfeaa8e93 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgConverterProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java index 8a84ae5892..52c2a5b197 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java index ed84057539..e1d82a597a 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/SvgProcessorResult.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java b/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java index c0c7cd6adb..808c325b2f 100644 --- a/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java +++ b/svg/src/main/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessor.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java index 38247b53bb..c7d34cfe97 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/IBranchSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java b/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java index bb6eac056d..7b2f8e3fa8 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/IMarkerCapable.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java index 8829fcfdda..8728d2ab57 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/INoDrawSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java index 5f5dc36834..a8de4744d3 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java index 74eaf6bbbd..67b68a4fab 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/ISvgPaintServer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java b/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java index 0cde5e86db..dc48b37533 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/SvgDrawContext.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/SvgImageRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/SvgImageRenderer.java index 7ceb9fc352..ef77dbfcb6 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/SvgImageRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/SvgImageRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java index 4f322b4313..cdee3d937b 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java index 395e6a8a48..d09e95593c 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java index 078b5e2892..430f69d7e0 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/factories/ISvgNodeRendererFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java index 012fdb4894..3b2a440c23 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractBranchSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java index 24bb33df80..1ef9ef8abe 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractContainerSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java index 347b097d5e..3c519f6fb8 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractGradientSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java index c3377d96a0..7ce3c1afda 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/AbstractSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java index 0ce11e5693..4046c5cb93 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java index b73ceac680..bba7077ddb 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java index fe7103cec8..4e939dfcc7 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java index cd6be91a07..dbb789f14c 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java index 42b2a75184..aca6ccceda 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java index abcff98829..d8ec6e5e1a 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ISvgTextNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java index a25e2a44e7..6f5cb32b5a 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java index 61a524038f..19c846651c 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java index c201b370a8..5ae9512280 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java index 6cb7c803e2..16152ed6cb 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java index 79425f3fee..f320c3ea08 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java index c1650ec9da..4dbe513512 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java index 823856e2aa..c4bd4fdb81 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java index 297358b6f2..a44611bf46 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java index 90f6368294..4c6bc24559 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java index 14f1341cb4..c6ca233801 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java index 61afa40b16..e7ef969ca9 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java index 2938d64e16..0691aaa6c1 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java index a3071a3fbf..85e4a73097 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java index 622bb3fbfe..edab427484 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java index 9a75f889cb..6494bca4ab 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java index 5a22ffd094..d35f37ff0d 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/TextSvgTSpanBranchRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java b/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java index 212e2a4553..6863d5d610 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java index da4de611d9..91bad5d861 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShape.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java index 8c2fe07613..f95168fd19 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/IPathShapeMapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java index 0735ae5a92..beced6a17d 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/SvgPathShapeFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java index d5055c26a0..60b3f42426 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/AbstractPathShape.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java index a687565f38..4969f1bf73 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/ClosePath.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java index d5d2ceed3b..1f5ad3856d 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/CurveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java index 0dd827aff6..bb139d9237 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/EllipticalCurveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java index f4740f5714..ed2f223ae4 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/HorizontalLineTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java index a598eb31c8..90d831e150 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IControlPointCurve.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java index 3796873dc5..d94e8efe7c 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/IOperatorConverter.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java index a8440606ee..1c13c78556 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/LineTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java index af85c3de8f..051cfbc4fc 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/MoveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java index a3cfa545d2..415c95eee4 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/PathShapeMapper.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java index 5dc9042d32..caa68c0e49 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticCurveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java index 8970fb298b..ce7404afca 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/QuadraticSmoothCurveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java index ac3495a985..a2a3707354 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/SmoothSCurveTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java index 85ad7c70c0..33e8be0219 100644 --- a/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java +++ b/svg/src/main/java/com/itextpdf/svg/renderers/path/impl/VerticalLineTo.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java index 3ba218d93d..f8145c48f5 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/DrawUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java index 3df60a78d5..452614fa39 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgCoordinateUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java index 4543b75728..3ef8840d58 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgCssUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextProperties.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextProperties.java index 1c43f96d5b..dd7ca67692 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextProperties.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java index 452397e485..eaeab3c1be 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/SvgTextUtil.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/TemplateResolveUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/TemplateResolveUtils.java index e62eddb91e..b6f9b42747 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/TemplateResolveUtils.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/TemplateResolveUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java b/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java index 22f00cae76..48c069b0b1 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/TextRectangle.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java b/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java index 07bfe20de8..705005eb8f 100644 --- a/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java +++ b/svg/src/main/java/com/itextpdf/svg/utils/TransformUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/main/java/com/itextpdf/svg/xobject/SvgImageXObject.java b/svg/src/main/java/com/itextpdf/svg/xobject/SvgImageXObject.java index 9fd450cde4..feadd8b3a3 100644 --- a/svg/src/main/java/com/itextpdf/svg/xobject/SvgImageXObject.java +++ b/svg/src/main/java/com/itextpdf/svg/xobject/SvgImageXObject.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/sharpenconfig/java/com/itextpdf/svg/SharpenConfigMapping.java b/svg/src/sharpenconfig/java/com/itextpdf/svg/SharpenConfigMapping.java index d2581d844c..1c662553d8 100644 --- a/svg/src/sharpenconfig/java/com/itextpdf/svg/SharpenConfigMapping.java +++ b/svg/src/sharpenconfig/java/com/itextpdf/svg/SharpenConfigMapping.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java index 90809c9df0..218de19d7b 100644 --- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java index 49656fedb4..28d27fc85b 100644 --- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java +++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitNullTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java index fde3b73e09..589ca78d14 100644 --- a/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgConverterUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/converter/SvgTaggedConverterTest.java b/svg/src/test/java/com/itextpdf/svg/converter/SvgTaggedConverterTest.java index cd2be584cb..c8d3e573c1 100644 --- a/svg/src/test/java/com/itextpdf/svg/converter/SvgTaggedConverterTest.java +++ b/svg/src/test/java/com/itextpdf/svg/converter/SvgTaggedConverterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java index d1b8223e13..da7ebef502 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/AttributesRelativeUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/BackgroundTest.java b/svg/src/test/java/com/itextpdf/svg/css/BackgroundTest.java index c2ad0e28fd..6b4f75d076 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/BackgroundTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/BackgroundTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/BaselineTest.java b/svg/src/test/java/com/itextpdf/svg/css/BaselineTest.java index bc1dfa6c1b..69d9782229 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/BaselineTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/BaselineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/ColorTest.java b/svg/src/test/java/com/itextpdf/svg/css/ColorTest.java index 7c87f68428..c66b06ffc9 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/ColorTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/ColorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/CssVariableTest.java b/svg/src/test/java/com/itextpdf/svg/css/CssVariableTest.java index 556911a1f9..9fb5c4961e 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/CssVariableTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/CssVariableTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java index 6fc73a496d..b5fd154a3f 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/DefaultStyleInheritanceIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java b/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java index 381b6db56e..2f43663610 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/DefaultStylesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/DirectionTest.java b/svg/src/test/java/com/itextpdf/svg/css/DirectionTest.java index d1e24e6aec..3df03c7c52 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/DirectionTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/DirectionTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/DisplayTest.java b/svg/src/test/java/com/itextpdf/svg/css/DisplayTest.java index 8fed2ee5c1..3cf22186ba 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/DisplayTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/DisplayTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/FilterTest.java b/svg/src/test/java/com/itextpdf/svg/css/FilterTest.java index e4dda345ce..87f0fcdb1e 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/FilterTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/FilterTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/FontAttributesTest.java b/svg/src/test/java/com/itextpdf/svg/css/FontAttributesTest.java index 5d5cdacb34..867e7e58b8 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/FontAttributesTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/FontAttributesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -41,7 +41,7 @@ This file is part of the iText (R) project. public class FontAttributesTest extends SvgIntegrationTest { public static final String SOURCE_FOLDER = "./src/test/resources/com/itextpdf/svg/css/FontAttributesTest/"; public static final String DESTINATION_FOLDER = TestUtil.getOutputPath() + "/svg/css/FontAttributesTest/"; - public static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/svg/css/fonts/"; + public static final String FONTS_FOLDER = "./src/test/resources/com/itextpdf/svg/fonts/"; @BeforeAll public static void beforeClass() { diff --git a/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java index 87079dae83..c522209928 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/FontRelativeUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/ImportRuleTest.java b/svg/src/test/java/com/itextpdf/svg/css/ImportRuleTest.java index eb23925b21..d3e7171e42 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/ImportRuleTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/ImportRuleTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/MediaTest.java b/svg/src/test/java/com/itextpdf/svg/css/MediaTest.java index ba8693e846..1cfa5beae6 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/MediaTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/MediaTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/OffsetTest.java b/svg/src/test/java/com/itextpdf/svg/css/OffsetTest.java index f0441c530c..250d644e8a 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/OffsetTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/OffsetTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/OpacityTest.java b/svg/src/test/java/com/itextpdf/svg/css/OpacityTest.java index 6b5fbda05b..a2c637d11d 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/OpacityTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/OpacityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/OutlineTest.java b/svg/src/test/java/com/itextpdf/svg/css/OutlineTest.java index 065eb1be12..cb69de1536 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/OutlineTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/OutlineTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/SvgStrokeParameterConverterUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/SvgStrokeParameterConverterUnitTest.java index 087715ee06..ab75c03c78 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/SvgStrokeParameterConverterUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/SvgStrokeParameterConverterUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java index 5cab11f949..8c83e43587 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java index d0ff0d5f71..366c5c5a0d 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/SvgStyleResolverTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/VisibilityTest.java b/svg/src/test/java/com/itextpdf/svg/css/VisibilityTest.java index ae3c6bf2c4..6f4da4ae96 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/VisibilityTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/VisibilityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java b/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java index 54f5047ba8..1162897087 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/XLinkTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java b/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java index 5fd01a82d7..8c679e6f5b 100644 --- a/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/css/impl/SvgNodeRendererInheritanceResolverUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java index 934356bc3d..3bd91e84b2 100644 --- a/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/customization/CustomizeTextLeafSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java b/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java index f3531859db..a0b0ff13c1 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/css/impl/DummyCssResolver.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java b/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java index 463bcf8369..a2dbff631a 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/factories/DummySvgNodeFactory.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java b/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java index 022efc980f..1d97c5b4b1 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/processors/impl/DummySvgConverterProperties.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java index 89e78136da..bb717d104e 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyArgumentedConstructorSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java index 6653337784..506f33586e 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyBranchSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java index eb9c3b1caa..7148abda3d 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummyProcessableSvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java index e3d74c1d8a..e3ff593190 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/renderers/impl/DummySvgNodeRenderer.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java b/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java index 53538b67d7..10ec125e88 100644 --- a/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java +++ b/svg/src/test/java/com/itextpdf/svg/dummy/sdk/ExceptionInputStream.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java index 64b21ea041..44e00684a7 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/ColumnChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java index bcc818507a..8a4f1886be 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GanttChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java index b0a97917dc..703db75f11 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GaugeChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java index 7bc3c797be..cc94ecac35 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GeoChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java index ad26ecee0a..164f0a4628 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/GoogleChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java index 96c98e0210..544798e2bf 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/IntervalsChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java index 1636554b46..a1ed876bb2 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/LineChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java index a356887a3e..522c9d039a 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/PieChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java index e97b459fb6..afbd23667f 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SankeyChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java index 71e268d483..f428fe074a 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/ScatterChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java index 3c0d1b85e1..d15997d3cf 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SliceChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java index 437c24197e..2ecb503c40 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/SteppedAreaChartTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java index cf59edc588..d3066f9ce0 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TimelineChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java index 200f062efc..4ba72b84bd 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TreemapsChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java index 7ea63f6b65..6563daa285 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/TrendlinesChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java b/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java index 37a6675db9..465ea3425d 100644 --- a/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/googlecharts/WordTreesChartsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java b/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java index f1978ff156..3459e9aa4d 100644 --- a/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java +++ b/svg/src/test/java/com/itextpdf/svg/jfreesvg/JFreeSvgTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java index db9f2ff9ae..36e60fc41d 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/DefaultSvgProcessorIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java b/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java index 752b2bacbf..1637875a48 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/ProcessorStateTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java b/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java index 8d1bef8679..17a0ca1948 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/SvgConverterPropertiesTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java index fc69fe8b44..b25a3a12b3 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/DefaultSvgProcessorUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java index c7850b4151..fac09fb30a 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/SvgProcessorResultUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java index fba743e867..01c603dd2d 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontFaceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. @@ -64,33 +64,33 @@ public void unicodeRangeTest() throws IOException, InterruptedException { } @Test - public void droidSerifSingleQuotesTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifSingleQuotesTest"); + public void robotoSerifSingleQuotesTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifSingleQuotesTest"); } @Test - public void droidSerifWebFontTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifWebFontTest"); + public void robotoSerifWebFontTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifWebFontTest"); } @Test - public void droidSerifLocalFontTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifLocalFontTest"); + public void robotoSerifLocalFontTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifLocalFontTest"); } @Test - public void droidSerifLocalLocalFontTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifLocalLocalFontTest"); + public void robotoSerifLocalLocalFontTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifLocalLocalFontTest"); } @Test - public void droidSerifLocalWithMediaFontTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifLocalWithMediaFontTest"); + public void robotoSerifLocalWithMediaFontTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifLocalWithMediaFontTest"); } @Test - public void droidSerifLocalWithMediaRuleFontTest() throws IOException, InterruptedException { - convertAndCompare(sourceFolder, destinationFolder, "droidSerifLocalWithMediaRuleFontTest"); + public void robotoSerifLocalWithMediaRuleFontTest() throws IOException, InterruptedException { + convertAndCompare(sourceFolder, destinationFolder, "robotoSerifLocalWithMediaRuleFontTest"); } @Test diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java index 6a30af5052..18c30696aa 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/FontSizeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java index d87680c7bf..b728904aed 100644 --- a/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java +++ b/svg/src/test/java/com/itextpdf/svg/processors/impl/font/SvgFontProcessorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java index 60449a0b30..92198cc2a7 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryDrawTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java index e7814bffaa..b371e64e73 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/DefaultSvgNodeRendererFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java index 26f901da7c..0a942c7dc9 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/FillTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java index 0fec1bba2a..1a5afbf971 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/GUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java index e18df0ab50..9b75761b1b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/OpacityTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/RelativePositionsTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/RelativePositionsTest.java index 6d51460049..1cc456742d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/RelativePositionsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/RelativePositionsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java index eb15d4f917..6943b9b7bb 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/StrokeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java index 5d11c7a818..064fab5c6e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/SvgDrawContextTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/SvgImageRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/SvgImageRendererTest.java index 213e6a46cc..e4d8cc48f9 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/SvgImageRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/SvgImageRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java index 1eab3770ba..7181b6176d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/SvgIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java index 72e120e935..592ed7d66d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/TransformationApplicationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java index a974b3cf18..8327ffff99 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/TransparencyTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/VectorEffectTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/VectorEffectTest.java index 8535af26d9..8f6fcacaff 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/VectorEffectTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/VectorEffectTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/WhiteSpaceTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/WhiteSpaceTest.java index 183c208b47..269ad12f60 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/WhiteSpaceTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/WhiteSpaceTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java index 55d7447f55..13b222f23d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererFactoryTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java index a778896cb8..36dcbc0eef 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/factories/DefaultSvgNodeRendererMapperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java index 452fed3b13..177e0c848e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/AnimationSvgTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java index 770008edc3..ea54bfa4e0 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRendererUnitTest.java index 2fa8561e20..87db9b7a8c 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/CircleSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java index 38477fc2ff..e495a86c3d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java index df4484e467..8323459d9c 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererLowLevelIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java index db24f9e820..a6ab22367a 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ClipPathSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java index 5e10fb9a2f..467d903291 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java index edd3ba755d..5fd467406e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DefsSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DeviceCmykSvgTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DeviceCmykSvgTest.java index f90a584ad4..d3e5048f99 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/DeviceCmykSvgTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/DeviceCmykSvgTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java index a8607d99c5..9e82221a1d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java index 88c42acf08..c72522315a 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/EllipseSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java index 6ed2140bf4..d1230efa2a 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java index ac9b5c05ea..f54559918e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/GroupSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java index 89e541f3c8..80a0fafa52 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java index 72f6a0a725..84cb66cedd 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ImageSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java index 68028271bc..43dba22c10 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LineSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java index 77b67e8536..cc1fb5a1d8 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java index 344e5e8901..1793b92bde 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinkTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinkTest.java index 7326b73e7e..1d5d77d68a 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinkTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/LinkTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java index 3efe13595d..c23604fd2c 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java index dfc5d82348..745a8a6952 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MarkerSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java index f2d3130931..5c917928fd 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/MaskTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java index 68903ade7f..c8e897b754 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NamedObjectsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java index 3b659d8eff..52feb3df9b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/NestedSvgTagSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java index e7ab8c499b..18ba0c507b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/OverflowAttributeTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java index cc3bfc02ab..9c609cc0cb 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathOperatorSplitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java index 39d050afa9..f76185df57 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java index 890a1fee38..51785ad6b9 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathParsingTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java index 73398b6f16..f88014781d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererLowLevelIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java index c55ad95dfa..1f55b6b337 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PathSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java index 5fd2c692d3..012b3d851b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java index 51063e2c3b..14d507f779 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PatternTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java index 8e1bcbbcd0..31dff3361b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java index 4735a10e9a..c4350ee382 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PdfRootSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java index e303cf74e5..0b00f5d95b 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolygonSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java index 8d83333a13..a417a8b828 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java index 6041c60f44..6a859be68f 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PolylineSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java index a7c92be137..fe5db0c4a2 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java index a812af0125..6c9d3a95ba 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/PreserveAspectRatioSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RadialGradientSvgNodeRendererTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RadialGradientSvgNodeRendererTest.java index 7f2f156d8e..f4db73deb4 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RadialGradientSvgNodeRendererTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RadialGradientSvgNodeRendererTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java index 258085a24a..26a3528c63 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java index 5ec092eaa5..f9bded2449 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/RectangleSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java index b35d9ed00c..72d1e50e7d 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SimpleSvgTagSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java index f0e0afde6f..5ca689573c 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/StopSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java index d1aa19a8a3..5bf9689639 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SvgTagSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java index 1890a69731..be77dae204 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java index e28ee7d0b0..0e28e77f3a 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SymbolTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SystemLanguageTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SystemLanguageTest.java index 1a81f6f1aa..e403148e05 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/SystemLanguageTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/SystemLanguageTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java index de7f53ec11..4d9a198620 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TSpanNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java index a12375eedf..3cbcd5a1ed 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java index 6dbb1da2f0..748222657e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextLeafSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java index e9844db493..0d644be277 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java index 03fcc33eca..71a3238996 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java index f21d0d0763..1ca90b6f16 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseSvgNodeRendererUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java index 501cccbe4f..79838b8dad 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/UseUnitTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java index ddc74cc00b..75347ddcbf 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/ViewBoxSvgTagSvgNodeRendererIntegrationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java index ae5df79a1f..f9ec3935aa 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/impl/XLinkDataTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java index 45ac691796..3c9de66b96 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/PathShapeMapperTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java index 1457e9c416..19a915230e 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipseArcTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java index 5d0a17e002..d54c505a11 100644 --- a/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java +++ b/svg/src/test/java/com/itextpdf/svg/renderers/path/impl/EllipticalPathOperatorTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java index c72128f70e..e120dd2070 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/MatrixTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java index 4e267a9577..1edebbb9ea 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/RotateTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java index d33c2c0e65..730610e884 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/ScaleTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java index 83c97ab920..3ecd3b2fe7 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/SkewXTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java index 0dbb8fb6ca..1109f092f5 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/SkewYTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java index 7c0fb6762b..105251540e 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgCoordinateUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java index 15aaaf94ca..37f37c0743 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgCssUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java b/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java index 358725d9fa..81f9e180b6 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/SvgTextUtilTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java b/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java index f4fa7deb81..00701beefa 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/TestUtils.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java b/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java index 063b6e03a6..6461b29352 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/TransformUtilsTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java b/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java index 34e64f31cf..f4a0881661 100644 --- a/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java +++ b/svg/src/test/java/com/itextpdf/svg/utils/TranslateTransformationTest.java @@ -1,6 +1,6 @@ /* This file is part of the iText (R) project. - Copyright (c) 1998-2025 Apryse Group NV + Copyright (c) 1998-2026 Apryse Group NV Authors: Apryse Software. This program is offered under a commercial and under the AGPL license. diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_fontWeightTest.pdf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_fontWeightTest.pdf index 30a5f0b81d..5c8a24ee71 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_fontWeightTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_fontWeightTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_validLocalFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_validLocalFontTest.pdf index b07d733a64..c0146eae6b 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_validLocalFontTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/cmp_validLocalFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontWeightTest.svg b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontWeightTest.svg index d365a22531..a975f67ff7 100644 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontWeightTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontWeightTest.svg @@ -2,21 +2,21 @@ - 3. Droid Serif font-weight 400 - 3. Droid Serif font-weight 700 + 3. Roboto Serif font-weight 400 + 3. Roboto Serif font-weight 700 \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontssvg.svg b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontssvg.svg index 8d887644fd..becfe4bbc3 100644 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontssvg.svg +++ b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/fontssvg.svg @@ -10,7 +10,7 @@ font-style: italic; src:local('Open Sans Regular'), local('OpenSans-Regular'), - url('web-fonts/OpenSans-Regular.ttf') format('truetype'); + url('../../fonts/OpenSans-Regular.ttf') format('truetype'); } ]]> diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/textTagNoFontSize.svg b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/textTagNoFontSize.svg index 504ad6eddf..fb1efa1f65 100644 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/textTagNoFontSize.svg +++ b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/textTagNoFontSize.svg @@ -10,7 +10,7 @@ font-style: italic; src:local('Open Sans Regular'), local('OpenSans-Regular'), - url('web-fonts/OpenSans-Regular.ttf') format('truetype'); + url('../../fonts/OpenSans-Regular.ttf') format('truetype'); } ]]> diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/validLocalFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/validLocalFontTest.svg index 3f511fb575..661128a377 100644 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/validLocalFontTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/validLocalFontTest.svg @@ -5,49 +5,49 @@ font-family: 'Noto Serif CJK JP'; font-weight: 400; font-style:normal; - src: url('web-fonts/NotoSerifCJKjp-Regular.otf') + src: url('../../fonts/NotoSerifCJKjp-Regular.otf') format('OpenType'); } @font-face { - font-family: 'Droid Serif'; + font-family: 'Roboto Serif'; font-weight: 400; font-style:regular; - src: url('web-fonts/droid-serif-regular.ttf') + src: url('../../fonts/RobotoSerif-Regular.ttf') format('TrueType'); } @font-face { - font-family: 'Droid Serif'; + font-family: 'Roboto Serif'; font-weight: 700; font-style: regular; - src: url('web-fonts/droid-serif-bold.ttf') + src: url('../../fonts/RobotoSerif-Bold.ttf') format('opentype'); } @font-face { - font-family: 'Droid Serif'; + font-family: 'Roboto Serif'; font-weight: 700; font-style: italic; - src: url('web-fonts/droid-serif-italic.ttf') + src: url('../../fonts/RobotoSerif-Italic.ttf') format('opentype'); } @font-face { - font-family: 'Droid Serif'; + font-family: 'Roboto Serif'; font-weight: 700; font-style: italic; - src: url('web-fonts/droid-serif-bolditalic.ttf') + src: url('../../fonts/RobotoSerif-BoldItalic.ttf') format('truetype'); } - 1. Droid Serif bold + 1. Roboto Serif bold - 2. Droid Serif Italic + 2. Roboto Serif Italic - 3. Droid Serif Regular + 3. Roboto Serif Regular 4. 教育部國字標準字體 - 5. Droid + 5. Roboto Serif Bold Italic diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE.txt b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE.txt deleted file mode 100644 index d645695673..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE_OFL.txt b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSansCJKjp-Regular.woff2 b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSansCJKjp-Regular.woff2 deleted file mode 100644 index 2a4676663d..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSansCJKjp-Regular.woff2 and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bold.ttf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bold.ttf deleted file mode 100644 index 8340792dcb..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bold.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bolditalic.ttf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bolditalic.ttf deleted file mode 100644 index 9cfeb54fc7..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-bolditalic.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-italic.ttf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-italic.ttf deleted file mode 100644 index ccaeca2189..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-italic.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-regular.ttf b/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-regular.ttf deleted file mode 100644 index 82a9b160db..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/droid-serif-regular.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/fonts/NOTICE.txt b/svg/src/test/resources/com/itextpdf/svg/css/fonts/NOTICE.txt deleted file mode 100644 index 773b267956..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/css/fonts/NOTICE.txt +++ /dev/null @@ -1,5 +0,0 @@ -Please notice that the following fonts are used with the mentioned below licenses. - -* NotoSansArabic-Regular - SIL Open Font License v1.1 - -All the used bold Google Noto fonts have been taken from the https://github.com/googlefonts. \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/css/fonts/OFL.txt b/svg/src/test/resources/com/itextpdf/svg/css/fonts/OFL.txt deleted file mode 100644 index 74b6343349..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/css/fonts/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2016 The Merriweather Project Authors (https://github.com/EbenSorkin/Merriweather), with Reserved Font Name "Merriweather". - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -https://openfontlicense.org - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/Amaranth-Regular.woff b/svg/src/test/resources/com/itextpdf/svg/fonts/Amaranth-Regular.woff similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/Amaranth-Regular.woff rename to svg/src/test/resources/com/itextpdf/svg/fonts/Amaranth-Regular.woff diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/BSD-3.txt b/svg/src/test/resources/com/itextpdf/svg/fonts/BSD-3.txt new file mode 100644 index 0000000000..df2fdad8dd --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/fonts/BSD-3.txt @@ -0,0 +1,13 @@ +Note: This license has also been called the “New BSD License” or “Modified BSD License”. See also the 2-clause BSD License. + +Copyright 2026 iText + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/layout/src/test/resources/com/itextpdf/layout/fonts/OFL.txt b/svg/src/test/resources/com/itextpdf/svg/fonts/LICENSE_OFL-1.1.txt similarity index 100% rename from layout/src/test/resources/com/itextpdf/layout/fonts/OFL.txt rename to svg/src/test/resources/com/itextpdf/svg/fonts/LICENSE_OFL-1.1.txt diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/NOTICE.txt b/svg/src/test/resources/com/itextpdf/svg/fonts/NOTICE.txt new file mode 100644 index 0000000000..ed52505017 --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/fonts/NOTICE.txt @@ -0,0 +1,15 @@ +Please notice that the following fonts are used with the mentioned below licenses. + +NotoSansArabic-Regular.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+Arabic" (26.01.2026) +RobotoSerif-Bold.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Roboto+Serif" (30.01.2026) +RobotoSerif-BoldItalic.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Roboto+Serif" (30.01.2026) +RobotoSerif-Italic.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Roboto+Serif" (30.01.2026) +RobotoSerif-Regular.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Roboto+Serif" (30.01.2026) +Amaranth-Regular.woff | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Amaranth" (26.01.2026) +NotoSansCJK-Regular.ttc | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "Based on "https://github.com/googlefonts/noto-cjk" +NotoSansCJK-Regular.woff2 | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on commit 165c01b46ea533872e002e0785ff17e44f6d97d8 (30.04.2021) from repository: "Based on "https://github.com/googlefonts/noto-cjk" +NotoSansJPThin-Regular.woff2 | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/noto/specimen/Noto+Sans+JP" (08.02.2026) +NotoSerifCJKjp-Regular.otf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on commit 9b0f1436e455d902de067a2501422e5dc71ad16b (30.06.2024) from repository "Based on "https://github.com/notofonts/noto-cjk/tree" +OpenSans-Regular.ttf | SIL Open Font License v1.1 | LICENSE_OFL-1.1.txt | Based on "https://fonts.google.com/specimen/Open+Sans" (30.01.2026) + +All fonts under w3c-test-fonts directory | BSD-3 | BSD-3.txt | w3c.org (27.01.2026) \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/css/fonts/NotoSansArabic-Regular.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansArabic-Regular.ttf similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/css/fonts/NotoSansArabic-Regular.ttf rename to svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansArabic-Regular.ttf diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSansCJK-Regular.ttc b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansCJK-Regular.ttc similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSansCJK-Regular.ttc rename to svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansCJK-Regular.ttc diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJK-Regular.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansCJK-Regular.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJK-Regular.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansCJK-Regular.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansJPThin-Regular.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansJPThin-Regular.woff2 new file mode 100644 index 0000000000..291e1aaf1d Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSansJPThin-Regular.woff2 differ diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf b/svg/src/test/resources/com/itextpdf/svg/fonts/NotoSerifCJKjp-Regular.otf similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf rename to svg/src/test/resources/com/itextpdf/svg/fonts/NotoSerifCJKjp-Regular.otf diff --git a/svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/OpenSans-Regular.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/OpenSans-Regular.ttf similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/css/SvgStyleResolver/web-fonts/OpenSans-Regular.ttf rename to svg/src/test/resources/com/itextpdf/svg/fonts/OpenSans-Regular.ttf diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Bold.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Bold.ttf new file mode 100644 index 0000000000..6f44306be8 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Bold.ttf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-BoldItalic.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-BoldItalic.ttf new file mode 100644 index 0000000000..55b58d3715 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-BoldItalic.ttf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Italic.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Italic.ttf new file mode 100644 index 0000000000..f5c68c7542 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Italic.ttf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Regular.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Regular.ttf new file mode 100644 index 0000000000..509e4fdd5a Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/fonts/RobotoSerif-Regular.ttf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/blocks-metadata-padding-001.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/blocks-metadata-padding-001.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/blocks-metadata-padding-001.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/blocks-metadata-padding-001.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/directory-table-order-002.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/directory-table-order-002.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/directory-table-order-002.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/directory-table-order-002.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-flavor-001.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-flavor-001.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-flavor-001.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-flavor-001.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-flavor-002.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-flavor-002.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-flavor-002.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-flavor-002.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-reserved-001.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-reserved-001.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/header-reserved-001.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/header-reserved-001.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/tabledata-hmtx-transform-003.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/tabledata-hmtx-transform-003.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/tabledata-hmtx-transform-003.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/tabledata-hmtx-transform-003.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/valid-005.ttf b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/valid-005.ttf similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/valid-005.ttf rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/valid-005.ttf diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/validation-off-012.woff2 b/svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/validation-off-012.woff2 similarity index 100% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3c-test-fonts/validation-off-012.woff2 rename to svg/src/test/resources/com/itextpdf/svg/fonts/w3c-test-fonts/validation-off-012.woff2 diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalFontTest.pdf deleted file mode 100644 index ebec334836..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalFontTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalLocalFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalLocalFontTest.pdf deleted file mode 100644 index c9d0e0d838..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalLocalFontTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaFontTest.pdf deleted file mode 100644 index cb4f8afe1d..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaFontTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaRuleFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaRuleFontTest.pdf deleted file mode 100644 index c0dd8690c8..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifLocalWithMediaRuleFontTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifSingleQuotesTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifSingleQuotesTest.pdf deleted file mode 100644 index 6e3d73e02d..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifSingleQuotesTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifWebFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifWebFontTest.pdf deleted file mode 100644 index 1739fb9449..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_droidSerifWebFontTest.pdf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceGrammarTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceGrammarTest.pdf index a7a3e52741..553160ac1c 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceGrammarTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceGrammarTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceTtcTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceTtcTest.pdf index c092326bb4..7679516d06 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceTtcTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceTtcTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceWoff2SimpleTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceWoff2SimpleTest.pdf index 3089df25e1..390c6e4668 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceWoff2SimpleTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontFaceWoff2SimpleTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontSelectorTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontSelectorTest.pdf index 7429d7c63d..3ba2017765 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontSelectorTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_fontSelectorTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithAllProperties.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithAllProperties.pdf index df27865c12..fd2e4aa4b9 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithAllProperties.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithAllProperties.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndEmptyUri.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndEmptyUri.pdf index 93e7801a21..d3b9f81088 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndEmptyUri.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndEmptyUri.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndNullUri.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndNullUri.pdf index 18f378cc2b..d64548142b 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndNullUri.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropertiesAndNullUri.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropsAndWriterProps.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropsAndWriterProps.pdf index c9ba4e6e94..49bcafc2ab 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropsAndWriterProps.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithConverterPropsAndWriterProps.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithWriterProperties.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithWriterProperties.pdf index 588629f84e..116604f3a0 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithWriterProperties.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithWriterProperties.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithoutConverterPropertiesAndWriterProperties.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithoutConverterPropertiesAndWriterProperties.pdf index 64e57899bd..ac4c80722f 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithoutConverterPropertiesAndWriterProperties.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_resolveFonts_WithoutConverterPropertiesAndWriterProperties.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalFontTest.pdf new file mode 100644 index 0000000000..9f90fed952 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalLocalFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalLocalFontTest.pdf new file mode 100644 index 0000000000..057e45fb70 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalLocalFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaFontTest.pdf new file mode 100644 index 0000000000..ee6250dd67 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaRuleFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaRuleFontTest.pdf new file mode 100644 index 0000000000..9c7e9b13f0 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifLocalWithMediaRuleFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifSingleQuotesTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifSingleQuotesTest.pdf new file mode 100644 index 0000000000..48894d13db Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifSingleQuotesTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifWebFontTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifWebFontTest.pdf new file mode 100644 index 0000000000..78a5cd17b4 Binary files /dev/null and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_robotoSerifWebFontTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_unicodeRangeTest.pdf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_unicodeRangeTest.pdf index 6ba6b533a8..2ec0bc2b86 100644 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_unicodeRangeTest.pdf and b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/cmp_unicodeRangeTest.pdf differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalFontTest.svg deleted file mode 100644 index 7fd97d212d..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalFontTest.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 1. Droid Serif Regular - 2. Droid Serif Italic - 3. Droid Serif Bold - 4. Droid - Serif - Bold Italic - - - \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalLocalFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalLocalFontTest.svg deleted file mode 100644 index 84366dc3de..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalLocalFontTest.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - 1. Droid Serif Regular - 2. Droid Serif Italic - 3. Droid Serif Bold - 4. Droid - Serif Bold Italic - - - \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaFontTest.svg deleted file mode 100644 index b82f6aca87..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaFontTest.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - 1. Droid Serif Regular - 2. Droid Serif Italic - 3. Droid Serif Bold - 4. Droid - Serif Bold Italic - - - \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaRuleFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaRuleFontTest.svg deleted file mode 100644 index d7f76a8c52..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifLocalWithMediaRuleFontTest.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - 1. Droid Serif Regular - 2. Droid Serif Italic - 3. Droid Serif Bold - 4. Droid - Serif Bold Italic - - - \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifSingleQuotesTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifSingleQuotesTest.svg deleted file mode 100644 index 19d9aba61b..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifSingleQuotesTest.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - j - u - j - \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceGrammarTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceGrammarTest.svg index 3c44b637bc..6f78080cf5 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceGrammarTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceGrammarTest.svg @@ -4,15 +4,15 @@ - + Hello world diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceTtcTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceTtcTest.svg index 8563d301ee..6df2cda167 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceTtcTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceTtcTest.svg @@ -5,21 +5,21 @@ 教育部國字標準字體 教育部國字標準字體 - This is Droid Serif ttf + This is Roboto Serif ttf \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoff2SimpleTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoff2SimpleTest.svg index edf1933379..8efb51f756 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoff2SimpleTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoff2SimpleTest.svg @@ -3,12 +3,12 @@ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest01.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest01.svg index b0112bd699..6d8a6f70b2 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest01.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest01.svg @@ -5,7 +5,7 @@ font-family: Amaranth Woff Test; font-weight: 400; font-style: normal; - src: url('web-fonts/Amaranth-Regular.woff') format('woff'); + src: url('../../../../fonts/Amaranth-Regular.woff') format('woff'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest02.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest02.svg index 0995601e94..95fca4f364 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest02.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFaceWoffTest02.svg @@ -7,7 +7,7 @@ font-family: Amaranth Woff Test; font-weight: 400; font-style: normal; - src: url('web-fonts/Amaranth-Regular.woff') format('woff'); + src: url('../../../../fonts/Amaranth-Regular.woff') format('woff'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFamilyTest01.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFamilyTest01.svg index 81fa14c025..22dd282ab6 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFamilyTest01.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontFamilyTest01.svg @@ -5,15 +5,15 @@ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest.svg index 59c3b8d82b..c5d2299060 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest.svg @@ -2,15 +2,15 @@ - + Hello world \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest02.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest02.svg index b839c6521a..80dcfc1742 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest02.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/fontSelectorTest02.svg @@ -2,7 +2,7 @@ Amaranth diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest01.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest01.svg index 54cde1dc52..31daf733f2 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest01.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest01.svg @@ -5,7 +5,7 @@ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest02.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest02.svg index 3db7c8080f..b14b7e86a7 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest02.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest02.svg @@ -5,7 +5,7 @@ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest03.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest03.svg index cd81bd253f..efb96490fd 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest03.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest03.svg @@ -7,7 +7,7 @@ font-family:"WOFF Test TTF"; - src: url("w3c-test-fonts/valid-005.ttf") + src: url("../../../../fonts/w3c-test-fonts/valid-005.ttf") format("TrueType"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest04.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest04.svg index fdf81edce2..560c3f872c 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest04.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/incorrectFontNameTest04.svg @@ -7,7 +7,7 @@ font-family: "abyrvalg"; - src: url("w3c-test-fonts/valid-005.ttf") + src: url("../../../../fonts/w3c-test-fonts/valid-005.ttf") format("TrueType"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalFontTest.svg new file mode 100644 index 0000000000..de18278ec8 --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalFontTest.svg @@ -0,0 +1,46 @@ + + + + + 1. Roboto Serif Regular + 2. Roboto Serif Italic + 3. Roboto Serif Bold + 4. Roboto + Serif + Bold Italic + + + \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalLocalFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalLocalFontTest.svg new file mode 100644 index 0000000000..59b2f0c8eb --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalLocalFontTest.svg @@ -0,0 +1,45 @@ + + + + + 1. Roboto Serif Regular + 2. Roboto Serif Italic + 3. Roboto Serif Bold + 4. Roboto + Serif Bold Italic + + + \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaFontTest.svg new file mode 100644 index 0000000000..faecb64d98 --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaFontTest.svg @@ -0,0 +1,45 @@ + + + + + 1. Roboto Serif Regular + 2. Roboto Serif Italic + 3. Roboto Serif Bold + 4. Roboto + Serif Bold Italic + + + \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaRuleFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaRuleFontTest.svg new file mode 100644 index 0000000000..7c66505437 --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifLocalWithMediaRuleFontTest.svg @@ -0,0 +1,40 @@ + + + + + 1. Roboto Serif Regular + 2. Roboto Serif Italic + 3. Roboto Serif Bold + 4. Roboto + Serif Bold Italic + + + \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifSingleQuotesTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifSingleQuotesTest.svg new file mode 100644 index 0000000000..c3bda2271c --- /dev/null +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifSingleQuotesTest.svg @@ -0,0 +1,41 @@ + + + + + j + u + j + \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifWebFontTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifWebFontTest.svg similarity index 57% rename from svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifWebFontTest.svg rename to svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifWebFontTest.svg index 641c8cc278..23eed8daff 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/droidSerifWebFontTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/robotoSerifWebFontTest.svg @@ -2,16 +2,16 @@ - Text in droid serif font beneath - + Text in Roboto serif font beneath + Hello world \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/unicodeRangeTest.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/unicodeRangeTest.svg index 45f0557e09..53a1b48193 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/unicodeRangeTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/unicodeRangeTest.svg @@ -2,33 +2,33 @@ - j - u - u - j - j + j + u + u + j + j \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest01.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest01.svg index 11b002100b..cc9a77691f 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest01.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest01.svg @@ -6,7 +6,7 @@ @font-face { font-family: "WOFF Test CFF"; src: - url("w3c-test-fonts/blocks-metadata-padding-001.woff2") + url("../../../../fonts/w3c-test-fonts/blocks-metadata-padding-001.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest02.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest02.svg index 53b93f9dc9..b5779d5c75 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest02.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest02.svg @@ -6,7 +6,7 @@ @font-face { font-family: "WOFF Test TTF"; src: - url("w3c-test-fonts/directory-table-order-002.woff2") + url("../../../../fonts/w3c-test-fonts/directory-table-order-002.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest03.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest03.svg index fc65980dde..d3d8a9811f 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest03.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest03.svg @@ -7,7 +7,7 @@ @font-face { font-family: "Test font"; src: - url("w3c-test-fonts/header-flavor-001.woff2") + url("../../../../fonts/w3c-test-fonts/header-flavor-001.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest04.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest04.svg index 6b2b2ce5a6..12c12c5f16 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest04.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest04.svg @@ -6,7 +6,7 @@ @font-face { font-family: "Test font"; src: - url("w3c-test-fonts/header-flavor-002.woff2") + url("../../../../fonts/w3c-test-fonts/header-flavor-002.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest05.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest05.svg index 1699e9609a..3db7e32d3a 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest05.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest05.svg @@ -6,7 +6,7 @@ @font-face { font-family: "WOFF Test CFF"; src: - url("w3c-test-fonts/header-reserved-001.woff2") + url("../../../../fonts/w3c-test-fonts/header-reserved-001.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest06.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest06.svg index a44c414151..beae0cec16 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest06.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest06.svg @@ -6,7 +6,7 @@ @font-face { font-family: "WOFF Test TTF"; src: - url("w3c-test-fonts/tabledata-hmtx-transform-003.woff2") + url("../../../../fonts/w3c-test-fonts/tabledata-hmtx-transform-003.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest07.svg b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest07.svg index 5fb2a8b5dd..9209360bfb 100644 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest07.svg +++ b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/w3cProblemTest07.svg @@ -6,7 +6,7 @@ @font-face { font-family: "WOFF Test TTF"; src: - url("w3c-test-fonts/validation-off-012.woff2") + url("../../../../fonts/w3c-test-fonts/validation-off-012.woff2") format("woff2"); } diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/AmaranthLicense.txt b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/AmaranthLicense.txt deleted file mode 100644 index abb70a57c3..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/AmaranthLicense.txt +++ /dev/null @@ -1,46 +0,0 @@ -SIL Open Font License - -Copyright (c) 2011, Gesine Todt (hallo@gesine-todt.de), -with Reserved Font Name Amaranth. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - -—————————————————————————————- -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 -—————————————————————————————- - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. - -“Reserved Font Name” refers to any names specified as such after the copyright statement(s). - -“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). - -“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/LICENSE_OFL.txt b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/LICENSE_OFL.txt deleted file mode 100644 index d952d62c06..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJK-Regular.ttc b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJK-Regular.ttc deleted file mode 100644 index 271526fbde..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJK-Regular.ttc and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJKjp-Regular.woff2 b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJKjp-Regular.woff2 deleted file mode 100644 index 2a4676663d..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSansCJKjp-Regular.woff2 and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSerifCJKjp-Regular.otf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSerifCJKjp-Regular.otf deleted file mode 100644 index 241facf58f..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/NotoSerifCJKjp-Regular.otf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bold.ttf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bold.ttf deleted file mode 100644 index 8340792dcb..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bold.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bolditalic.ttf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bolditalic.ttf deleted file mode 100644 index 9cfeb54fc7..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-bolditalic.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-italic.ttf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-italic.ttf deleted file mode 100644 index ccaeca2189..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-italic.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-regular.ttf b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-regular.ttf deleted file mode 100644 index 82a9b160db..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/FontFaceTest/web-fonts/droid-serif-regular.ttf and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/Amaranth-Regular.woff b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/Amaranth-Regular.woff deleted file mode 100644 index 08d538750f..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/Amaranth-Regular.woff and /dev/null differ diff --git a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/AmaranthLicense.txt b/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/AmaranthLicense.txt deleted file mode 100644 index abb70a57c3..0000000000 --- a/svg/src/test/resources/com/itextpdf/svg/processors/impl/font/fonts/AmaranthLicense.txt +++ /dev/null @@ -1,46 +0,0 @@ -SIL Open Font License - -Copyright (c) 2011, Gesine Todt (hallo@gesine-todt.de), -with Reserved Font Name Amaranth. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - -—————————————————————————————- -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 -—————————————————————————————- - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. - -DEFINITIONS -“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. - -“Reserved Font Name” refers to any names specified as such after the copyright statement(s). - -“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). - -“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. - -5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxTest.svg b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxTest.svg index 23457e32af..b3062a7227 100644 --- a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxTest.svg @@ -12,7 +12,7 @@ font-family: 'Noto Serif CJK JP'; font-weight: 400; font-style:normal; - src: url('../../../css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf') + src: url('../../../fonts/NotoSerifCJKjp-Regular.otf') format('OpenType'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxVerticalTest.svg b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxVerticalTest.svg index 6c62573819..093bce8573 100644 --- a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxVerticalTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/chineseTextDxVerticalTest.svg @@ -12,7 +12,7 @@ font-family: 'Noto Serif CJK JP'; font-weight: 400; font-style:normal; - src: url('../../../css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf') + src: url('../../../fonts/NotoSerifCJKjp-Regular.otf') format('OpenType'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/textAnchorTest.svg b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/textAnchorTest.svg index 20b15ac80a..2b0a3101f6 100644 --- a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/textAnchorTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/LinearGradientSvgNodeRendererTest/textAnchorTest.svg @@ -17,7 +17,7 @@ font-family: 'Noto Serif CJK JP'; font-weight: 400; font-style:normal; - src: url('../../../css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf') + src: url('../../../fonts/NotoSerifCJKjp-Regular.otf') format('OpenType'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/PatternTest/textAnchorTest.svg b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/PatternTest/textAnchorTest.svg index 88cfaf4b76..bf58852b49 100644 --- a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/PatternTest/textAnchorTest.svg +++ b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/PatternTest/textAnchorTest.svg @@ -11,7 +11,7 @@ font-family: 'Noto Serif CJK JP'; font-weight: 400; font-style:normal; - src: url('../../../css/SvgStyleResolver/web-fonts/NotoSerifCJKjp-Regular.otf') + src: url('../../../fonts/NotoSerifCJKjp-Regular.otf') format('OpenType'); } diff --git a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest/NotoNaskhArabic-Regular-1_06.ttf b/svg/src/test/resources/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest/NotoNaskhArabic-Regular-1_06.ttf deleted file mode 100644 index db5d1683c8..0000000000 Binary files a/svg/src/test/resources/com/itextpdf/svg/renderers/impl/TextSvgBranchRendererIntegrationTest/NotoNaskhArabic-Regular-1_06.ttf and /dev/null differ