You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2024/07/25 06:00:42 UTC
svn commit: r1919510 - in /pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox: cos/COSArray.java cos/COSDictionary.java multipdf/Splitter.java
Author: lehmi
Date: Thu Jul 25 06:00:42 2024
New Revision: 1919510
URL: http://svn.apache.org/viewvc?rev=1919510&view=rev
Log:
PDFBOX-5481: wrap indirect objects whenever they are added directly to a COSDictionary or COSArray
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDictionary.java
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java?rev=1919510&r1=1919509&r2=1919510&view=diff
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java (original)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSArray.java Thu Jul 25 06:00:42 2024
@@ -68,8 +68,19 @@ public class COSArray extends COSBase im
*/
public void add( COSBase object )
{
- objects.add( object );
- getUpdateState().update(object);
+ // wrap indirect objects
+ if ((object instanceof COSDictionary || object instanceof COSArray) && !object.isDirect()
+ && object.getKey() != null)
+ {
+ COSObject cosObject = new COSObject(object, object.getKey());
+ objects.add(cosObject);
+ getUpdateState().update(cosObject);
+ }
+ else
+ {
+ objects.add(object);
+ getUpdateState().update(object);
+ }
}
/**
@@ -84,8 +95,7 @@ public class COSArray extends COSBase im
{
base = object.getCOSObject();
}
- objects.add(base);
- getUpdateState().update(base);
+ add(base);
}
/**
@@ -97,8 +107,19 @@ public class COSArray extends COSBase im
*/
public void add( int i, COSBase object)
{
- objects.add( i, object );
- getUpdateState().update(object);
+ // wrap indirect objects
+ if ((object instanceof COSDictionary || object instanceof COSArray) && !object.isDirect()
+ && object.getKey() != null)
+ {
+ COSObject cosObject = new COSObject(object, object.getKey());
+ objects.add(i, cosObject);
+ getUpdateState().update(cosObject);
+ }
+ else
+ {
+ objects.add(i, object);
+ getUpdateState().update(object);
+ }
}
/**
@@ -186,8 +207,19 @@ public class COSArray extends COSBase im
*/
public void set( int index, COSBase object )
{
- objects.set( index, object );
- getUpdateState().update(object);
+ // wrap indirect objects
+ if ((object instanceof COSDictionary || object instanceof COSArray) && !object.isDirect()
+ && object.getKey() != null)
+ {
+ COSObject cosObject = new COSObject(object, object.getKey());
+ objects.set(index, cosObject);
+ getUpdateState().update(cosObject);
+ }
+ else
+ {
+ objects.set(index, object);
+ getUpdateState().update(object);
+ }
}
/**
@@ -215,8 +247,7 @@ public class COSArray extends COSBase im
{
base = object.getCOSObject();
}
- objects.set( index, base );
- getUpdateState().update(base);
+ set( index, base );
}
/**
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDictionary.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDictionary.java?rev=1919510&r1=1919509&r2=1919510&view=diff
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDictionary.java (original)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/cos/COSDictionary.java Thu Jul 25 06:00:42 2024
@@ -204,8 +204,19 @@ public class COSDictionary extends COSBa
}
else
{
- items.put(key, value);
- getUpdateState().update(value);
+ // wrap indirect objects
+ if ((value instanceof COSDictionary || value instanceof COSArray) && !value.isDirect()
+ && value.getKey() != null)
+ {
+ COSObject cosObject = new COSObject(value, value.getKey());
+ items.put(key, cosObject);
+ getUpdateState().update(cosObject);
+ }
+ else
+ {
+ items.put(key, value);
+ getUpdateState().update(value);
+ }
}
}
Modified: pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java?rev=1919510&r1=1919509&r2=1919510&view=diff
==============================================================================
--- pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java (original)
+++ pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/multipdf/Splitter.java Thu Jul 25 06:00:42 2024
@@ -685,12 +685,7 @@ public class Splitter
destCatalog.setViewerPreferences(sourceCatalog.getViewerPreferences());
destCatalog.setLanguage(sourceCatalog.getLanguage());
destCatalog.setMarkInfo(sourceCatalog.getMarkInfo());
- // copy the COS-object itself instead of the PD-object to avoid a malformed result
- COSObject metaData = sourceCatalog.getCOSObject().getCOSObject(COSName.METADATA);
- if (metaData != null)
- {
- destCatalog.getCOSObject().setItem(COSName.METADATA, metaData);
- }
+ destCatalog.setMetadata(sourceCatalog.getMetadata());
return document;
}