You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2017/05/03 10:51:23 UTC

svn commit: r1793635 - in /pdfbox/branches/2.0/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java

Author: msahyoun
Date: Wed May  3 10:51:22 2017
New Revision: 1793635

URL: http://svn.apache.org/viewvc?rev=1793635&view=rev
Log:
PDFBOX-3752: support DeviceGray and DeviceCMYK operator for setting the font color in default appearance string

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java
    pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java?rev=1793635&r1=1793634&r2=1793635&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceString.java Wed May  3 10:51:22 2017
@@ -34,7 +34,8 @@ import org.apache.pdfbox.pdmodel.PDResou
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
-import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream;
 
@@ -130,10 +131,18 @@ class PDDefaultAppearanceString
         {
             processSetFont(operands);
         }
+        else if ("g".equals(name))
+        {
+            processSetFontColor(operands);
+        }
         else if ("rg".equals(name))
         {
             processSetFontColor(operands);
         }
+        else if ("k".equals(name))
+        {
+            processSetFontColor(operands);
+        }
     }
     
     /**
@@ -184,9 +193,21 @@ class PDDefaultAppearanceString
      */
     private void processSetFontColor(List<COSBase> operands) throws IOException
     {
-        PDColorSpace colorSpace = PDDeviceRGB.INSTANCE;
-        if (colorSpace instanceof PDDeviceColorSpace &&
-            operands.size() < colorSpace.getNumberOfComponents())
+    	PDColorSpace colorSpace = null;
+        
+        if (operands.size() == 1)
+        {
+            colorSpace = PDDeviceGray.INSTANCE;
+        }
+        else if (operands.size() == 3)
+        {
+            colorSpace = PDDeviceRGB.INSTANCE;
+        }
+        else if (operands.size() == 4)
+        {
+            colorSpace = PDDeviceCMYK.INSTANCE;
+        }
+        else 
         {
             throw new IOException("Missing operands for set non stroking color operator " + Arrays.toString(operands.toArray()));
         }

Modified: pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java?rev=1793635&r1=1793634&r2=1793635&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/interactive/form/PDDefaultAppearanceStringTest.java Wed May  3 10:51:22 2017
@@ -46,7 +46,7 @@ public class PDDefaultAppearanceStringTe
     @Test
     public void testParseDAString() throws IOException
     {
-        COSString sampleString = new COSString("/" + fontResourceName.getName() + " 12 Tf 0.019 0.305 0.627 rg 0g");
+        COSString sampleString = new COSString("/" + fontResourceName.getName() + " 12 Tf 0.019 0.305 0.627 rg");
 
         PDDefaultAppearanceString defaultAppearanceString = new PDDefaultAppearanceString(sampleString, resources);
 
@@ -61,14 +61,14 @@ public class PDDefaultAppearanceStringTe
     @Test(expected=IOException.class)
     public void testFontResourceUnavailable() throws IOException
     {
-        COSString sampleString = new COSString("/Helvetica 12 Tf 0.019 0.305 0.627 rg 0g");
+        COSString sampleString = new COSString("/Helvetica 12 Tf 0.019 0.305 0.627 rg");
         new PDDefaultAppearanceString(sampleString, resources);
     }
     
     @Test(expected=IOException.class)
     public void testWrongNumberOfColorArguments() throws IOException
     {
-        COSString sampleString = new COSString("/Helvetica 12 Tf 0.305 0.627 rg 0g");
+        COSString sampleString = new COSString("/Helvetica 12 Tf 0.305 0.627 rg");
         new PDDefaultAppearanceString(sampleString, resources);
     } 
 }