Author: leleueri
Date: Sun Jun 23 08:28:55 2013
New Revision: 1495799
URL: http://svn.apache.org/r1495799
Log:
[PDFBOX-1631 & PDFBOX-1632] avoid ValidationException as much as possible and
replace these exceptions by adding a ValidationError into the PreflightContext
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightConstants.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/action/ActionManagerFactory.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/AcroFormValidationProcess.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/PageTreeValidationProcess.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/reflect/ActionsValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/AnnotationValidationProcess.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/FontValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/GraphicObjectPageValidationProcess.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/ShaddingPatternValidationProcess.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/process/reflect/TilingPatternValidationProcess.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/ContextHelper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/xobject/XObjFormValidator.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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -414,6 +414,10 @@ public interface PreflightConstants
* The stream uses a filter which isn't defined in the PDF Reference
document.
*/
String ERROR_SYNTAX_STREAM_UNDEFINED_FILTER = "1.2.12";
+ /**
+ * The stream can't be processed
+ */
+ String ERROR_SYNTAX_STREAM_DAMAGED = "1.2.13";
String ERROR_SYNTAX_NOCATALOG = "1.2.13";
/**
@@ -473,6 +477,7 @@ public interface PreflightConstants
* Main error code for graphical problems
*/
String ERROR_GRAPHIC_MAIN = "2";
+
String ERROR_GRAPHIC_INVALID = "2.1";
/**
* BBox Entry of a Form XObject is missing or isn't an Array
@@ -504,6 +509,10 @@ public interface PreflightConstants
String ERROR_GRAPHIC_TOO_MANY_GRAPHIC_STATES = "2.1.8";
+ String ERROR_GRAPHIC_MISSING_OBJECT = "2.1.9";
+
+ String ERROR_GRAPHIC_XOBJECT_INVALID_TYPE = "2.1.10";
+
/**
* Main error code for graphical transparency problems
*/
@@ -573,6 +582,10 @@ public interface PreflightConstants
* ICC Based color space used in the PDF file is invalid
*/
String ERROR_GRAPHIC_INVALID_COLOR_SPACE_ICCBASED = "2.4.11";
+ /**
+ * Validation asked on a missing ColorSpace
+ */
+ String ERROR_GRAPHIC_MISSING_COLOR_SPACE_ICCBASED = "2.4.12";
// -----------------------------------------------------------
// ---- FONT ERRORS 3.x...
// -----------------------------------------------------------
@@ -637,6 +650,10 @@ public interface PreflightConstants
*/
String ERROR_FONTS_ENCODING_IO = "3.1.13";
/**
+ * The font type is unknown
+ */
+ String ERROR_FONTS_UNKNOWN_FONT_TYPE = "3.1.14";
+ /**
* The embedded font is damaged
*/
String ERROR_FONTS_DAMAGED = "3.2";
@@ -711,7 +728,10 @@ public interface PreflightConstants
* The AP dictionary of the annotation contains forbidden/invalid entries
(only the N entry is authorized)
*/
String ERROR_ANNOT_MISSING_AP_N_CONTENT = "5.1.2";
-
+ /**
+ * An annotation validation is required but there are no element to
validate
+ */
+ String ERROR_ANNOT_MISSING_ANNOTATION_DICTIONARY = "5.1.3";
/**
* Common forbidden field error in annotation dictionary
*/
@@ -783,6 +803,10 @@ public interface PreflightConstants
*/
String ERROR_ACTION_HIDE_H_INVALID = "6.1.4";
/**
+ * An action validation is required but there are no element to validate
+ */
+ String ERROR_ACTION_MISSING_ACTION_DICTIONARY = "6.1.5";
+ /**
* Common forbidden action error
*/
String ERROR_ACTION_FORBIDDEN_ACTIONS = "6.2";
@@ -914,5 +938,14 @@ public interface PreflightConstants
* a category has an invalid value in one property description (must be
internal or external)
*/
String ERROR_METADATA_CATEGORY_PROPERTY_INVALID = "7.5.1";
-
+
+ /**
+ * Error about PDF processing : that is not necessary a specific PDF/A
validation error
+ * but a PDF specification requirement that isn't respected.
+ */
+ String ERROR_PDF_PROCESSING = "8";
+ /**
+ * A Mandatory element is missing
+ */
+ String ERROR_PDF_PROCESSING_MISSING = "8.1";
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java
Sun Jun 23 08:28:55 2013
@@ -165,7 +165,7 @@ public class PreflightDocument extends P
Collection<String> processes = config.getProcessNames();
for (String name : processes)
{
- ContextHelper.validateElement(context, name);
+ ContextHelper.validateElement(context, name);
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -40,7 +40,7 @@ import static org.apache.pdfbox.prefligh
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;
-
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -53,6 +53,7 @@ import org.apache.pdfbox.cos.COSDocument
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.persistence.util.COSObjectKey;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.utils.COSUtils;
@@ -176,7 +177,7 @@ public class ActionManagerFactory
}
else
{
- throw new ValidationException("Action entry isn't an instance of
COSDictionary");
+ ctx.addValidationError(new
ValidationError(PreflightConstants.ERROR_ACTION_INVALID_TYPE, "Action entry
isn't an instance of COSDictionary"));
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
Sun Jun 23 08:28:55 2013
@@ -43,6 +43,7 @@ import org.apache.pdfbox.pdmodel.font.PD
import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm;
import org.apache.pdfbox.pdmodel.text.PDTextState;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -460,7 +460,7 @@ public class Type3FontValidator extends
}
catch (IOException e)
{
- throw new ValidationException("Unable to valid the
Type3 : " + e.getMessage());
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_FONTS_DAMAGED, "Unable to valid the
Type3 : " + e.getMessage()));
}
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/AcroFormValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/AcroFormValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/AcroFormValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/AcroFormValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -26,6 +26,7 @@ import static org.apache.pdfbox.prefligh
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_FORBIDDEN_ADDITIONAL_ACTIONS_FIELD;
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_ACTION_FORBIDDEN_WIDGET_ACTION_FIELD;
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_DICT_INVALID;
+import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NOCATALOG;
import java.io.IOException;
import java.util.List;
@@ -37,6 +38,7 @@ import org.apache.pdfbox.pdmodel.interac
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -66,7 +68,7 @@ public class AcroFormValidationProcess e
}
else
{
- throw new ValidationException("There are no Catalog entry in the
Document.");
+ ctx.addValidationError(new ValidationError(ERROR_SYNTAX_NOCATALOG,
"There are no Catalog entry in the Document."));
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -22,6 +22,7 @@
package org.apache.pdfbox.preflight.process;
import static
org.apache.pdfbox.preflight.PreflightConfiguration.ACTIONS_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;
@@ -31,6 +32,7 @@ import org.apache.pdfbox.cos.COSName;
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 org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -69,7 +71,7 @@ public class BookmarkValidationProcess e
}
else
{
- throw new ValidationException("There are no Catalog entry in the
Document.");
+ ctx.addValidationError(new ValidationError(ERROR_SYNTAX_NOCATALOG,
"There are no Catalog entry in the Document."));
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -202,15 +202,16 @@ public class CatalogValidationProcess ex
if (this.catalog == null)
{
- new ValidationError(ERROR_SYNTAX_NOCATALOG, "There are no Catalog
entry in the Document.");
- throw new ValidationException("There are no Catalog entry in the
Document.");
+ ctx.addValidationError(new ValidationError(ERROR_SYNTAX_NOCATALOG,
"There are no Catalog entry in the Document."));
+ }
+ else
+ {
+ validateActions(ctx);
+ validateLang(ctx);
+ validateNames(ctx);
+ validateOCProperties(ctx);
+ validateOutputIntent(ctx);
}
-
- validateActions(ctx);
- validateLang(ctx);
- validateNames(ctx);
- validateOCProperties(ctx);
- validateOutputIntent(ctx);
}
/**
@@ -379,7 +380,7 @@ public class CatalogValidationProcess ex
*/
protected void validateICCProfile(COSBase destOutputProfile,
Map<COSObjectKey, Boolean> mapDestOutputProfile,
PreflightContext ctx) throws ValidationException
- {
+ {
try
{
if (destOutputProfile == null)
@@ -461,5 +462,5 @@ public class CatalogValidationProcess ex
{
throw new ValidationException("Unable to parse the ICC Profile",
e);
}
- }
+ }
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/PageTreeValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -22,12 +22,14 @@
package org.apache.pdfbox.preflight.process;
import static org.apache.pdfbox.preflight.PreflightConfiguration.PAGE_PROCESS;
+import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NOCATALOG;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
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.ContextHelper;
@@ -47,7 +49,7 @@ public class PageTreeValidationProcess e
}
else
{
- throw new ValidationException("There are no Catalog entry in the
Document.");
+ context.addValidationError(new
ValidationError(ERROR_SYNTAX_NOCATALOG, "There are no Catalog entry in the
Document."));
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -21,6 +21,7 @@
package org.apache.pdfbox.preflight.process;
+import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_DAMAGED;
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_FX_KEYS;
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_INVALID_FILTER;
import static
org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_LENGTH_INVALID;
@@ -226,7 +227,9 @@ public class StreamValidationProcess ext
long curSkip = ra.skip(offset - skipped);
if (curSkip < 0)
{
- throw new ValidationException("Unable to skip bytes in
the PDFFile to check stream length");
+ org.apache.pdfbox.io.IOUtils.closeQuietly(ra);
+ addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_DAMAGED, "Unable to skip bytes in the
PDFFile to check stream length"));
+ return;
}
skipped += curSkip;
}
@@ -261,6 +264,7 @@ public class StreamValidationProcess ext
{
addValidationError(context, new
ValidationError(ERROR_SYNTAX_STREAM_LENGTH_INVALID,
"Stream length is invalide"));
+ org.apache.pdfbox.io.IOUtils.closeQuietly(ra);
return;
}
else
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ActionsValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ActionsValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ActionsValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ActionsValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -26,12 +26,14 @@ import java.util.List;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.preflight.PreflightConfiguration;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.action.AbstractActionManager;
import org.apache.pdfbox.preflight.action.ActionManagerFactory;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.process.AbstractProcess;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
public class ActionsValidationProcess extends AbstractProcess
{
@@ -39,21 +41,26 @@ public class ActionsValidationProcess ex
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() || !vPath.isExpectedType(COSDictionary.class))
+ if (vPath.isEmpty()) {
+ return;
+ }
+ else if (!vPath.isExpectedType(COSDictionary.class))
{
- throw new ValidationException("Action validation process needs at
least one COSDictionary object");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_ACTION_INVALID_TYPE, "Action
validation process needs at least one COSDictionary object"));
}
-
- COSDictionary actionsDict = (COSDictionary) vPath.peek();
- // AA entry is authorized only for Page, in this case A Page is just
before the Action Dictionary in the path
- boolean aaEntryAuth = ((vPath.size() -
vPath.getClosestTypePosition(PDPage.class)) == 2);
-
- PreflightConfiguration config = context.getConfig();
- ActionManagerFactory factory = config.getActionFact();
- List<AbstractActionManager> la = factory.getActionManagers(context,
actionsDict);
- for (AbstractActionManager aMng : la)
+ else
{
- aMng.valid(aaEntryAuth);
+ COSDictionary actionsDict = (COSDictionary) vPath.peek();
+ // AA entry is authorized only for Page, in this case A Page is
just before the Action Dictionary in the path
+ boolean aaEntryAuth = ((vPath.size() -
vPath.getClosestTypePosition(PDPage.class)) == 2);
+
+ PreflightConfiguration config = context.getConfig();
+ ActionManagerFactory factory = config.getActionFact();
+ List<AbstractActionManager> la =
factory.getActionManagers(context, actionsDict);
+ for (AbstractActionManager aMng : la)
+ {
+ aMng.valid(aaEntryAuth);
+ }
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/AnnotationValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/AnnotationValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/AnnotationValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/AnnotationValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -21,8 +21,10 @@
package org.apache.pdfbox.preflight.process.reflect;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.preflight.PreflightConfiguration;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.annotation.AnnotationValidator;
@@ -36,19 +38,24 @@ public class AnnotationValidationProcess
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() || !vPath.isExpectedType(COSDictionary.class))
+ if (vPath.isEmpty()) {
+ return;
+ }
+ else if (!vPath.isExpectedType(COSDictionary.class))
{
- throw new ValidationException("Annotation validation process needs
at least one COSDictionary object");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_ANNOT_INVALID_ELEMENT, "Annotation
validation process needs at least one COSDictionary object"));
}
-
- COSDictionary annotDict = (COSDictionary) vPath.peek();
-
- PreflightConfiguration config = context.getConfig();
- AnnotationValidatorFactory factory = config.getAnnotFact();
- AnnotationValidator annotValidator =
factory.getAnnotationValidator(context, annotDict);
- if (annotValidator != null)
+ else
{
- annotValidator.validate();
+ COSDictionary annotDict = (COSDictionary) vPath.peek();
+
+ PreflightConfiguration config = context.getConfig();
+ AnnotationValidatorFactory factory = config.getAnnotFact();
+ AnnotationValidator annotValidator =
factory.getAnnotationValidator(context, annotDict);
+ if (annotValidator != null)
+ {
+ annotValidator.validate();
+ }
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -41,6 +41,7 @@ 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.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -54,14 +55,19 @@ public class ExtGStateValidationProcess
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() || !vPath.isExpectedType(COSDictionary.class))
+ if (vPath.isEmpty()) {
+ return;
+ }
+ else if (!vPath.isExpectedType(COSDictionary.class))
{
- throw new ValidationException("ExtGState validation required at
least a Resource dictionary");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_XOBJECT_INVALID_TYPE,
"ExtGState validation required at least a Resource dictionary"));
+ }
+ else
+ {
+ COSDictionary extGStatesDict = (COSDictionary) vPath.peek();
+ List<COSDictionary> listOfExtGState =
extractExtGStateDictionaries(context, extGStatesDict);
+ validateTransparencyRules(context, listOfExtGState);
}
-
- COSDictionary extGStatesDict = (COSDictionary) vPath.peek();
- List<COSDictionary> listOfExtGState =
extractExtGStateDictionaries(context, extGStatesDict);
- validateTransparencyRules(context, listOfExtGState);
}
/**
@@ -76,7 +82,7 @@ public class ExtGStateValidationProcess
*/
public List<COSDictionary> extractExtGStateDictionaries(PreflightContext
context, COSDictionary egsEntry)
throws ValidationException
- {
+ {
List<COSDictionary> listOfExtGState = new ArrayList<COSDictionary>(0);
COSDocument cosDocument = context.getDocument().getDocument();
COSDictionary extGStates = COSUtils.getAsDictionary(egsEntry,
cosDocument);
@@ -99,7 +105,7 @@ public class ExtGStateValidationProcess
}
}
return listOfExtGState;
- }
+ }
/**
* Validate all ExtGState dictionaries of this container
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -32,6 +32,7 @@ import static org.apache.pdfbox.prefligh
import static
org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE3;
import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -42,6 +43,8 @@ import org.apache.pdfbox.preflight.font.
import org.apache.pdfbox.preflight.font.Type3FontValidator;
import org.apache.pdfbox.preflight.font.container.FontContainer;
import org.apache.pdfbox.preflight.process.AbstractProcess;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+
public class FontValidationProcess extends AbstractProcess
{
@@ -49,17 +52,22 @@ public class FontValidationProcess exten
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() || !vPath.isExpectedType(PDFont.class))
- {
- throw new ValidationException("Font validation process needs at
least one PDFont object");
+ if (vPath.isEmpty()) {
+ return;
}
-
- PDFont font = (PDFont) vPath.peek();
- FontContainer fontContainer =
context.getFontContainer(font.getCOSObject());
- if (fontContainer == null)
- { // if fontContainer isn't null the font is already checked
- FontValidator<? extends FontContainer> validator =
getFontValidator(context, font);
- validator.validate();
+ else if (!vPath.isExpectedType(PDFont.class))
+ {
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_FONTS_INVALID_DATA, "Font validation
process needs at least one PDFont object"));
+ }
+ else
+ {
+ PDFont font = (PDFont) vPath.peek();
+ FontContainer fontContainer =
context.getFontContainer(font.getCOSObject());
+ if (fontContainer == null)
+ { // if fontContainer isn't null the font is already checked
+ FontValidator<? extends FontContainer> validator =
getFontValidator(context, font);
+ if (validator != null) validator.validate();
+ }
}
}
@@ -70,7 +78,6 @@ public class FontValidationProcess exten
* @return
*/
protected FontValidator<? extends FontContainer>
getFontValidator(PreflightContext context, PDFont font)
- throws ValidationException
{
String subtype = font.getSubType();
if (FONT_DICTIONARY_VALUE_TRUETYPE.equals(subtype))
@@ -98,7 +105,8 @@ public class FontValidationProcess exten
}
else
{
- throw new ValidationException("Unknown font type : " + subtype);
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_FONTS_UNKNOWN_FONT_TYPE, "Unknown font
type : " + subtype));
+ return null;
}
}
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/GraphicObjectPageValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/GraphicObjectPageValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/GraphicObjectPageValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/GraphicObjectPageValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -27,6 +27,7 @@ import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -36,6 +37,8 @@ import org.apache.pdfbox.preflight.xobje
import org.apache.pdfbox.preflight.xobject.XObjPostscriptValidator;
import org.apache.pdfbox.preflight.xobject.XObjectValidator;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+
public class GraphicObjectPageValidationProcess extends AbstractProcess
{
@@ -62,14 +65,16 @@ public class GraphicObjectPageValidation
}
else
{
- throw new ValidationException("Invalid XObject subtype");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_XOBJECT_INVALID_TYPE, "Invalid
XObject subtype"));
}
}
else
{
- throw new ValidationException("Graphic validation process needs at
least one PDFont object");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "Graphic
validation process needs at least one PDXObject"));
}
- validator.validate();
+ if (validator != null) {
+ validator.validate();
+ }
}
}
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -44,6 +44,7 @@ import org.apache.pdfbox.pdmodel.graphic
import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObject;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -58,18 +59,24 @@ public class ResourcesValidationProcess
public void validate(PreflightContext ctx) throws ValidationException
{
PreflightPath vPath = ctx.getValidationPath();
- if (vPath.isEmpty() && !vPath.isExpectedType(PDResources.class))
- {
- throw new ValidationException("Resources validation process needs
at least one PDResources object");
+ if (vPath.isEmpty()) {
+ return;
}
+ else if (!vPath.isExpectedType(PDResources.class))
+ {
+ addValidationError(ctx, new
ValidationError(PreflightConstants.ERROR_PDF_PROCESSING_MISSING, "Resources
validation process needs at least one PDResources object"));
+ }
+ else
+ {
- PDResources resources = (PDResources) vPath.peek();
+ PDResources resources = (PDResources) vPath.peek();
- validateFonts(ctx, resources);
- validateExtGStates(ctx, resources);
- validateShadingPattern(ctx, resources);
- validateTilingPattern(ctx, resources);
- validateXObjects(ctx, resources);
+ validateFonts(ctx, resources);
+ validateExtGStates(ctx, resources);
+ validateShadingPattern(ctx, resources);
+ validateTilingPattern(ctx, resources);
+ validateXObjects(ctx, resources);
+ }
}
/**
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShaddingPatternValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShaddingPatternValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShaddingPatternValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/ShaddingPatternValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -29,10 +29,10 @@ import java.io.IOException;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
import org.apache.pdfbox.preflight.PreflightConfiguration;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -49,15 +49,20 @@ public class ShaddingPatternValidationPr
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() && !vPath.isExpectedType(PDResources.class))
+ if (vPath.isEmpty()) {
+ return;
+ }
+ else if (!vPath.isExpectedType(PDShadingResources.class))
+ {
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT,
"ShadingPattern validation required at least a PDResources"));
+ }
+ else
{
- throw new ValidationException("ShadingPattern validation required
at least a PDResources");
+ PDShadingResources shaddingResource = (PDShadingResources)
vPath.peek();
+ PDPage page = vPath.getClosestPathElement(PDPage.class);
+ checkColorSpace(context, page, shaddingResource);
+ checkGraphicState(context, page, shaddingResource);
}
-
- PDShadingResources shaddingResource = (PDShadingResources)
vPath.peek();
- PDPage page = vPath.getClosestPathElement(PDPage.class);
- checkColorSpace(context, page, shaddingResource);
- checkGraphicState(context, page, shaddingResource);
}
/**
@@ -73,7 +78,7 @@ public class ShaddingPatternValidationPr
*/
protected void checkColorSpace(PreflightContext context, PDPage page,
PDShadingResources shadingRes)
throws ValidationException
- {
+ {
try
{
PDColorSpace pColorSpace = shadingRes.getColorSpace();
@@ -86,7 +91,7 @@ public class ShaddingPatternValidationPr
{
context.addValidationError(new
ValidationError(ERROR_GRAPHIC_INVALID_UNKNOWN_COLOR_SPACE, e.getMessage()));
}
- }
+ }
/**
* Check the Extended Graphic State contains in the ShadingPattern
dictionary if it is present. To check this
@@ -97,12 +102,12 @@ public class ShaddingPatternValidationPr
*/
protected void checkGraphicState(PreflightContext context, PDPage page,
PDShadingResources shadingRes)
throws ValidationException
- {
+ {
COSDictionary resources = (COSDictionary)
shadingRes.getCOSDictionary().getDictionaryObject(
TRANPARENCY_DICTIONARY_KEY_EXTGSTATE);
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -47,6 +47,7 @@ import org.apache.pdfbox.pdmodel.graphic
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
import org.apache.pdfbox.preflight.PreflightConfiguration;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -65,22 +66,26 @@ public class SinglePageValidationProcess
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() && !vPath.isExpectedType(PDPage.class))
+ if (vPath.isEmpty()){
+ return;
+ }
+ else if (!vPath.isExpectedType(PDPage.class))
{
- throw new ValidationException("Page validation required at least a
PDPage");
+ addValidationError(context, new
ValidationError(PreflightConstants.ERROR_PDF_PROCESSING_MISSING, "Page
validation required at least a PDPage"));
+ }
+ else
+ {
+ PDPage page = (PDPage) vPath.peek();
+ validateActions(context, page);
+ validateAnnotation(context, page);
+ validateColorSpaces(context, page);
+ validateResources(context, page);
+ validateGraphicObjects(context, page);
+ validateGroupTransparency(context, page);
+ // TODO
+ // add MetaData validation ?
+ validateContent(context, page);
}
-
- PDPage page = (PDPage) vPath.peek();
- validateActions(context, page);
- validateAnnotation(context, page);
- validateColorSpaces(context, page);
- validateResources(context, page);
- validateGraphicObjects(context, page);
- validateGroupTransparency(context, page);
- // TODO
- // add MetaData validation ?
-
- validateContent(context, page);
}
/**
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/TilingPatternValidationProcess.java
Sun Jun 23 08:28:55 2013
@@ -30,6 +30,7 @@ import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPatternResources;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -44,38 +45,43 @@ public class TilingPatternValidationProc
public void validate(PreflightContext context) throws ValidationException
{
PreflightPath vPath = context.getValidationPath();
- if (vPath.isEmpty() && !vPath.isExpectedType(PDPage.class))
+ if (vPath.isEmpty()) {
+ return;
+ }
+ else if (!vPath.isExpectedType(PDTilingPatternResources.class))
{
- throw new ValidationException("Tiling pattern validation required
at least a PDPage");
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "Tiling
pattern validation required at least a PDPage"));
}
+ else
+ {
+ PDTilingPatternResources tilingPattern =
(PDTilingPatternResources) vPath.peek();
+ PDPage page = vPath.getClosestPathElement(PDPage.class);
- PDTilingPatternResources tilingPattern = (PDTilingPatternResources)
vPath.peek();
- PDPage page = vPath.getClosestPathElement(PDPage.class);
-
- checkMandatoryFields(context, page, tilingPattern);
- parseResources(context, page, tilingPattern);
- parsePatternContent(context, page, tilingPattern);
+ checkMandatoryFields(context, page, tilingPattern);
+ parseResources(context, page, tilingPattern);
+ parsePatternContent(context, page, tilingPattern);
+ }
}
protected void parseResources(PreflightContext context, PDPage page,
PDTilingPatternResources pattern)
throws ValidationException
- {
+ {
PDResources resources = pattern.getResources();
if (resources != null)
{
ContextHelper.validateElement(context, resources,
RESOURCES_PROCESS);
}
- }
+ }
/**
* Validate the Pattern content like Color and Show Text Operators using
an instance of ContentStreamWrapper.
*/
protected void parsePatternContent(PreflightContext context, PDPage page,
PDTilingPatternResources pattern)
throws ValidationException
- {
+ {
ContentStreamWrapper csWrapper = new ContentStreamWrapper(context,
page);
csWrapper.validPatternContentStream((COSStream)
pattern.getCOSObject());
- }
+ }
/**
* This method checks if required fields are present.
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/ContextHelper.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/ContextHelper.java?rev=1495799&r1=1495798&r2=1495799&view=diff
==============================================================================
---
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/ContextHelper.java
(original)
+++
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/utils/ContextHelper.java
Sun Jun 23 08:28:55 2013
@@ -21,11 +21,13 @@
package org.apache.pdfbox.preflight.utils;
+import static org.apache.pdfbox.preflight.PreflightConstants.*;
import org.apache.pdfbox.preflight.PreflightConfiguration;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.process.ValidationProcess;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
public class ContextHelper
{
@@ -39,14 +41,16 @@ public class ContextHelper
* @param processName
* @throws ValidationException
*/
- public static void validateElement(PreflightContext context, Object
element, String processName)
- throws ValidationException
+ public static void validateElement(PreflightContext context, Object
element, String processName) throws ValidationException
{
if (element == null)
{
- throw new ValidationException("Unable to process an element if it
is null.");
+ context.addValidationError(new
ValidationError(ERROR_PDF_PROCESSING_MISSING, "Unable to process an element if
it is null."));
+ }
+ else
+ {
+ callValidation(context, element, processName);
}
- callValidation(context, element, processName);
}
/**
@@ -60,20 +64,16 @@ public class ContextHelper
* @throws ValidationException
*/
private static void callValidation(PreflightContext context, Object
element, String processName)
- throws ValidationException
+ throws ValidationException
{
- if (context == null)
- {
- throw new ValidationException("Unable to process an element
without context.");
- }
-
PreflightPath validationPath = context.getValidationPath();
boolean needPop = validationPath.pushObject(element);
PreflightConfiguration config = context.getConfig();
ValidationProcess process = config.getInstanceOfProcess(processName);
process.validate(context);
- if (needPop)
+ if (needPop) {
validationPath.pop();
+ }
}
/**
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=1495799&r1=1495798&r2=1495799&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
Sun Jun 23 08:28:55 2013
@@ -36,6 +36,7 @@ import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -116,9 +117,8 @@ public class XObjFormValidator extends A
* A Form XObject may contain a Group object (Key =" Group"). If a Group
object is present, this method checks if
* the S entry is present and if its value is different from
"Transparency".
*
- * @throws ValidationException
*/
- protected void checkGroup() throws ValidationException
+ protected void checkGroup()
{
COSBase baseGroup = this.xobject.getItem(XOBJECT_DICTIONARY_KEY_GROUP);
COSDictionary groupDictionary = COSUtils.getAsDictionary(baseGroup,
cosDocument);
@@ -126,15 +126,16 @@ public class XObjFormValidator extends A
{
if
(!XOBJECT_DICTIONARY_KEY_GROUP.equals(groupDictionary.getNameAsString(COSName.TYPE)))
{
- throw new ValidationException("The Group dictionary hasn't
Group as Type value");
- }
-
- String sVal = groupDictionary.getNameAsString(COSName.S);
- if (sVal == null ||
XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal))
+ context.addValidationError(new
ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_FIELD, "The Group
dictionary hasn't Group as Type value"));
+ }
+ else
{
- context.addValidationError(new
ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP,
- "Group has a transparency S entry or the S entry is
null."));
- return;
+ String sVal = groupDictionary.getNameAsString(COSName.S);
+ if (sVal == null ||
XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal))
+ {
+ context.addValidationError(new
ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP, "Group has a transparency S
entry or the S entry is null."));
+ return;
+ }
}
}
}