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 2019/06/10 17:00:12 UTC

svn commit: r1860965 [2/2] - in /pdfbox/trunk/preflight/src: main/java/org/apache/pdfbox/preflight/ main/java/org/apache/pdfbox/preflight/action/ main/java/org/apache/pdfbox/preflight/annotation/ main/java/org/apache/pdfbox/preflight/content/ main/java...

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -29,12 +29,6 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_LINEARIZED_O;
 import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_LINEARIZED_T;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TRAILER;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_ENCRYPT;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_ID;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_INFO;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_PREV;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_ROOT;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRAILER_DICTIONARY_KEY_SIZE;
 
 import java.util.List;
 
@@ -42,6 +36,7 @@ import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSString;
@@ -51,7 +46,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 public class TrailerValidationProcess extends AbstractProcess
 {
@@ -106,14 +100,12 @@ public class TrailerValidationProcess ex
         else
         {
             COSDictionary last = ctx.getXrefTrailerResolver().getLastTrailer();
-            COSDocument cosDoc = new COSDocument();
             checkMainTrailer(ctx, first);
-            if (!compareIds(first, last, cosDoc))
+            if (!compareIds(first, last))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_ID_CONSISTENCY,
                         "ID is different in the first and the last trailer"));
             }
-            COSUtils.closeDocumentQuietly(cosDoc);
         }
     }
 
@@ -160,7 +152,7 @@ public class TrailerValidationProcess ex
             }
 
             checkMainTrailer(ctx, firstTrailer);
-            if (!compareIds(firstTrailer, lastTrailer, cosDocument))
+            if (!compareIds(firstTrailer, lastTrailer))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_ID_CONSISTENCY,
                         "ID is different in the first and the last trailer"));
@@ -174,34 +166,27 @@ public class TrailerValidationProcess ex
      * 
      * @param first the first dictionary for comparison.
      * @param last the last dictionary for comparison.
-     * @param cosDocument the document.
      * @return true if the IDs of the first and last dictionary are the same.
      */
-    protected boolean compareIds(COSDictionary first, COSDictionary last, COSDocument cosDocument)
+    protected boolean compareIds(COSDictionary first, COSDictionary last)
     {
-        COSBase idFirst = first.getItem(COSName.getPDFName(TRAILER_DICTIONARY_KEY_ID));
-        COSBase idLast = last.getItem(COSName.getPDFName(TRAILER_DICTIONARY_KEY_ID));
+        COSBase idFirst = first.getDictionaryObject(COSName.ID);
+        COSBase idLast = last.getDictionaryObject(COSName.ID);
         // According to the revised PDF/A specification the IDs have to be identical
         // if both are present, otherwise everything is fine
         if (idFirst != null && idLast != null)
         {
-    
-            // ---- cast two COSBase to COSArray.
-            COSArray af = COSUtils.getAsArray(idFirst, cosDocument);
-            COSArray al = COSUtils.getAsArray(idLast, cosDocument);
-    
             // ---- if one COSArray is null, the PDF/A isn't valid
-            if ((af == null) || (al == null))
+            if (!(idFirst instanceof COSArray) || !(idLast instanceof COSArray))
             {
                 return false;
             }
-    
             // ---- compare both arrays
             boolean isEqual = true;
-            for (Object of : af.toList())
+            for (COSBase of : ((COSArray) idFirst).toList())
             {
                 boolean oneIsEquals = false;
-                for (Object ol : al.toList())
+                for (COSBase ol : ((COSArray) idLast).toList())
                 {
                     // ---- according to PDF Reference 1-4, ID is an array containing two
                     // strings
@@ -214,7 +199,7 @@ public class TrailerValidationProcess ex
                         break;
                     }
                 }
-                isEqual = isEqual && oneIsEquals;
+                isEqual &= oneIsEquals;
                 if (!isEqual)
                 {
                     break;
@@ -243,43 +228,34 @@ public class TrailerValidationProcess ex
         boolean info = false;
         boolean encrypt = false;
 
-        for (Object key : trailer.keySet())
+        for (COSName cosName : trailer.keySet())
         {
-            if (!(key instanceof COSName))
-            {
-                addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_DICTIONARY_KEY_INVALID,
-                        "Invalid key in The trailer dictionary"));
-                return;
-            }
-
-            String cosName = ((COSName) key).getName();
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_ENCRYPT))
+            if (cosName.equals(COSName.ENCRYPT))
             {
                 encrypt = true;
             }
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_SIZE))
+            if (cosName.equals(COSName.SIZE))
             {
                 size = true;
             }
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_PREV))
+            if (cosName.equals(COSName.PREV))
             {
                 prev = true;
             }
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_ROOT))
+            if (cosName.equals(COSName.ROOT))
             {
                 root = true;
             }
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_INFO))
+            if (cosName.equals(COSName.INFO))
             {
                 info = true;
             }
-            if (cosName.equals(TRAILER_DICTIONARY_KEY_ID))
+            if (cosName.equals(COSName.ID))
             {
                 id = true;
             }
         }
 
-        COSDocument cosDocument = ctx.getDocument().getDocument();
         // PDF/A Trailer dictionary must contain the ID key
         if (!id)
         {
@@ -288,8 +264,8 @@ public class TrailerValidationProcess ex
         }
         else
         {
-            COSBase trailerId = trailer.getItem(TRAILER_DICTIONARY_KEY_ID);
-            if (!COSUtils.isArray(trailerId, cosDocument))
+            COSBase trailerId = trailer.getDictionaryObject(COSName.ID);
+            if (!(trailerId instanceof COSArray))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_TYPE_INVALID,
                         "The trailer dictionary contains an id but it isn't an array"));
@@ -309,8 +285,8 @@ public class TrailerValidationProcess ex
         }
         else
         {
-            COSBase trailerSize = trailer.getItem(TRAILER_DICTIONARY_KEY_SIZE);
-            if (!COSUtils.isInteger(trailerSize, cosDocument))
+            COSBase trailerSize = trailer.getDictionaryObject(COSName.SIZE);
+            if (!(trailerSize instanceof COSInteger))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_TYPE_INVALID,
                         "The trailer dictionary contains a size but it isn't an integer"));
@@ -325,8 +301,8 @@ public class TrailerValidationProcess ex
         }
         else
         {
-            COSBase trailerRoot = trailer.getItem(TRAILER_DICTIONARY_KEY_ROOT);
-            if (!COSUtils.isDictionary(trailerRoot, cosDocument))
+            COSBase trailerRoot = trailer.getDictionaryObject(COSName.ROOT);
+            if (!(trailerRoot instanceof COSDictionary))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_TYPE_INVALID,
                         "The trailer dictionary contains a root but it isn't a dictionary"));
@@ -335,8 +311,8 @@ public class TrailerValidationProcess ex
         // PDF Trailer dictionary may contain the Prev key
         if (prev)
         {
-            COSBase trailerPrev = trailer.getItem(TRAILER_DICTIONARY_KEY_PREV);
-            if (!COSUtils.isInteger(trailerPrev, cosDocument))
+            COSBase trailerPrev = trailer.getDictionaryObject(COSName.PREV);
+            if (!(trailerPrev instanceof COSInteger))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_TYPE_INVALID,
                         "The trailer dictionary contains a prev but it isn't an integer"));
@@ -345,8 +321,8 @@ public class TrailerValidationProcess ex
         // PDF Trailer dictionary may contain the Info key
         if (info)
         {
-            COSBase trailerInfo = trailer.getItem(TRAILER_DICTIONARY_KEY_INFO);
-            if (!COSUtils.isDictionary(trailerInfo, cosDocument))
+            COSBase trailerInfo = trailer.getDictionaryObject(COSName.INFO);
+            if (!(trailerInfo instanceof COSDictionary))
             {
                 addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_TRAILER_TYPE_INVALID,
                         "The trailer dictionary contains an info but it isn't a dictionary"));
@@ -365,10 +341,10 @@ public class TrailerValidationProcess ex
     {
         // ---- Get Ref to obj
         COSDocument cDoc = document.getDocument();
-        List<?> lObj = cDoc.getObjects();
-        for (Object object : lObj)
+        List<COSObject> lObj = cDoc.getObjects();
+        for (COSObject object : lObj)
         {
-            COSBase curObj = ((COSObject) object).getObject();
+            COSBase curObj = object.getObject();
             if (curObj instanceof COSDictionary
                     && ((COSDictionary) curObj).keySet().contains(COSName.getPDFName(DICTIONARY_KEY_LINEARIZED)))
             {
@@ -395,16 +371,9 @@ public class TrailerValidationProcess ex
         boolean n = false;
         boolean t = false;
 
-        for (Object key : linearizedDict.keySet())
+        for (COSName key : linearizedDict.keySet())
         {
-            if (!(key instanceof COSName))
-            {
-                addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_SYNTAX_DICTIONARY_KEY_INVALID,
-                        "Invalid key in The Linearized dictionary"));
-                return;
-            }
-
-            String cosName = ((COSName) key).getName();
+            String cosName = key.getName();
             if (cosName.equals(DICTIONARY_KEY_LINEARIZED_L))
             {
                 l = true;

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -18,9 +18,9 @@ package org.apache.pdfbox.preflight.proc
 import java.io.IOException;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSObject;
+import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination;
 import org.apache.pdfbox.preflight.PreflightConstants;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_DICT_INVALID;
@@ -29,7 +29,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.process.AbstractProcess;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  *
@@ -57,8 +56,7 @@ public class DestinationValidationProces
         // "A destination may be specified either explicitly by 
         // an array of parameters defining its properties or indirectly by name."
 
-        COSDocument cosDocument = ctx.getDocument().getDocument();
-        if (!(dest instanceof COSName || COSUtils.isString(dest, cosDocument) || COSUtils.isArray(dest, cosDocument)))
+        if (!(dest instanceof COSName || dest instanceof COSString || dest instanceof COSArray))
         {
             ctx.addValidationError(new ValidationResult.ValidationError(ERROR_SYNTAX_DICT_INVALID, 
                     "Destination type entry " + dest.getClass().getSimpleName() + " is invalid"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -31,12 +31,6 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_TRANSPARENCY_EXT_GS_BLEND_MODE;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_TRANSPARENCY_EXT_GS_CA;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_TRANSPARENCY_EXT_GS_SOFT_MASK;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_KEY_BLEND_MODE;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_KEY_LOWER_CA;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_KEY_UPPER_CA;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_VALUE_BM_COMPATIBLE;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_VALUE_BM_NORMAL;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_COMMON;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NUMERIC_RANGE;
 import static org.apache.pdfbox.preflight.PreflightConstants.MAX_NEGATIVE_FLOAT;
@@ -45,7 +39,8 @@ import static org.apache.pdfbox.prefligh
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSFloat;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSObject;
@@ -58,7 +53,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.process.AbstractProcess;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 public class ExtGStateValidationProcess extends AbstractProcess
@@ -100,20 +94,16 @@ public class ExtGStateValidationProcess
      * @return the list of ExtGState dictionaries.
      * @throws ValidationException thrown if an Extended Graphic State isn't valid.
      */
-    public List<COSDictionary> extractExtGStateDictionaries(PreflightContext context, COSDictionary egsEntry)
+    public List<COSDictionary> extractExtGStateDictionaries(PreflightContext context,
+            COSDictionary extGStates)
             throws ValidationException
     {
         List<COSDictionary> listOfExtGState = new ArrayList<>(0);
-        COSDocument cosDocument = context.getDocument().getDocument();
-        COSDictionary extGStates = COSUtils.getAsDictionary(egsEntry, cosDocument);
-
         if (extGStates != null)
         {
-            for (Object object : extGStates.keySet())
+            for (COSName key : extGStates.keySet())
             {
-                COSName key = (COSName) object;
-                COSBase gsBase = extGStates.getItem(key);
-                COSDictionary gsDict = COSUtils.getAsDictionary(gsBase, cosDocument);
+                COSDictionary gsDict = extGStates.getCOSDictionary(key);
                 if (gsDict == null)
                 {
                     throw new ValidationException("The Extended Graphics State dictionary is invalid");
@@ -227,9 +217,9 @@ public class ExtGStateValidationProcess
      */
     private void checkSoftMask(PreflightContext context, COSDictionary egs)
     {
-        COSBase smVal = egs.getItem(COSName.SMASK);
+        COSBase smVal = egs.getDictionaryObject(COSName.SMASK);
         if (smVal != null && 
-                !(smVal instanceof COSName && TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE.equals(((COSName) smVal).getName())))
+                !(smVal instanceof COSName && COSName.NONE.equals(smVal)))
         {
             // ---- Soft Mask is valid only if it is a COSName equals to None
             context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_SOFT_MASK,
@@ -245,16 +235,12 @@ public class ExtGStateValidationProcess
      */
     private void checkBlendMode(PreflightContext context, COSDictionary egs)
     {
-        COSBase bmVal = egs.getItem(TRANSPARENCY_DICTIONARY_KEY_BLEND_MODE);
-        if (bmVal != null)
+        COSName bmVal = egs.getCOSName(COSName.BM);
+        // ---- Blend Mode is valid only if it is equals to Normal or Compatible
+        if (bmVal != null && !(COSName.NORMAL.equals(bmVal) || COSName.COMPATIBLE.equals(bmVal)))
         {
-            // ---- Blend Mode is valid only if it is equals to Normal or Compatible
-            if (!(bmVal instanceof COSName && (TRANSPARENCY_DICTIONARY_VALUE_BM_NORMAL.equals(((COSName) bmVal)
-                    .getName()) || TRANSPARENCY_DICTIONARY_VALUE_BM_COMPATIBLE.equals(((COSName) bmVal).getName()))))
-            {
-                context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_BLEND_MODE,
-                        "BlendMode value isn't valid (only Normal and Compatible are authorized)"));
-            }
+            context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_BLEND_MODE,
+                    "BlendMode value isn't valid (only Normal and Compatible are authorized)"));
         }
     }
 
@@ -267,13 +253,12 @@ public class ExtGStateValidationProcess
      */
     private void checkUpperCA(PreflightContext context, COSDictionary egs)
     {
-        COSBase uCA = egs.getItem(TRANSPARENCY_DICTIONARY_KEY_UPPER_CA);
+        COSBase uCA = egs.getDictionaryObject(COSName.CA);
         if (uCA != null)
         {
             // ---- If CA is present only the value 1.0 is authorized
-            COSDocument cosDocument = context.getDocument().getDocument();
-            Float fca = COSUtils.getAsFloat(uCA, cosDocument);
-            Integer ica = COSUtils.getAsInteger(uCA, cosDocument);
+            Float fca = uCA instanceof COSFloat ? ((COSFloat) uCA).floatValue() : null;
+            Integer ica = uCA instanceof COSInteger ? ((COSInteger) uCA).intValue() : null;
             if (!(fca != null && Float.compare(fca, 1.0f) == 0) && !(ica != null && ica == 1))
             {
                 context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_CA,
@@ -291,13 +276,12 @@ public class ExtGStateValidationProcess
      */
     private void checkLowerCA(PreflightContext context, COSDictionary egs)
     {
-        COSBase lCA = egs.getItem(TRANSPARENCY_DICTIONARY_KEY_LOWER_CA);
+        COSBase lCA = egs.getDictionaryObject(COSName.CA_NS);
         if (lCA != null)
         {
             // ---- If ca is present only the value 1.0 is authorized
-            COSDocument cosDocument = context.getDocument().getDocument();
-            Float fca = COSUtils.getAsFloat(lCA, cosDocument);
-            Integer ica = COSUtils.getAsInteger(lCA, cosDocument);
+            Float fca = lCA instanceof COSFloat ? ((COSFloat) lCA).floatValue() : null;
+            Integer ica = lCA instanceof COSInteger ? ((COSInteger) lCA).intValue() : null;
             if (!(fca != null && Float.compare(fca, 1.0f) == 0) && !(ica != null && ica == 1))
             {
                 context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_CA,

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -27,8 +27,8 @@ import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.font.PDFont;
@@ -43,7 +43,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
 import org.apache.pdfbox.preflight.process.AbstractProcess;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 
@@ -54,7 +53,6 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConfiguration.TILING_PATTERN_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_INVALID_PATTERN_DEFINITION;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_MAIN;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE;
 
 public class ResourcesValidationProcess extends AbstractProcess
 {
@@ -145,10 +143,8 @@ public class ResourcesValidationProcess
      */
     protected void validateExtGStates(PreflightContext context, PDResources resources) throws ValidationException
     {
-        COSBase egsEntry = resources.getCOSObject().getItem(TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE);
-        COSDocument cosDocument = context.getDocument().getDocument();
-        COSDictionary extGState = COSUtils.getAsDictionary(egsEntry, cosDocument);
-        if (egsEntry != null)
+        COSDictionary extGState = resources.getCOSObject().getCOSDictionary(COSName.EXT_G_STATE);
+        if (extGState != null)
         {
             ContextHelper.validateElement(context, extGState, EXTGSTATE_PROCESS);
         }
@@ -205,35 +201,40 @@ public class ResourcesValidationProcess
 
     protected void validateXObjects(PreflightContext context, PDResources resources) throws ValidationException
     {
-        COSDocument cosDocument = context.getDocument().getDocument();
-        COSDictionary mapOfXObj = COSUtils.getAsDictionary(resources.getCOSObject().getItem(COSName.XOBJECT),
-                cosDocument);
+        COSDictionary mapOfXObj = resources.getCOSObject().getCOSDictionary(COSName.XOBJECT);
         if (mapOfXObj != null)
         {
             for (Entry<COSName, COSBase> entry : mapOfXObj.entrySet())
             {
                 COSBase xobj = entry.getValue();
-                if (xobj != null && COSUtils.isStream(xobj, cosDocument))
+                if (xobj != null)
                 {
-                    try
+                    if (xobj instanceof COSObject)
                     {
-                        COSStream stream = COSUtils.getAsStream(xobj, cosDocument);
-                        PDXObject pdXObject = PDXObject.createXObject(stream, resources);
-                        if (pdXObject != null)
+                        xobj = ((COSObject) xobj).getObject();
+                    }
+                    if (xobj instanceof COSStream) 
+                    {
+                        try
                         {
-                            ContextHelper.validateElement(context, pdXObject, GRAPHIC_PROCESS);
+                            COSStream stream = (COSStream) xobj;
+                            PDXObject pdXObject = PDXObject.createXObject(stream, resources);
+                            if (pdXObject != null)
+                            {
+                                ContextHelper.validateElement(context, pdXObject, GRAPHIC_PROCESS);
+                            }
+                            else
+                            {
+                                ContextHelper.validateElement(context, stream, GRAPHIC_PROCESS);
+                            }
                         }
-                        else
+                        catch (IOException e)
                         {
-                            ContextHelper.validateElement(context, stream, GRAPHIC_PROCESS);
+                            context.addValidationError(new ValidationError(ERROR_GRAPHIC_MAIN,
+                                    e.getMessage() + " for entry '"
+                                    + entry.getKey().getName() + "'", e));
                         }
                     }
-                    catch (IOException e)
-                    {
-                        context.addValidationError(new ValidationError(ERROR_GRAPHIC_MAIN,
-                                e.getMessage() + " for entry '"
-                                + entry.getKey().getName() + "'", e));
-                    }
                 }
             }
         }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -25,12 +25,12 @@ import java.io.IOException;
 
 import static org.apache.pdfbox.preflight.PreflightConfiguration.EXTGSTATE_PROCESS;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_INVALID_UNKNOWN_COLOR_SPACE;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShading;
@@ -113,8 +113,8 @@ public class ShadingPatternValidationPro
     protected void checkGraphicState(PreflightContext context, PDPage page, PDShading shadingRes)
             throws ValidationException
     {
-        COSDictionary resources = (COSDictionary) shadingRes.getCOSObject().getDictionaryObject(
-                TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE);
+        COSDictionary resources = (COSDictionary) shadingRes.getCOSObject()
+                .getDictionaryObject(COSName.EXT_G_STATE);
         if (resources != null)
         {
             ContextHelper.validateElement(context, resources, EXTGSTATE_PROCESS);

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -28,9 +28,6 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_INVALID;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_TRANSPARENCY_GROUP;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_UNKOWN_ERROR;
-import static org.apache.pdfbox.preflight.PreflightConstants.PAGE_DICTIONARY_VALUE_THUMB;
-import static org.apache.pdfbox.preflight.PreflightConstants.XOBJECT_DICTIONARY_KEY_GROUP;
-import static org.apache.pdfbox.preflight.PreflightConstants.XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY;
 
 import java.io.IOException;
 import java.util.List;
@@ -60,7 +57,6 @@ import org.apache.pdfbox.preflight.graph
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory;
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory.ColorSpaceRestriction;
 import org.apache.pdfbox.preflight.process.AbstractProcess;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 public class SinglePageValidationProcess extends AbstractProcess
@@ -148,7 +144,7 @@ public class SinglePageValidationProcess
      */
     protected void validateGraphicObjects(PreflightContext context, PDPage page) throws ValidationException
     {
-        COSBase thumbBase = page.getCOSObject().getItem(PAGE_DICTIONARY_VALUE_THUMB);
+        COSBase thumbBase = page.getCOSObject().getItem(COSName.THUMB);
         if (thumbBase != null)
         {
             try
@@ -235,12 +231,11 @@ public class SinglePageValidationProcess
      */
     protected void validateGroupTransparency(PreflightContext context, PDPage page) throws ValidationException
     {
-        COSBase baseGroup = page.getCOSObject().getItem(XOBJECT_DICTIONARY_KEY_GROUP);
-        COSDictionary groupDictionary = COSUtils.getAsDictionary(baseGroup, context.getDocument().getDocument());
+        COSDictionary groupDictionary = page.getCOSObject().getCOSDictionary(COSName.GROUP);
         if (groupDictionary != null)
         {
-            String sVal = groupDictionary.getNameAsString(COSName.S);
-            if (XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal))
+            COSName sVal = groupDictionary.getCOSName(COSName.S);
+            if (COSName.S.equals(sVal))
             {
                 context.addValidationError(new ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP,
                         "Group has a transparency S entry or the S entry is null"));

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java Mon Jun 10 17:00:11 2019
@@ -24,17 +24,13 @@ package org.apache.pdfbox.preflight.xobj
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_TRANSPARENCY_SMASK;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_UNEXPECTED_KEY;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY;
-import static org.apache.pdfbox.preflight.PreflightConstants.TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE;
-import static org.apache.pdfbox.preflight.PreflightConstants.XOBJECT_DICTIONARY_VALUE_SUBTYPE_POSTSCRIPT;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 
 /**
  * This class processes commons validations of XObjects.
@@ -49,16 +45,11 @@ public abstract class AbstractXObjValida
      * The validation context which contains useful information to process validation.
      */
     protected PreflightContext context = null;
-    /**
-     * The PDF document as COSDocument.
-     */
-    protected COSDocument cosDocument = null;
 
     public AbstractXObjValidator(PreflightContext context, COSStream xobj)
     {
         this.xobject = xobj;
         this.context = context;
-        this.cosDocument = context.getDocument().getDocument();
     }
 
     /**
@@ -70,10 +61,9 @@ public abstract class AbstractXObjValida
      */
     protected void checkSMask()
     {
-        COSBase smask = xobject.getItem(COSName.SMASK);
+        COSBase smask = xobject.getCOSDictionary(COSName.SMASK);
         if (smask != null
-                && !(COSUtils.isString(smask, cosDocument) && TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE
-                        .equals(COSUtils.getAsString(smask, cosDocument))))
+                && !(smask instanceof COSName && COSName.NONE.equals(smask)))
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_TRANSPARENCY_SMASK,
                     "Soft Mask must be null or None ["+xobject.toString()+"]"));
@@ -118,18 +108,16 @@ public abstract class AbstractXObjValida
     protected void checkPostscriptXObject()
     {
         // 6.2.7 No PostScript XObjects
-        String subtype = this.xobject.getNameAsString(COSName.SUBTYPE);
-        if (XOBJECT_DICTIONARY_VALUE_SUBTYPE_POSTSCRIPT.equals(subtype))
+        COSName subtype = this.xobject.getCOSName(COSName.SUBTYPE);
+        if (COSName.PS.equals(subtype))
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY,
                     "No Postscript XObject allowed in PDF/A"));
-            return;
         }
-        if (this.xobject.getItem(COSName.getPDFName("Subtype2")) != null)
+        else if (this.xobject.getItem(COSName.getPDFName("Subtype2")) != null)
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY,
                     "No Postscript XObject allowed in PDF/A (Subtype2)"));
-            return;
         }
     }
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java Mon Jun 10 17:00:11 2019
@@ -27,10 +27,8 @@ import static org.apache.pdfbox.prefligh
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_TRANSPARENCY_GROUP;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_UNEXPECTED_KEY;
 import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY;
-import static org.apache.pdfbox.preflight.PreflightConstants.XOBJECT_DICTIONARY_KEY_GROUP;
-import static org.apache.pdfbox.preflight.PreflightConstants.XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY;
 
-import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -42,7 +40,6 @@ import org.apache.pdfbox.preflight.Prefl
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.content.PreflightContentStream;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.ContextHelper;
 
 /**
@@ -93,12 +90,11 @@ public class XObjFormValidator extends A
             return;
         }
 
-        COSBase bbBase = this.xobject.getItem(COSName.BBOX);
+        COSArray bbArray = this.xobject.getCOSArray(COSName.BBOX);
         // ---- BBox is an Array (Rectangle)
-        if (bbBase == null || !COSUtils.isArray(bbBase, cosDocument))
+        if (bbArray == null)
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_BBOX));
-            return;
         }
     }
 
@@ -120,23 +116,21 @@ public class XObjFormValidator extends A
      */
     protected void checkGroup()
     {
-        COSBase baseGroup = this.xobject.getItem(XOBJECT_DICTIONARY_KEY_GROUP);
-        COSDictionary groupDictionary = COSUtils.getAsDictionary(baseGroup, cosDocument);
+        COSDictionary groupDictionary = this.xobject.getCOSDictionary(COSName.GROUP);
         if (groupDictionary != null)
         {
-            if (!XOBJECT_DICTIONARY_KEY_GROUP.equals(groupDictionary.getNameAsString(COSName.TYPE)))
+            if (!COSName.GROUP.equals(groupDictionary.getCOSName(COSName.TYPE)))
             {
                 context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_FIELD, 
                         "The Group dictionary hasn't Group as Type value"));
             } 
             else 
             {
-                String sVal = groupDictionary.getNameAsString(COSName.S);
-                if (sVal == null || XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal))
+                COSName sVal = groupDictionary.getCOSName(COSName.S);
+                if (sVal == null || COSName.TRANSPARENCY.equals(sVal))
                 {
                     context.addValidationError(new ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP, 
                             "Group has a transparency S entry or the S entry is null ["+xobject.toString()+"]"));
-                    return;
                 }
             }
         }
@@ -148,11 +142,10 @@ public class XObjFormValidator extends A
     protected void checkPS()
     {
         // 6.2.4 and 6.2.5 no PS
-        if (this.xobject.getItem(COSName.getPDFName("PS")) != null)
+        if (this.xobject.getItem(COSName.PS) != null)
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_KEY, 
                     "Unexpected 'PS' Key"));
-            return;
         }
     }
 
@@ -167,7 +160,6 @@ public class XObjFormValidator extends A
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY,
                     "Unexpected 'PS' value for 'Subtype2' Key"));
-            return;
         }
     }
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java Mon Jun 10 17:00:11 2019
@@ -32,6 +32,7 @@ import org.apache.commons.logging.LogFac
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSBoolean;
+import org.apache.pdfbox.cos.COSInteger;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
@@ -42,7 +43,6 @@ import org.apache.pdfbox.preflight.excep
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelper;
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory;
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory.ColorSpaceRestriction;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.apache.pdfbox.preflight.utils.RenderingIntents;
 
 /**
@@ -88,7 +88,8 @@ public class XObjImageValidator extends
      */
     protected void checkInterpolate() throws ValidationException
     {
-        if (this.xobject.getItem("Interpolate") != null && this.xobject.getBoolean("Interpolate", true))
+        if (this.xobject.getItem(COSName.INTERPOLATE) != null
+                && this.xobject.getBoolean(COSName.INTERPOLATE, true))
         {
             context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY,
                     "Unexpected 'true' value for 'Interpolate' Key"));
@@ -118,7 +119,7 @@ public class XObjImageValidator extends
     protected void checkColorSpaceAndImageMask() throws ValidationException
     {
         COSBase csImg = this.xobject.getItem(COSName.COLORSPACE);
-        COSBase bitsPerComp = this.xobject.getItem("BitsPerComponent");
+        COSBase bitsPerComp = this.xobject.getDictionaryObject(COSName.BITS_PER_COMPONENT);
         COSBase mask = this.xobject.getItem(COSName.MASK);
 
         if (isImageMaskTrue())
@@ -129,8 +130,7 @@ public class XObjImageValidator extends
                         "ImageMask entry is true, ColorSpace and Mask are forbidden."));
             }
 
-            Integer bitsPerCompValue = COSUtils.getAsInteger(bitsPerComp, cosDocument);
-            if (bitsPerCompValue != null && bitsPerCompValue != 1)
+            if (bitsPerComp instanceof COSInteger && ((COSInteger) bitsPerComp).intValue() != 1)
             {
                 context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY,
                         "ImageMask entry is true, BitsPerComponent must be absent or 1."));