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 [1/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...
Author: lehmi
Date: Mon Jun 10 17:00:11 2019
New Revision: 1860965
URL: http://svn.apache.org/viewvc?rev=1860965&view=rev
Log:
PDFBOX-4566: remove utility class org.apache.pdfbox.preflight.utils.COSUtils
Removed:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/COSUtils.java
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/TrailerValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/DestinationValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ExtGStateValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ResourcesValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShadingPatternValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/SinglePageValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/AbstractXObjValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjImageValidator.java
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java Mon Jun 10 17:00:11 2019
@@ -46,36 +46,14 @@ public interface PreflightConstants
float MAX_POSITIVE_FLOAT = 32767f;
float MAX_NEGATIVE_FLOAT = -32767f;
- String TRAILER_DICTIONARY_KEY_ID = "ID";
- String TRAILER_DICTIONARY_KEY_SIZE = "Size";
- String TRAILER_DICTIONARY_KEY_PREV = "Prev";
- String TRAILER_DICTIONARY_KEY_ROOT = "Root";
- String TRAILER_DICTIONARY_KEY_INFO = "Info";
- String TRAILER_DICTIONARY_KEY_ENCRYPT = "Encrypt";
-
- String DICTIONARY_KEY_ADDITIONAL_ACTION = "AA";
- String DICTIONARY_KEY_OPEN_ACTION = "OpenAction";
-
- String DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS = "OutputIntents";
- String DOCUMENT_DICTIONARY_KEY_OPTIONAL_CONTENTS = "OCProperties";
-
String OUTPUT_INTENT_DICTIONARY_KEY_S = "S";
String OUTPUT_INTENT_DICTIONARY_KEY_INFO = "Info";
String OUTPUT_INTENT_DICTIONARY_VALUE_GTS_PDFA1 = "GTS_PDFA1";
- String OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE = "DestOutputProfile";
String OUTPUT_INTENT_DICTIONARY_KEY_OUTPUT_CONDITION_IDENTIFIER = "OutputConditionIdentifier";
String OUTPUT_INTENT_DICTIONARY_VALUE_OUTPUT_CONDITION_IDENTIFIER_CUSTOM = "Custom";
- String TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE = "ExtGState";
String TRANSPARENCY_DICTIONARY_KEY_EXTGSTATE_ENTRY_REGEX = "(GS|gs)([0-9])+";
- String TRANSPARENCY_DICTIONARY_KEY_BLEND_MODE = "BM";
- String TRANSPARENCY_DICTIONARY_KEY_UPPER_CA = "CA";
- String TRANSPARENCY_DICTIONARY_KEY_LOWER_CA = "ca";
- String TRANSPARENCY_DICTIONARY_VALUE_SOFT_MASK_NONE = "None";
- String TRANSPARENCY_DICTIONARY_VALUE_BM_NORMAL = "Normal";
- String TRANSPARENCY_DICTIONARY_VALUE_BM_COMPATIBLE = "Compatible";
-
String DICTIONARY_KEY_LINEARIZED = "Linearized";
String DICTIONARY_KEY_LINEARIZED_L = "L";
String DICTIONARY_KEY_LINEARIZED_H = "H";
@@ -84,21 +62,10 @@ public interface PreflightConstants
String DICTIONARY_KEY_LINEARIZED_N = "N";
String DICTIONARY_KEY_LINEARIZED_T = "T";
- String DICTIONARY_KEY_XOBJECT = "XObject";
- String DICTIONARY_KEY_PATTERN = "Pattern";
-
String DICTIONARY_KEY_PATTERN_TYPE = "PatternType";
int DICTIONARY_PATTERN_TILING = 1;
int DICTIONARY_PATTERN_SHADING = 2;
- String PATTERN_KEY_PAINT_TYPE = "PaintType";
- String PATTERN_KEY_TILING_TYPE = "TilingType";
- String PATTERN_KEY_BBOX = "BBox";
- String PATTERN_KEY_XSTEP = "XStep";
- String PATTERN_KEY_YSTEP = "YStep";
- String PATTERN_KEY_SHADING = "Shading";
- String PATTERN_KEY_SHADING_TYPE = "ShadingType";
-
String XOBJECT_DICTIONARY_VALUE_SUBTYPE_IMG = "Image";
String XOBJECT_DICTIONARY_VALUE_SUBTYPE_FORM = "Form";
String XOBJECT_DICTIONARY_VALUE_SUBTYPE_POSTSCRIPT = "PS";
@@ -123,11 +90,8 @@ public interface PreflightConstants
String FONT_DICTIONARY_VALUE_ENCODING_STD = "StandardEncoding";
String FONT_DICTIONARY_VALUE_ENCODING_PDFDOC = "PDFDocEncoding";
- String FONT_DICTIONARY_VALUE_ENCODING = "Encoding";
String FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H = "Identity-H";
String FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V = "Identity-V";
- String FONT_DICTIONARY_VALUE_CMAP_IDENTITY = "Identity";
- String FONT_DICTIONARY_VALUE_TYPE_CMAP = "CMap";
String FONT_DICTIONARY_KEY_NAME = "Name";
String FONT_DICTIONARY_KEY_BASEFONT = "BaseFont";
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightContext.java Mon Jun 10 17:00:11 2019
@@ -29,12 +29,12 @@ import java.util.Map;
import java.util.Set;
import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.io.IOUtils;
import org.apache.pdfbox.pdfparser.XrefTrailerResolver;
import org.apache.pdfbox.pdmodel.common.COSObjectable;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.FontContainer;
import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.preflight.utils.DataSource;
import org.apache.xmpbox.XMPMetadata;
@@ -216,7 +216,7 @@ public class PreflightContext implements
@Override
public void close()
{
- COSUtils.closeDocumentQuietly(document);
+ IOUtils.closeQuietly(document);
}
/**
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java Mon Jun 10 17:00:11 2019
@@ -28,7 +28,6 @@ import java.util.Map;
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.COSName;
import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.cos.COSObjectKey;
@@ -36,10 +35,8 @@ 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;
-import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_KEY_NEXT;
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_GOTO;
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_GOTOR;
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_HIDE;
@@ -56,8 +53,6 @@ import static org.apache.pdfbox.prefligh
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_THREAD;
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_ATYPE_URI;
import static org.apache.pdfbox.preflight.PreflightConstants.ACTION_DICTIONARY_VALUE_TYPE;
-import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_ADDITIONAL_ACTION;
-import static org.apache.pdfbox.preflight.PreflightConstants.DICTIONARY_KEY_OPEN_ACTION;
public class ActionManagerFactory
{
@@ -88,25 +83,20 @@ public class ActionManagerFactory
callCreateAction(aDict, ctx, result, alreadyCreated);
}
- COSDocument cosDocument = ctx.getDocument().getDocument();
- COSBase oaDict = dictionary.getDictionaryObject(DICTIONARY_KEY_OPEN_ACTION);
- if (oaDict != null && !COSUtils.isArray(oaDict, cosDocument))
+ COSBase oaDict = dictionary.getDictionaryObject(COSName.OPEN_ACTION);
+ if (oaDict != null && !(oaDict instanceof COSArray))
{
callCreateAction(oaDict, ctx, result, alreadyCreated);
}
// else nothing to do because an array contains a Destination and not an Action.
- COSBase aa = dictionary.getDictionaryObject(DICTIONARY_KEY_ADDITIONAL_ACTION);
- if (aa != null)
+ COSDictionary aaDict = dictionary.getCOSDictionary(COSName.AA);
+ if (aaDict != null)
{
- COSDictionary aaDict = COSUtils.getAsDictionary(aa, cosDocument);
- if (aaDict != null)
+ for (COSName name : aaDict.keySet())
{
- for (Object key : aaDict.keySet())
- {
- COSName name = (COSName) key;
- callCreateAction(aaDict.getItem(name), ctx, result, name.getName(), alreadyCreated);
- }
+ callCreateAction(aaDict.getDictionaryObject(name), ctx, result, name.getName(),
+ alreadyCreated);
}
}
return result;
@@ -155,21 +145,23 @@ public class ActionManagerFactory
private void callCreateAction(COSBase aDict, PreflightContext ctx, List<AbstractActionManager> result,
String additionActionKey, Map<COSObjectKey, Boolean> alreadyCreated) throws ValidationException
{
- COSDocument cosDocument = ctx.getDocument().getDocument();
- if (COSUtils.isDictionary(aDict, cosDocument))
+ if (aDict instanceof COSDictionary || aDict instanceof COSObject
+ && ((COSObject) aDict).getObject() instanceof COSDictionary)
{
if (aDict instanceof COSObject)
{
COSObjectKey cok = new COSObjectKey((COSObject) aDict);
+ COSDictionary indirectDict = (COSDictionary) ((COSObject) aDict).getObject();
if (!alreadyCreated.containsKey(cok))
{
- result.add(createActionManager(ctx, COSUtils.getAsDictionary(aDict, cosDocument), additionActionKey));
+ result.add(createActionManager(ctx, indirectDict, additionActionKey));
alreadyCreated.put(cok, true);
}
}
else
{
- result.add(createActionManager(ctx, COSUtils.getAsDictionary(aDict, cosDocument), additionActionKey));
+ result.add(createActionManager(ctx, (COSDictionary) aDict,
+ additionActionKey));
}
}
else
@@ -193,17 +185,16 @@ public class ActionManagerFactory
List<AbstractActionManager> result = new ArrayList<>(0);
Map<COSObjectKey, Boolean> alreadyCreated = new HashMap<>();
- COSBase nextDict = actionDictionary.getDictionaryObject(ACTION_DICTIONARY_KEY_NEXT);
+ COSBase nextDict = actionDictionary.getDictionaryObject(COSName.NEXT);
if (nextDict != null)
{
- COSDocument cosDocument = ctx.getDocument().getDocument();
- if (COSUtils.isArray(nextDict, cosDocument))
+ if (nextDict instanceof COSArray)
{
- COSArray array = COSUtils.getAsArray(nextDict, cosDocument);
+ COSArray array = (COSArray) nextDict;
// ---- Next may contains an array of Action dictionary
for (int i = 0; i < array.size(); ++i)
{
- callCreateAction(array.get(i), ctx, result, alreadyCreated);
+ callCreateAction(array.getObject(i), ctx, result, alreadyCreated);
}
}
else
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/GoToRemoteAction.java Mon Jun 10 17:00:11 2019
@@ -25,9 +25,9 @@ import java.io.IOException;
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.COSName;
import org.apache.pdfbox.cos.COSNumber;
+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_ACTION_INVALID_TYPE;
@@ -37,7 +37,6 @@ import org.apache.pdfbox.preflight.Prefl
import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
/**
* ActionManager for the GoToRemote action. GoToRemoteAction is valid if the F entry is present.
@@ -75,8 +74,7 @@ public class GoToRemoteAction extends Go
return false;
}
- COSDocument cosDocument = this.context.getDocument().getDocument();
- if (!(dest instanceof COSName || COSUtils.isString(dest, cosDocument) || COSUtils.isArray(dest, cosDocument)))
+ if (!(dest instanceof COSName || dest instanceof COSString || dest instanceof COSArray))
{
context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE,
"Type " + dest.getClass().getSimpleName() + " of /D entry is invalid"));
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/HideAction.java Mon Jun 10 17:00:11 2019
@@ -25,13 +25,13 @@ import static org.apache.pdfbox.prefligh
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_INVALID_TYPE;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_MISING_KEY;
+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.COSName;
+import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
/**
* ActionManager for the Hide action. The Hide action isn't specifically prohibited by PDF/A-1, but should have been. So
@@ -63,7 +63,7 @@ public class HideAction extends Abstract
@Override
protected boolean innerValid()
{
- COSBase t = this.actionDictionnary.getItem(COSName.T);
+ COSBase t = this.actionDictionnary.getDictionaryObject(COSName.T);
// ---- T entry is mandatory
if (t == null)
{
@@ -72,9 +72,8 @@ public class HideAction extends Abstract
return false;
}
- COSDocument cosDocument = this.context.getDocument().getDocument();
- if (!(COSUtils.isDictionary(t, cosDocument) || COSUtils.isArray(t, cosDocument) || COSUtils.isString(t,
- cosDocument)))
+ if (!(t instanceof COSDictionary || t instanceof COSArray || t instanceof COSString
+ || t instanceof COSName))
{
context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "T entry type is invalid"));
return false;
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ThreadAction.java Mon Jun 10 17:00:11 2019
@@ -26,11 +26,11 @@ import static org.apache.pdfbox.prefligh
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.COSString;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
/**
* ActionManager for the Thread action ThreadAction is valid if the D entry is present.
@@ -57,7 +57,7 @@ public class ThreadAction extends Abstra
@Override
protected boolean innerValid()
{
- COSBase d = this.actionDictionnary.getItem(COSName.D);
+ COSBase d = this.actionDictionnary.getDictionaryObject(COSName.D);
// ---- D entry is mandatory
if (d == null)
@@ -67,9 +67,8 @@ public class ThreadAction extends Abstra
return false;
}
- COSDocument cosDocument = this.context.getDocument().getDocument();
- if (!(COSUtils.isInteger(d, cosDocument) || COSUtils.isString(d, cosDocument) || COSUtils.isDictionary(d,
- cosDocument)))
+ if (!(d instanceof COSInteger || d instanceof COSName || d instanceof COSString
+ || d instanceof COSDictionary))
{
context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "D entry type is invalid"));
return false;
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/UriAction.java Mon Jun 10 17:00:11 2019
@@ -26,11 +26,10 @@ import static org.apache.pdfbox.prefligh
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.COSString;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
-import org.apache.pdfbox.preflight.utils.COSUtils;
/**
* ActionManager for the URI action URI action is valid if the URI entry is present as a String.
@@ -57,7 +56,7 @@ public class UriAction extends AbstractA
@Override
protected boolean innerValid()
{
- COSBase uri = this.actionDictionnary.getItem(COSName.URI);
+ COSBase uri = this.actionDictionnary.getDictionaryObject(COSName.URI);
if (uri == null)
{
context.addValidationError(new ValidationError(ERROR_ACTION_MISING_KEY,
@@ -65,8 +64,7 @@ public class UriAction extends AbstractA
return false;
}
- COSDocument cosDocument = this.context.getDocument().getDocument();
- if (!COSUtils.isString(uri, cosDocument))
+ if (!(uri instanceof COSString))
{
context.addValidationError(new ValidationError(ERROR_ACTION_INVALID_TYPE, "URI entry should be a string"));
return false;
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java Mon Jun 10 17:00:11 2019
@@ -23,8 +23,10 @@ package org.apache.pdfbox.preflight.anno
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.COSName;
+import org.apache.pdfbox.cos.COSObject;
+import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
@@ -32,7 +34,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.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.preflight.utils.ContextHelper;
@@ -53,7 +54,6 @@ public abstract class AnnotationValidato
private AnnotationValidatorFactory annotFact = null;
protected PreflightContext ctx = null;
- private COSDocument cosDocument = null;
/**
* COSDictionary of the annotation
*/
@@ -67,7 +67,6 @@ public abstract class AnnotationValidato
{
this.ctx = context;
this.annotDictionary = annotDictionary;
- this.cosDocument = this.ctx.getDocument().getDocument();
}
/**
@@ -106,10 +105,10 @@ public abstract class AnnotationValidato
*/
protected boolean checkCA()
{
- COSBase ca = this.pdAnnot.getCOSObject().getItem(COSName.CA);
- if (ca != null)
+ COSBase ca = this.pdAnnot.getCOSObject().getDictionaryObject(COSName.CA);
+ if (ca instanceof COSFloat)
{
- float caf = COSUtils.getAsFloat(ca, cosDocument);
+ float caf = ((COSFloat) ca).floatValue();
if (Float.compare(caf, 1.0f) != 0)
{ // ---- Only 1.0 is authorized as value
ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_CA,
@@ -187,53 +186,59 @@ public abstract class AnnotationValidato
}
else
{
- COSBase apn = apDict.getItem(COSName.N);
- COSBase subtype = annotDictionary.getItem(COSName.SUBTYPE);
+ COSBase apn = apDict.getDictionaryObject(COSName.N);
+ COSName subtype = annotDictionary.getCOSName(COSName.SUBTYPE);
COSBase ft = getFieldType();
if (COSName.WIDGET.equals(subtype) && COSName.BTN.equals(ft))
{
// TECHNICAL CORRIGENDUM 2 for ISO 19005-1:2005 (PDF/A-1)
// added a clause for Widget Annotations:
// the value of the N key shall be an appearance subdictionary
- if (COSUtils.isStream(apn, cosDocument))
+ if (apn instanceof COSStream)
{
ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
"The N Appearance of a Btn widget must not be a stream, but an appearance subdictionary"));
// But validate it anyway, for isartor-6-3-4-t01-fail-f.pdf
// Appearance stream is a XObjectForm, check it.
- ContextHelper.validateElement(ctx, new PDFormXObject(
- COSUtils.getAsStream(apn, cosDocument)),
+ ContextHelper.validateElement(ctx, new PDFormXObject((COSStream) apn),
GRAPHIC_PROCESS);
return false;
}
- if (!COSUtils.isDictionary(apn, cosDocument))
+ if (apn instanceof COSDictionary)
+ {
+ for (COSBase val : ((COSDictionary) apn).getValues())
+ {
+ // Appearance stream is a XObjectForm, check it.
+ if (val instanceof COSObject)
+ {
+ val = ((COSObject) val).getObject();
+ }
+ ContextHelper.validateElement(ctx,
+ new PDFormXObject((COSStream) val), GRAPHIC_PROCESS);
+ }
+ }
+ else
{
ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
"The N Appearance must be an appearance subdictionary"));
return false;
}
- COSDictionary apnDict = COSUtils.getAsDictionary(apn, cosDocument);
- for (COSBase val : apnDict.getValues())
- {
- // Appearance stream is a XObjectForm, check it.
- ContextHelper.validateElement(ctx, new PDFormXObject(
- COSUtils.getAsStream(val, cosDocument)),
- GRAPHIC_PROCESS);
- }
}
else
{
// the N entry must be a stream (Dictionaries are forbidden)
- if (!COSUtils.isStream(apn, cosDocument))
+ if (apn instanceof COSStream)
+ {
+ // Appearance stream is a XObjectForm, check it.
+ ContextHelper.validateElement(ctx,
+ new PDFormXObject((COSStream) apn), GRAPHIC_PROCESS);
+ }
+ else
{
ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
"The N Appearance must be a Stream"));
return false;
}
- // Appearance stream is a XObjectForm, check it.
- ContextHelper.validateElement(ctx, new PDFormXObject(
- COSUtils.getAsStream(apn, cosDocument)),
- GRAPHIC_PROCESS);
}
}
}
@@ -264,17 +269,18 @@ public abstract class AnnotationValidato
*/
protected boolean checkPopup() throws ValidationException
{
- COSBase cosPopup = this.annotDictionary.getItem(ANNOT_DICTIONARY_VALUE_SUBTYPE_POPUP);
+ COSBase cosPopup = this.annotDictionary
+ .getDictionaryObject(COSName.getPDFName(ANNOT_DICTIONARY_VALUE_SUBTYPE_POPUP));
if (cosPopup != null)
{
- COSDictionary popupDict = COSUtils.getAsDictionary(cosPopup, cosDocument);
- if (popupDict == null)
+ if (!(cosPopup instanceof COSDictionary))
{
ctx.addValidationError(new ValidationError(ERROR_SYNTAX_DICT_INVALID,
"An Annotation has a Popup entry, but the value is missing or isn't a dictionary"));
return false;
}
- AnnotationValidator popupVal = this.annotFact.getAnnotationValidator(ctx, popupDict);
+ AnnotationValidator popupVal = this.annotFact.getAnnotationValidator(ctx,
+ (COSDictionary) cosPopup);
return popupVal.validate();
}
return true;
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=1860965&r1=1860964&r2=1860965&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 Mon Jun 10 17:00:11 2019
@@ -34,7 +34,6 @@ import java.util.List;
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.COSString;
import org.apache.pdfbox.pdmodel.PDPage;
@@ -51,7 +50,6 @@ import org.apache.pdfbox.preflight.graph
import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory.ColorSpaceRestriction;
import org.apache.pdfbox.preflight.graphic.ColorSpaces;
import org.apache.pdfbox.preflight.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.preflight.utils.FilterHelper;
import org.apache.pdfbox.preflight.utils.RenderingIntents;
import org.apache.pdfbox.contentstream.operator.DrawObject;
@@ -107,13 +105,11 @@ public abstract class PreflightStreamEng
}
protected PreflightContext context = null;
- protected COSDocument cosDocument = null;
protected PDPage processedPage = null;
public PreflightStreamEngine(PreflightContext context, PDPage page)
{
this.context = context;
- this.cosDocument = context.getDocument().getDocument();
this.processedPage = page;
// Graphics operators
@@ -273,9 +269,8 @@ public abstract class PreflightStreamEng
/*
* Search a Filter declaration in the InlinedImage dictionary. The LZWDecode Filter is forbidden.
*/
- COSBase filter = dict.getDictionaryObject(COSName.F, COSName.FILTER);
- FilterHelper
- .isAuthorizedFilter(context, COSUtils.getAsString(filter, this.context.getDocument().getDocument()));
+ COSName filter = dict.getCOSName(COSName.F, COSName.FILTER);
+ FilterHelper.isAuthorizedFilter(context, filter != null ? filter.getName() : null);
}
/**
@@ -293,11 +288,11 @@ public abstract class PreflightStreamEng
ColorSpaceHelper csHelper = null;
if (csInlinedBase != null)
{
- if (COSUtils.isString(csInlinedBase, cosDocument))
+ if (csInlinedBase instanceof COSName)
{
// In InlinedImage only DeviceGray/RGB/CMYK and restricted Indexed
// color spaces are allowed.
- String colorSpace = COSUtils.getAsString(csInlinedBase, cosDocument);
+ String colorSpace = ((COSName) csInlinedBase).getName();
ColorSpaces cs = null;
try
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java Mon Jun 10 17:00:11 2019
@@ -24,29 +24,25 @@ package org.apache.pdfbox.preflight.font
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_CIDTOGID;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_SYSINFO;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY;
import java.io.IOException;
import java.io.InputStream;
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.COSStream;
import org.apache.pdfbox.pdmodel.font.PDCIDFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.FontContainer;
-import org.apache.pdfbox.preflight.utils.COSUtils;
public abstract class DescendantFontValidator<T extends FontContainer> extends SimpleFontValidator<T>
{
- protected COSDocument cosDocument = null;
public DescendantFontValidator(PreflightContext context, PDCIDFont font, T fContainer)
{
super(context, font, font.getCOSObject(), fContainer);
- cosDocument = context.getDocument().getDocument();
}
@Override
@@ -64,8 +60,8 @@ public abstract class DescendantFontVali
font.getName() + ": Required keys are missing"));
}
- checkCIDSystemInfo(fontDictionary.getItem(COSName.CIDSYSTEMINFO));
- checkCIDToGIDMap(fontDictionary.getItem(COSName.CID_TO_GID_MAP));
+ checkCIDSystemInfo(fontDictionary.getCOSDictionary(COSName.CIDSYSTEMINFO));
+ checkCIDToGIDMap(fontDictionary.getDictionaryObject(COSName.CID_TO_GID_MAP));
}
/**
@@ -78,17 +74,15 @@ public abstract class DescendantFontVali
*
* @param sysinfo
*/
- protected void checkCIDSystemInfo(COSBase sysinfo)
+ protected void checkCIDSystemInfo(COSDictionary sysinfo)
{
- COSDictionary cidSysInfo = COSUtils.getAsDictionary(sysinfo, cosDocument);
- if (cidSysInfo != null)
+ if (sysinfo != null)
{
- COSBase reg = cidSysInfo.getItem(COSName.REGISTRY);
- COSBase ord = cidSysInfo.getItem(COSName.ORDERING);
- COSBase sup = cidSysInfo.getItem(COSName.SUPPLEMENT);
+ String reg = sysinfo.getString(COSName.REGISTRY);
+ String ord = sysinfo.getString(COSName.ORDERING);
+ COSBase sup = sysinfo.getDictionaryObject(COSName.SUPPLEMENT);
- if (!(COSUtils.isString(reg, cosDocument) && COSUtils.isString(ord, cosDocument) && COSUtils.isInteger(sup,
- cosDocument)))
+ if (!(reg != null && ord != null && sup instanceof COSInteger))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_SYSINFO));
}
@@ -124,24 +118,21 @@ public abstract class DescendantFontVali
*/
protected void checkCIDToGIDMap(COSBase ctog, boolean mandatory)
{
- if (COSUtils.isString(ctog, cosDocument))
+ if (ctog instanceof COSName)
{
// ---- valid only if the string is Identity
- String ctogStr = COSUtils.getAsString(ctog, cosDocument);
- if (!FONT_DICTIONARY_VALUE_CMAP_IDENTITY.equals(ctogStr))
+ if (!COSName.IDENTITY.equals(ctog))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CIDTOGID,
font.getName() + ": The CIDToGID entry is invalid"));
}
}
- else if (COSUtils.isStream(ctog, cosDocument))
+ else if (ctog instanceof COSStream)
{
try
{
- COSStream stream = COSUtils.getAsStream(ctog, cosDocument);
-
// todo: check the map's content? (won't pdfbox do this?)
- InputStream is = stream.createInputStream();
+ InputStream is = ((COSStream) ctog).createInputStream();
is.close();
}
catch (IOException e)
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java Mon Jun 10 17:00:11 2019
@@ -28,14 +28,10 @@ import static org.apache.pdfbox.prefligh
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_CMAP_DAMAGED;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_DEFAULT_CMAP_WMODE;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_NAME;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_USECMAP;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CMAP_WMODE;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE0;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE2;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE_CMAP;
import java.io.IOException;
import java.io.InputStream;
@@ -44,9 +40,10 @@ import org.apache.fontbox.cmap.CMapParse
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.COSStream;
+import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.pdmodel.font.PDCIDFont;
import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
@@ -57,17 +54,14 @@ import org.apache.pdfbox.preflight.Valid
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.font.container.FontContainer;
import org.apache.pdfbox.preflight.font.container.Type0Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
public class Type0FontValidator extends FontValidator<Type0Container>
{
protected PDFont font;
- protected COSDocument cosDocument = null;
public Type0FontValidator(PreflightContext context, PDFont font)
{
super(context, font.getCOSObject(), new Type0Container(font));
- cosDocument = this.context.getDocument().getDocument();
this.font = font;
}
@@ -113,7 +107,7 @@ public class Type0FontValidator extends
{
COSDictionary fontDictionary = font.getCOSObject();
// a CIDFont is contained in the DescendantFonts array
- COSArray array = COSUtils.getAsArray(fontDictionary.getItem(COSName.DESCENDANT_FONTS), cosDocument);
+ COSArray array = fontDictionary.getCOSArray(COSName.DESCENDANT_FONTS);
if (array == null || array.size() != 1)
{
/*
@@ -125,7 +119,7 @@ public class Type0FontValidator extends
return;
}
- COSDictionary cidFont = COSUtils.getAsDictionary(array.get(0), cosDocument);
+ COSDictionary cidFont = (COSDictionary) array.getObject(0);
if (cidFont == null)
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_INVALID,
@@ -143,13 +137,13 @@ public class Type0FontValidator extends
protected FontValidator<? extends FontContainer<? extends PDCIDFont>> createDescendantValidator(COSDictionary cidFont)
{
- String subtype = cidFont.getNameAsString(COSName.SUBTYPE);
+ COSName subtype = cidFont.getCOSName(COSName.SUBTYPE);
FontValidator<? extends FontContainer<? extends PDCIDFont>> cidFontValidator = null;
- if (FONT_DICTIONARY_VALUE_TYPE0.equals(subtype))
+ if (COSName.CID_FONT_TYPE0.equals(subtype))
{
cidFontValidator = createCIDType0FontValidator(cidFont);
}
- else if (FONT_DICTIONARY_VALUE_TYPE2.equals(subtype))
+ else if (COSName.CID_FONT_TYPE2.equals(subtype))
{
cidFontValidator = createCIDType2FontValidator(cidFont);
}
@@ -207,31 +201,31 @@ public class Type0FontValidator extends
@Override
protected void checkEncoding()
{
- COSBase encoding = (font.getCOSObject()).getItem(COSName.ENCODING);
+ COSBase encoding = (font.getCOSObject()).getDictionaryObject(COSName.ENCODING);
checkCMapEncoding(encoding);
}
protected void checkCMapEncoding(COSBase encoding)
{
- if (COSUtils.isString(encoding, cosDocument))
+ if (encoding instanceof COSName || encoding instanceof COSString)
{
// if encoding is a string, only 2 values are allowed
- String str = COSUtils.getAsString(encoding, cosDocument);
+ String str = encoding instanceof COSName ? ((COSName) encoding).getName()
+ : ((COSString) encoding).getString();
if (!(FONT_DICTIONARY_VALUE_CMAP_IDENTITY_V.equals(str) || FONT_DICTIONARY_VALUE_CMAP_IDENTITY_H
.equals(str)))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_INVALID,
font.getName() + ": The CMap is a string but it isn't an Identity-H/V"));
- return;
}
}
- else if (COSUtils.isStream(encoding, cosDocument))
+ else if (encoding instanceof COSStream)
{
/*
* If the CMap is a stream, some fields are mandatory and the CIDSytemInfo must be compared with the
* CIDSystemInfo entry of the CIDFont.
*/
- processCMapAsStream(COSUtils.getAsStream(encoding, cosDocument));
+ processCMapAsStream((COSStream) encoding);
}
else
{
@@ -252,8 +246,7 @@ public class Type0FontValidator extends
*/
private void processCMapAsStream(COSStream aCMap)
{
- COSBase sysinfo = aCMap.getItem(COSName.CIDSYSTEMINFO);
- checkCIDSystemInfo(sysinfo);
+ checkCIDSystemInfo(aCMap.getCOSDictionary(COSName.CIDSYSTEMINFO));
try (InputStream cmapStream = aCMap.createInputStream())
{
@@ -268,8 +261,8 @@ public class Type0FontValidator extends
*/
int wmode = aCMap.getInt(COSName.getPDFName(FONT_DICTIONARY_KEY_CMAP_WMODE),
FONT_DICTIONARY_DEFAULT_CMAP_WMODE);
- String type = aCMap.getNameAsString(COSName.TYPE);
- String cmapName = aCMap.getNameAsString(COSName.getPDFName(FONT_DICTIONARY_KEY_CMAP_NAME));
+ COSName type = aCMap.getCOSName(COSName.TYPE);
+ String cmapName = aCMap.getNameAsString(COSName.CMAPNAME);
if (cmapName == null || "".equals(cmapName) || wmode > 1)
{
@@ -281,7 +274,7 @@ public class Type0FontValidator extends
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING,
font.getName() + ": CMapName or WMode is inconsistent"));
}
- else if (!FONT_DICTIONARY_VALUE_TYPE_CMAP.equals(type))
+ else if (!COSName.CMAP.equals(type))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING,
font.getName() + ": The CMap type is invalid"));
@@ -309,22 +302,19 @@ public class Type0FontValidator extends
* <li>a Integer - Supplement
* </UL>
*
- * @param sysinfo
+ * @param cidSysInfo
* @return the validation result.
*/
- protected boolean checkCIDSystemInfo(COSBase sysinfo)
+ protected boolean checkCIDSystemInfo(COSDictionary cidSysInfo)
{
boolean result = true;
- COSDictionary cidSysInfo = COSUtils.getAsDictionary(sysinfo, cosDocument);
-
if (cidSysInfo != null)
{
- COSBase reg = cidSysInfo.getItem(COSName.REGISTRY);
- COSBase ord = cidSysInfo.getItem(COSName.ORDERING);
- COSBase sup = cidSysInfo.getItem(COSName.SUPPLEMENT);
+ String reg = cidSysInfo.getString(COSName.REGISTRY);
+ String ord = cidSysInfo.getString(COSName.ORDERING);
+ COSBase sup = cidSysInfo.getDictionaryObject(COSName.SUPPLEMENT);
- if (!(COSUtils.isString(reg, cosDocument) && COSUtils.isString(ord, cosDocument) && COSUtils.isInteger(sup,
- cosDocument)))
+ if (!(reg != null && ord != null && sup instanceof COSInteger))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_CIDKEYED_SYSINFO));
result = false;
@@ -348,18 +338,18 @@ public class Type0FontValidator extends
private void compareCIDSystemInfo(COSDictionary cmap)
{
COSDictionary fontDictionary = font.getCOSObject();
- COSArray array = COSUtils.getAsArray(fontDictionary.getItem(COSName.DESCENDANT_FONTS), cosDocument);
+ COSArray array = fontDictionary.getCOSArray(COSName.DESCENDANT_FONTS);
if (array != null && array.size() > 0)
{
- COSDictionary cidFont = COSUtils.getAsDictionary(array.get(0), cosDocument);
- COSDictionary cmsi = COSUtils.getAsDictionary(cmap.getItem(COSName.CIDSYSTEMINFO), cosDocument);
- COSDictionary cfsi = COSUtils.getAsDictionary(cidFont.getItem(COSName.CIDSYSTEMINFO), cosDocument);
-
- String regCM = COSUtils.getAsString(cmsi.getItem(COSName.REGISTRY), cosDocument);
- String ordCM = COSUtils.getAsString(cmsi.getItem(COSName.ORDERING), cosDocument);
- String regCF = COSUtils.getAsString(cfsi.getItem(COSName.REGISTRY), cosDocument);
- String ordCF = COSUtils.getAsString(cfsi.getItem(COSName.ORDERING), cosDocument);
+ COSDictionary cidFont = (COSDictionary) array.getObject(0);
+ COSDictionary cmsi = cmap.getCOSDictionary(COSName.CIDSYSTEMINFO);
+ COSDictionary cfsi = cidFont.getCOSDictionary(COSName.CIDSYSTEMINFO);
+
+ String regCM = cmsi.getString(COSName.REGISTRY);
+ String ordCM = cmsi.getString(COSName.ORDERING);
+ String regCF = cfsi.getString(COSName.REGISTRY);
+ String ordCF = cfsi.getString(COSName.ORDERING);
if (!regCF.equals(regCM) || !ordCF.equals(ordCM))
{
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java Mon Jun 10 17:00:11 2019
@@ -22,14 +22,13 @@
package org.apache.pdfbox.preflight.font;
import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDocument;
+import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.Type1Container;
import org.apache.pdfbox.preflight.font.descriptor.Type1DescriptorHelper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_ENCODING;
@@ -55,13 +54,12 @@ public class Type1FontValidator extends
@Override
protected void checkEncoding()
{
- COSBase encoding = fontDictionary.getItem(COSName.ENCODING);
+ COSBase encoding = fontDictionary.getDictionaryObject(COSName.ENCODING);
if (encoding != null)
{
- COSDocument cosDocument = context.getDocument().getDocument();
- if (COSUtils.isString(encoding, cosDocument))
+ if (encoding instanceof COSName)
{
- String encodingName = COSUtils.getAsString(encoding, cosDocument);
+ String encodingName = ((COSName) encoding).getName();
if (!(encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_MAC)
|| encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_MAC_EXP)
|| encodingName.equals(FONT_DICTIONARY_VALUE_ENCODING_WIN)
@@ -71,7 +69,7 @@ public class Type1FontValidator extends
this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
}
}
- else if (!COSUtils.isDictionary(encoding, cosDocument))
+ else if (!(encoding instanceof COSDictionary))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java Mon Jun 10 17:00:11 2019
@@ -34,7 +34,7 @@ import java.util.Set;
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.pdmodel.font.PDType3CharProc;
@@ -55,19 +55,16 @@ import org.apache.pdfbox.preflight.font.
import org.apache.pdfbox.preflight.font.container.Type3Container;
import org.apache.pdfbox.preflight.font.util.GlyphException;
import org.apache.pdfbox.preflight.font.util.PreflightType3Stream;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.preflight.utils.ContextHelper;
public class Type3FontValidator extends FontValidator<Type3Container>
{
protected PDType3Font font;
protected COSDictionary fontDictionary;
- protected COSDocument cosDocument;
public Type3FontValidator(PreflightContext context, PDType3Font font)
{
super(context, font.getCOSObject(), new Type3Container(font));
- this.cosDocument = context.getDocument().getDocument();
this.fontDictionary = font.getCOSObject();
this.font = font;
}
@@ -107,9 +104,9 @@ public class Type3FontValidator extends
*/
private void checkFontBBox()
{
- COSBase fontBBox = fontDictionary.getItem(COSName.FONT_BBOX);
+ COSBase fontBBox = fontDictionary.getDictionaryObject(COSName.FONT_BBOX);
- if (!COSUtils.isArray(fontBBox, cosDocument))
+ if (!(fontBBox instanceof COSArray))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
font.getName() + ": The FontBBox element isn't an array"));
@@ -119,7 +116,7 @@ public class Type3FontValidator extends
/*
* check the content of the FontBBox. Should be an array with 4 numbers
*/
- COSArray bbox = COSUtils.getAsArray(fontBBox, cosDocument);
+ COSArray bbox = (COSArray) fontBBox;
if (bbox.size() != 4)
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -130,7 +127,7 @@ public class Type3FontValidator extends
for (int i = 0; i < 4; i++)
{
COSBase elt = bbox.get(i);
- if (!(COSUtils.isFloat(elt, cosDocument) || COSUtils.isInteger(elt, cosDocument)))
+ if (!(elt instanceof COSFloat || elt instanceof COSInteger))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
font.getName() + ": An element of FontBBox isn't a number"));
@@ -144,9 +141,9 @@ public class Type3FontValidator extends
*/
private void checkFontMatrix()
{
- COSBase fontMatrix = fontDictionary.getItem(COSName.FONT_MATRIX);
+ COSBase fontMatrix = fontDictionary.getDictionaryObject(COSName.FONT_MATRIX);
- if (!COSUtils.isArray(fontMatrix, cosDocument))
+ if (!(fontMatrix instanceof COSArray))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
font.getName() + ": The FontMatrix element isn't an array"));
@@ -156,7 +153,7 @@ public class Type3FontValidator extends
/*
* Check the content of the FontMatrix. Should be an array with 6 numbers
*/
- COSArray matrix = COSUtils.getAsArray(fontMatrix, cosDocument);
+ COSArray matrix = (COSArray) fontMatrix;
if (matrix.size() != 6)
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -167,7 +164,7 @@ public class Type3FontValidator extends
for (int i = 0; i < 6; i++)
{
COSBase elt = matrix.get(i);
- if (!(COSUtils.isFloat(elt, cosDocument) || COSUtils.isInteger(elt, cosDocument)))
+ if (!(elt instanceof COSFloat || elt instanceof COSInteger))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
font.getName() + ": An element of FontMatrix isn't a number"));
@@ -195,16 +192,14 @@ public class Type3FontValidator extends
@Override
protected void checkEncoding()
{
- COSBase fontEncoding = fontDictionary.getItem(COSName.ENCODING);
- if (COSUtils.isString(fontEncoding, cosDocument))
+ COSBase fontEncoding = fontDictionary.getDictionaryObject(COSName.ENCODING);
+ if (fontEncoding instanceof COSName)
{
- String enc = COSUtils.getAsString(fontEncoding, cosDocument);
- checkEncodingAsString(enc);
+ checkEncodingAsString(((COSName) fontEncoding).getName());
}
- else if (COSUtils.isDictionary(fontEncoding, cosDocument))
+ else if (fontEncoding instanceof COSDictionary)
{
- COSDictionary encodingDictionary = COSUtils.getAsDictionary(fontEncoding, cosDocument);
- checkEncodingAsDictionary(encodingDictionary);
+ checkEncodingAsDictionary((COSDictionary) fontDictionary);
}
else
{
@@ -246,10 +241,10 @@ public class Type3FontValidator extends
checkEncodingAsString(encodingDictionary.getString(COSName.BASE_ENCODING));
}
- COSBase diff = encodingDictionary.getItem(COSName.DIFFERENCES);
+ COSBase diff = encodingDictionary.getDictionaryObject(COSName.DIFFERENCES);
if (diff != null)
{
- if (!COSUtils.isArray(diff, cosDocument))
+ if (!(diff instanceof COSArray))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_TYPE3_DAMAGED,
"The differences element of the encoding dictionary isn't an array"));
@@ -259,7 +254,7 @@ public class Type3FontValidator extends
// ---- The DictionaryEncoding object doesn't throw exception if the
// Differences isn't well formed.
// So check if the array has the right format.
- COSArray diffArray = COSUtils.getAsArray(diff, cosDocument);
+ COSArray diffArray = (COSArray) diff;
for (int i = 0; i < diffArray.size(); ++i)
{
COSBase item = diffArray.get(i);
@@ -293,7 +288,7 @@ public class Type3FontValidator extends
return;
}
- COSDictionary charProcs = COSUtils.getAsDictionary(fontDictionary.getItem(COSName.CHAR_PROCS), cosDocument);
+ COSDictionary charProcs = fontDictionary.getCOSDictionary(COSName.CHAR_PROCS);
if (charProcs == null)
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -413,34 +408,31 @@ public class Type3FontValidator extends
*/
private void checkResources() throws ValidationException
{
- COSBase resources = this.fontDictionary.getItem(COSName.RESOURCES);
+ COSBase resources = this.fontDictionary.getDictionaryObject(COSName.RESOURCES);
if (resources != null)
{
- COSDictionary dictionary = COSUtils.getAsDictionary(resources, cosDocument);
- if (dictionary == null)
+ if (!(resources instanceof COSDictionary))
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
font.getName() + ": The Resources element isn't a dictionary"));
return;
}
-
+ COSDictionary dictionary = (COSDictionary) resources;
// process Fonts and XObjects
- ContextHelper.validateElement(context, new PDResources(dictionary), RESOURCES_PROCESS);
- COSBase cbFont = dictionary.getItem(COSName.FONT);
+ ContextHelper.validateElement(context, new PDResources(dictionary),
+ RESOURCES_PROCESS);
+ COSDictionary dicFonts = dictionary.getCOSDictionary(COSName.FONT);
- if (cbFont != null)
+ if (dicFonts != null)
{
/*
* Check that all referenced object are present in the PDF file
*/
- COSDictionary dicFonts = COSUtils.getAsDictionary(cbFont, cosDocument);
Set<COSName> keyList = dicFonts.keySet();
- for (Object key : keyList)
+ for (COSName key : keyList)
{
- COSBase item = dicFonts.getItem((COSName) key);
- COSDictionary xObjFont = COSUtils.getAsDictionary(item, cosDocument);
-
+ COSDictionary xObjFont = dicFonts.getCOSDictionary(key);
try
{
PDFont aFont = PDFontFactory.createFont(xObjFont);
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java Mon Jun 10 17:00:11 2019
@@ -24,12 +24,10 @@ package org.apache.pdfbox.preflight.font
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CIDSET;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE0C;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE1C;
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.pdmodel.common.PDStream;
@@ -39,7 +37,6 @@ import org.apache.pdfbox.preflight.Prefl
import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.CIDType0Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
public class CIDType0DescriptorHelper extends FontDescriptorHelper<CIDType0Container>
{
@@ -90,9 +87,8 @@ public class CIDType0DescriptorHelper ex
{
if (isSubSet(pfDescriptor.getFontName()))
{
- COSDocument cosDocument = context.getDocument().getDocument();
- COSBase cidset = pfDescriptor.getCOSObject().getItem(COSName.getPDFName(FONT_DICTIONARY_KEY_CIDSET));
- if (cidset == null || !COSUtils.isStream(cidset, cosDocument))
+ COSBase cidset = pfDescriptor.getCOSObject().getDictionaryObject(COSName.CID_SET);
+ if (!(cidset instanceof COSStream))
{
this.fContainer.push(new ValidationResult.ValidationError(ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET,
pfDescriptor.getFontName() + ": The CIDSet entry is missing for the Composite Subset"));
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java Mon Jun 10 17:00:11 2019
@@ -24,10 +24,8 @@ package org.apache.pdfbox.preflight.font
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_CIDSET;
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.pdmodel.common.PDStream;
@@ -37,7 +35,6 @@ import org.apache.pdfbox.preflight.Prefl
import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.CIDType2Container;
-import org.apache.pdfbox.preflight.utils.COSUtils;
public class CIDType2DescriptorHelper extends FontDescriptorHelper<CIDType2Container>
{
@@ -57,9 +54,8 @@ public class CIDType2DescriptorHelper ex
{
if (isSubSet(pfDescriptor.getFontName()))
{
- COSDocument cosDocument = context.getDocument().getDocument();
- COSBase cidset = pfDescriptor.getCOSObject().getItem(COSName.getPDFName(FONT_DICTIONARY_KEY_CIDSET));
- if (cidset == null || !COSUtils.isStream(cidset, cosDocument))
+ COSBase cidset = pfDescriptor.getCOSObject().getDictionaryObject(COSName.CID_SET);
+ if (!(cidset instanceof COSStream))
{
this.fContainer.push(new ValidationResult.ValidationError(ERROR_FONTS_CIDSET_MISSING_FOR_SUBSET,
pfDescriptor.getFontName() + ": The CIDSet entry is missing for the Composite Subset"));
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/graphic/ICCProfileWrapper.java Mon Jun 10 17:00:11 2019
@@ -35,12 +35,9 @@ import org.apache.pdfbox.preflight.Prefl
import org.apache.pdfbox.preflight.PreflightDocument;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
-import static org.apache.pdfbox.preflight.PreflightConstants.DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_GRAPHIC_OUTPUT_INTENT_ICC_PROFILE_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE;
/**
* This class embeds an instance of java.awt.color.ICC_Profile which represent the ICCProfile defined by the
@@ -125,29 +122,25 @@ public class ICCProfileWrapper
{
PreflightDocument document = context.getDocument();
PDDocumentCatalog catalog = document.getDocumentCatalog();
- COSBase cBase = catalog.getCOSObject().getItem(COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
- COSArray outputIntents = COSUtils.getAsArray(cBase, document.getDocument());
+ COSArray outputIntents = catalog.getCOSObject().getCOSArray(COSName.OUTPUT_INTENTS);
for (int i = 0; outputIntents != null && i < outputIntents.size(); ++i)
{
- COSDictionary outputIntentDict = COSUtils.getAsDictionary(outputIntents.get(i), document.getDocument());
- COSBase destOutputProfile = outputIntentDict.getItem(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE);
- if (destOutputProfile != null)
+ COSDictionary outputIntentDict = (COSDictionary) outputIntents.getObject(i);
+ COSBase destOutputProfile = outputIntentDict
+ .getDictionaryObject(COSName.DEST_OUTPUT_PROFILE);
+ if (destOutputProfile instanceof COSStream)
{
try
{
- COSStream stream = COSUtils.getAsStream(destOutputProfile, document.getDocument());
- if (stream != null)
+ InputStream is = ((COSStream) destOutputProfile).createInputStream();
+ try
{
- InputStream is = stream.createInputStream();
- try
- {
- return new ICCProfileWrapper(ICC_Profile.getInstance(is));
- }
- finally
- {
- is.close();
- }
+ return new ICCProfileWrapper(ICC_Profile.getInstance(is));
+ }
+ finally
+ {
+ is.close();
}
}
catch (IllegalArgumentException e)
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/BookmarkValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -25,23 +25,22 @@ import java.util.HashSet;
import java.util.Set;
import static org.apache.pdfbox.preflight.PreflightConfiguration.ACTIONS_PROCESS;
+import static org.apache.pdfbox.preflight.PreflightConfiguration.DESTINATION_PROCESS;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NOCATALOG;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TRAILER_OUTLINES_INVALID;
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.COSNull;
import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
-import static org.apache.pdfbox.preflight.PreflightConfiguration.DESTINATION_PROCESS;
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;
import org.apache.pdfbox.preflight.utils.ContextHelper;
public class BookmarkValidationProcess extends AbstractProcess
@@ -109,9 +108,8 @@ public class BookmarkValidationProcess e
*/
private boolean isCountEntryPositive(PreflightContext ctx, COSDictionary outline)
{
- COSBase countBase = outline.getItem(COSName.COUNT);
- COSDocument cosDocument = ctx.getDocument().getDocument();
- return COSUtils.isInteger(countBase, cosDocument) && (COSUtils.getAsInteger(countBase, cosDocument) > 0);
+ COSBase countBase = outline.getDictionaryObject(COSName.COUNT);
+ return countBase instanceof COSInteger && ((COSInteger) countBase).intValue() > 0;
}
/**
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/CatalogValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -31,7 +31,6 @@ import java.util.Map;
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.COSName;
import org.apache.pdfbox.cos.COSNumber;
import org.apache.pdfbox.cos.COSObject;
@@ -48,7 +47,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.graphic.ICCProfileWrapper;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.preflight.utils.ContextHelper;
@@ -164,7 +162,7 @@ public class CatalogValidationProcess ex
{
ContextHelper.validateElement(ctx, catalog.getCOSObject(), ACTIONS_PROCESS);
// AA entry if forbidden in PDF/A-1
- COSBase aa = catalog.getCOSObject().getItem(DICTIONARY_KEY_ADDITIONAL_ACTION);
+ COSBase aa = catalog.getCOSObject().getItem(COSName.AA);
if (aa != null)
{
addValidationError(ctx, new ValidationError(ERROR_ACTION_FORBIDDEN_ADDITIONAL_ACTION,
@@ -241,14 +239,11 @@ public class CatalogValidationProcess ex
*/
public void validateOutputIntent(PreflightContext ctx) throws ValidationException
{
- COSDocument cosDocument = ctx.getDocument().getDocument();
- COSBase cBase = catalog.getCOSObject().getItem(COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
- COSArray outputIntents = COSUtils.getAsArray(cBase, cosDocument);
-
+ COSArray outputIntents = catalog.getCOSObject().getCOSArray(COSName.OUTPUT_INTENTS);
Map<COSObjectKey, Boolean> tmpDestOutputProfile = new HashMap<>();
for (int i = 0; outputIntents != null && i < outputIntents.size(); ++i)
{
- COSDictionary outputIntentDict = COSUtils.getAsDictionary(outputIntents.get(i), cosDocument);
+ COSDictionary outputIntentDict = (COSDictionary) outputIntents.getObject(i);
if (outputIntentDict == null)
{
@@ -284,7 +279,7 @@ public class CatalogValidationProcess ex
* Because of PDF/A conforming file needs to specify the color characteristics, the DestOutputProfile is
* checked even if the OutputConditionIdentifier isn't "Custom"
*/
- COSBase destOutputProfile = outputIntentDict.getItem(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE);
+ COSBase destOutputProfile = outputIntentDict.getItem(COSName.DEST_OUTPUT_PROFILE);
validateICCProfile(destOutputProfile, tmpDestOutputProfile, ctx);
PreflightConfiguration config = ctx.getConfig();
@@ -297,7 +292,6 @@ public class CatalogValidationProcess ex
"The Info entry of a OutputIntent dictionary is missing");
error.setWarning(true);
addValidationError(ctx, error);
- continue;
}
}
}
@@ -351,8 +345,12 @@ public class CatalogValidationProcess ex
// keep reference to avoid multiple profile definition
mapDestOutputProfile.put(new COSObjectKey((COSObject) destOutputProfile), true);
- COSDocument cosDocument = ctx.getDocument().getDocument();
- COSStream stream = COSUtils.getAsStream(destOutputProfile, cosDocument);
+ if (destOutputProfile instanceof COSObject)
+ {
+ destOutputProfile = ((COSObject)destOutputProfile).getObject();
+ }
+ COSStream stream = destOutputProfile instanceof COSStream
+ ? (COSStream) destOutputProfile : null;
if (stream == null)
{
addValidationError(ctx, new ValidationError(ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -29,10 +29,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
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.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
@@ -46,7 +43,6 @@ import org.apache.pdfbox.preflight.metad
import org.apache.pdfbox.preflight.metadata.RDFAboutAttributeConcordanceValidation.DifferentRDFAboutException;
import org.apache.pdfbox.preflight.metadata.SynchronizedMetaDataValidation;
import org.apache.pdfbox.preflight.metadata.XpacketParsingException;
-import org.apache.pdfbox.preflight.utils.COSUtils;
import org.apache.pdfbox.util.Hex;
import org.apache.xmpbox.XMPMetadata;
import org.apache.xmpbox.schema.XMPBasicSchema;
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java?rev=1860965&r1=1860964&r2=1860965&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/StreamValidationProcess.java Mon Jun 10 17:00:11 2019
@@ -33,7 +33,6 @@ import java.util.List;
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.COSStream;
@@ -43,7 +42,6 @@ import org.apache.pdfbox.cos.COSObjectKe
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;
import org.apache.pdfbox.preflight.utils.FilterHelper;
import org.apache.pdfbox.util.Charsets;
@@ -54,13 +52,10 @@ public class StreamValidationProcess ext
public void validate(PreflightContext ctx) throws ValidationException
{
PDDocument pdfDoc = ctx.getDocument();
- COSDocument cDoc = pdfDoc.getDocument();
- List<?> lCOSObj = cDoc.getObjects();
- for (Object o : lCOSObj)
+ List<COSObject> lCOSObj = pdfDoc.getDocument().getObjects();
+ for (COSObject cObj : lCOSObj)
{
- COSObject cObj = (COSObject) o;
-
// If this object represents a Stream, the Dictionary must contain the Length key
COSBase cBase = cObj.getObject();
if (cBase instanceof COSStream)
@@ -96,8 +91,7 @@ public class StreamValidationProcess ext
COSBase bFilter = stream.getDictionaryObject(COSName.FILTER);
if (bFilter != null)
{
- COSDocument cosDocument = context.getDocument().getDocument();
- if (COSUtils.isArray(bFilter, cosDocument))
+ if (bFilter instanceof COSArray)
{
COSArray afName = (COSArray) bFilter;
for (int i = 0; i < afName.size(); ++i)