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));

Reply via email to