Author: tilman Date: Sat Sep 13 03:28:48 2025 New Revision: 1928392 Log: PDFBOX-6067: include case where /Pg is in a kid
Modified: pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java Modified: pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java ============================================================================== --- pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java Sat Sep 13 02:51:05 2025 (r1928391) +++ pdfbox/branches/3.0/pdfbox/src/test/java/org/apache/pdfbox/multipdf/PDFMergerUtilityTest.java Sat Sep 13 03:28:48 2025 (r1928392) @@ -963,6 +963,27 @@ class PDFMergerUtilityTest ++cnt; set.add(kdict); } + else if (kdict.containsKey(COSName.K)) + { + // at least 1 kid with dict with /Pg and /MCR + // happens with confidential file from PDFBOX-6009 + COSArray kidArray = kdict.getCOSArray(COSName.K); + if (kidArray != null) + { + for (int i = 0; i < kidArray.size(); ++i) + { + COSBase base2 = kidArray.getObject(i); + if (base2 instanceof COSDictionary && + ((COSDictionary) base2).containsKey(COSName.PG) && + ((COSDictionary) base2).containsKey(COSName.MCID)) + { + ++cnt; + set.add(kdict); + break; + } + } + } + } if (kdict.containsKey(COSName.K)) { walk(kdict.getDictionaryObject(COSName.K));