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 2015/10/07 19:39:33 UTC

svn commit: r1707343 - /pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java

Author: tilman
Date: Wed Oct  7 17:39:33 2015
New Revision: 1707343

URL: http://svn.apache.org/viewvc?rev=1707343&view=rev
Log:
PDFBOX-3003: include logic similar to PDInlineImage.java to make long names from short names; fix bug that /ColorSpace wasn't considered

Modified:
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java?rev=1707343&r1=1707342&r2=1707343&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java Wed Oct  7 17:39:33 2015
@@ -88,6 +88,7 @@ import org.apache.pdfbox.contentstream.o
 import org.apache.pdfbox.contentstream.operator.text.SetTextRenderingMode;
 import org.apache.pdfbox.contentstream.operator.text.SetTextRise;
 import org.apache.pdfbox.contentstream.operator.text.SetWordSpacing;
+import org.apache.pdfbox.cos.COSArray;
 
 /**
  * This class inherits from org.apache.pdfbox.util.PDFStreamEngine to allow the validation of specific rules in
@@ -288,7 +289,11 @@ public abstract class PreflightStreamEng
     {
         COSDictionary dict = operator.getImageParameters();
 
-        COSBase csInlinedBase = dict.getItem(COSName.CS);
+        COSBase csInlinedBase = dict.getItem(COSName.COLORSPACE);
+        if (csInlinedBase == null)
+        {
+            csInlinedBase = dict.getItem(COSName.CS);
+        }
         ColorSpaceHelper csHelper = null;
         if (csInlinedBase != null)
         {
@@ -326,16 +331,48 @@ public abstract class PreflightStreamEng
 
             if (csHelper == null)
             {
+                // convert to long names first
+                csInlinedBase = toLongName(csInlinedBase);
+                if (csInlinedBase instanceof COSArray && ((COSArray) csInlinedBase).size() > 1)
+                {
+                    COSArray srcArray = (COSArray) csInlinedBase;
+                    COSBase csType = srcArray.get(0);
+                    if (COSName.I.equals(csType) || COSName.INDEXED.equals(csType))
+                    {
+                        COSArray dstArray = new COSArray();
+                        dstArray.addAll(srcArray);
+                        dstArray.set(0, COSName.INDEXED);
+                        dstArray.set(1, toLongName(srcArray.get(1)));
+                        csInlinedBase = dstArray;
+                    }
+                }                
                 PDColorSpace pdCS = PDColorSpace.create(csInlinedBase);
                 PreflightConfiguration cfg = context.getConfig();
                 ColorSpaceHelperFactory csFact = cfg.getColorSpaceHelperFact();
                 csHelper = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.ONLY_DEVICE);
             }
-
             csHelper.validate();
         }
     }
-
+    
+    // deliver the long name of a device colorspace, or the parameter
+    private COSBase toLongName(COSBase cs)
+    {
+        if (COSName.RGB.equals(cs))
+        {
+            return COSName.DEVICERGB;
+        }
+        if (COSName.CMYK.equals(cs))
+        {
+            return COSName.DEVICECMYK;
+        }
+        if (COSName.G.equals(cs))
+        {
+            return COSName.DEVICEGRAY;
+        }
+        return cs;
+    }
+    
     /**
      * This method validates if the ColorOperator can be used with the color space
      * defined in OutputIntent dictionaries.