You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/04/04 16:55:26 UTC

svn commit: r1856960 - /pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Author: tilman
Date: Thu Apr  4 16:55:26 2019
New Revision: 1856960

URL: http://svn.apache.org/viewvc?rev=1856960&view=rev
Log:
PDFBOX-45: arrays in dictionaries or arrays are to be written as indirect objects when needed, as it is already done with dictionaries in dictionaries and arrays

Modified:
    pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java

Modified: pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1856960&r1=1856959&r2=1856960&view=diff
==============================================================================
--- pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java (original)
+++ pdfbox/branches/issue45/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java Thu Apr  4 16:55:26 2019
@@ -943,6 +943,20 @@ public class COSWriter implements ICOSVi
                     writeReference( current );
                 }
             }
+            else if (current instanceof COSArray)
+            {
+                if (current.isDirect())
+                {
+                    // If the object should be written direct, we need
+                    // to pass the array to the visitor again.
+                    visitFromArray((COSArray) current);
+                }
+                else
+                {
+                    addObjectToWrite(current);
+                    writeReference(current);
+                }
+            }
             else if( current instanceof COSObject )
             {
                 COSBase subValue = ((COSObject)current).getObject();
@@ -1045,6 +1059,20 @@ public class COSWriter implements ICOSVi
                         writeReference( dict );
                     }
                 }
+                else if (value instanceof COSArray)
+                {
+                    if (value.isDirect())
+                    {
+                        // If the object should be written direct, we need
+                        // to pass the array to the visitor again.
+                        visitFromArray((COSArray) value);
+                    }
+                    else
+                    {
+                        addObjectToWrite(value);
+                        writeReference(value);
+                    }
+                }
                 else if( value instanceof COSObject )
                 {
                     COSBase subValue = ((COSObject)value).getObject();