Author: tilman Date: Sat May 24 15:21:36 2025 New Revision: 1925783 URL: http://svn.apache.org/viewvc?rev=1925783&view=rev Log: PDFBOX-6009: drop OBJR and MCR dictionaries if no /Pg entry in itself or in parent
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java?rev=1925783&r1=1925782&r2=1925783&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java Sat May 24 15:21:36 2025 @@ -441,6 +441,15 @@ public class Splitter } } + // special handling for MCR items ("marked-content reference dictionary") + COSName type = srcDict.getCOSName(COSName.TYPE); + if (COSName.MCR.equals(type) && dstPageDict == null && + dstParent instanceof COSDictionary && ((COSDictionary) dstParent).getCOSDictionary(COSName.PG) == null) + { + // PAC: Pg entry of marked-content reference and of parent structure is null + return null; + } + // Create and fill clone dstDict = new COSDictionary(); structDictMap.put(srcDict, dstDict); @@ -457,7 +466,6 @@ public class Splitter // special handling for OBJR items ("object reference dictionary") // see e.g. file 488300.pdf and Root/StructTreeRoot/K/K/[2]/K/[1]/K/[0]/Obj - COSName type = srcDict.getCOSName(COSName.TYPE); if (COSName.OBJR.equals(type)) { COSDictionary srcObj = srcDict.getCOSDictionary(COSName.OBJ); @@ -475,6 +483,12 @@ public class Splitter { return null; } + if (dstPageDict == null && + dstParent instanceof COSDictionary && ((COSDictionary) dstParent).getCOSDictionary(COSName.PG) == null) + { + // Pg entry of object reference dictionary and of parent structure is null + return null; + } } else {