Author: leleueri Date: Sun Aug 18 13:33:22 2013 New Revision: 1515106 URL: http://svn.apache.org/r1515106 Log: [PDFBOX-1673] Fix false negative error on annotation. ('Content' and 'F' entries aren't required in a annotation structure)
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/PreflightDocument.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/FreeTextAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/InkAnnotationValdiator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LineAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LinkAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/MarkupAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PopupAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PrintMarkAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/RubberStampAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/SquareCircleAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TextAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TrapNetAnnotationValidator.java pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/WidgetAnnotationValidator.java pdfbox/trunk/preflight/src/test/resources/expected_errors.txt 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=1515106&r1=1515105&r2=1515106&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 Aug 18 13:33:22 2013 @@ -26,6 +26,7 @@ import java.util.Collection; import org.apache.pdfbox.cos.COSDocument; import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.preflight.ValidationResult.ValidationError; import org.apache.pdfbox.preflight.exception.ValidationException; import org.apache.pdfbox.preflight.utils.ContextHelper; Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/Validator_A1b.java Sun Aug 18 13:33:22 2013 @@ -26,6 +26,8 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import javax.activation.DataSource; @@ -75,7 +77,7 @@ public class Validator_A1b // list boolean isBatch = "batch".equals(args[posFile]); posFile += isBatch?1:0; - + if (isGroup||isBatch) { // prepare the list List<File> ftp = listFiles(args[posFile]); @@ -114,9 +116,9 @@ public class Validator_A1b } } } - - - + + + } else { // only one file FileDataSource fd = new FileDataSource(args[posFile]); @@ -135,9 +137,9 @@ public class Validator_A1b transformer.transform(new DOMSource(document), new StreamResult(System.out)); } } - + } - + private static void usage () { System.out.println("Usage : java org.apache.pdfbox.preflight.Validator_A1b [xml] [mode] <file path>"); System.out.println(); @@ -147,7 +149,7 @@ public class Validator_A1b System.out.println(" group : generate an xml result for all the file of the list."); System.out.println("Version : " + Version.getVersion()); } - + private static int runSimple (DataSource fd) throws Exception { ValidationResult result = null; PreflightParser parser = new PreflightParser(fd); @@ -180,22 +182,26 @@ public class Validator_A1b System.out.println(); return -1; } - + } - - + + private static List<File> listFiles (String path) throws IOException { List<File> files = new ArrayList<File>(); File f = new File(path); - FileReader fr = new FileReader(f); - BufferedReader buf = new BufferedReader(fr); - while (buf.ready()) { - File fn = new File(buf.readLine()); - if (fn.exists()) { - files.add(fn); - } // else warn ? + if (f.isFile()) { + FileReader fr = new FileReader(f); + BufferedReader buf = new BufferedReader(fr); + while (buf.ready()) { + File fn = new File(buf.readLine()); + if (fn.exists()) { + files.add(fn); + } // else warn ? + } + IOUtils.closeQuietly(buf); + } else { + files.addAll(Arrays.asList(f.listFiles())); } - IOUtils.closeQuietly(buf); return files; } } 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=1515106&r1=1515105&r2=1515106&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 Sun Aug 18 13:33:22 2013 @@ -29,6 +29,7 @@ import static org.apache.pdfbox.prefligh import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_INVALID_AP_CONTENT; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_INVALID_CA; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_AP_N_CONTENT; +import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_DICT_INVALID; import org.apache.pdfbox.cos.COSBase; @@ -269,9 +270,31 @@ public abstract class AnnotationValidato * list of errors which is updated if validation fails * @return true if validation succeed, false otherwise. */ - protected abstract boolean checkMandatoryFields(); + protected boolean checkMandatoryFields() + { + boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); + boolean rect = this.annotDictionary.containsKey(COSName.RECT); + + boolean result = (subtype && rect && checkSpecificMandatoryFields()); + if (!result) + { + ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS, "A mandatory field for the " + + this.pdAnnot.getSubtype() + " annotation is missing")); + } + return result; + } /** + * Override this method to check the presence of specific fields + * @return + */ + protected boolean checkSpecificMandatoryFields() + { + return true; + } + + + /** * Initialize the annotFact attribute of this object. This method must be called by the Factory at the creation of * this object. Only the Factory should call this method. * Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/FreeTextAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/FreeTextAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/FreeTextAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/FreeTextAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,13 +21,10 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; - import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the FreeTextAnnotation @@ -46,29 +43,8 @@ public class FreeTextAnnotationValidator this.pdAnnot = this.pdFreeText; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() + protected boolean checkSpecificMandatoryFields() { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean contents = this.annotDictionary.containsKey(COSName.CONTENTS); - boolean da = this.annotDictionary.containsKey(COSName.DA); - - /* - * After PDF 1.4, all additional entries in this annotation are optional and they seem to be compatible with the - * PDF/A specification. - */ - boolean result = (subtype && rect && f && da && contents); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS, "A mandatory field for the " - + this.pdAnnot.getSubtype() + " annotation is missing")); - } - return result; + return this.annotDictionary.containsKey(COSName.DA); } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/InkAnnotationValdiator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/InkAnnotationValdiator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/InkAnnotationValdiator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/InkAnnotationValdiator.java Sun Aug 18 13:33:22 2013 @@ -22,13 +22,11 @@ package org.apache.pdfbox.preflight.annotation; import static org.apache.pdfbox.preflight.PreflightConstants.ANNOT_DICTIONARY_KEY_INKLIST; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the InkAnnotation @@ -47,24 +45,8 @@ public class InkAnnotationValdiator exte this.pdAnnot = this.pdUnk; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() + protected boolean checkSpecificMandatoryFields() { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean contents = this.annotDictionary.containsKey(COSName.CONTENTS); - boolean inkList = this.annotDictionary.containsKey(COSName.getPDFName(ANNOT_DICTIONARY_KEY_INKLIST)); - - boolean result = (subtype && rect && f && contents && inkList); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; + return this.annotDictionary.containsKey(COSName.getPDFName(ANNOT_DICTIONARY_KEY_INKLIST)); } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LineAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LineAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LineAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LineAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -22,7 +22,6 @@ package org.apache.pdfbox.preflight.annotation; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_FORBIDDEN_COLOR; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; @@ -88,22 +87,8 @@ public class LineAnnotationValidator ext * * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) */ - protected boolean checkMandatoryFields() + protected boolean checkSpecificMandatoryFields() { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean l = this.annotDictionary.containsKey(COSName.L); - - /* - * After PDF 1.4, all additional entries in this annotation are optional and they seem to be compatible with the - * PDF/A specification. - */ - boolean result = (subtype && rect && f && l); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; + return this.annotDictionary.containsKey(COSName.L); } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LinkAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LinkAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LinkAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/LinkAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -23,12 +23,10 @@ package org.apache.pdfbox.preflight.anno import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_FORBIDDEN_DEST; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_INVALID_DEST; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import java.io.IOException; import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink; import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination; import org.apache.pdfbox.preflight.PreflightContext; @@ -93,23 +91,4 @@ public class LinkAnnotationValidator ext } return true; } - - /* - * (non-Javadoc) (new ValidationError( ValidationConstants. - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/MarkupAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/MarkupAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/MarkupAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/MarkupAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -22,13 +22,11 @@ package org.apache.pdfbox.preflight.annotation; import static org.apache.pdfbox.preflight.PreflightConstants.ANNOT_DICTIONARY_KEY_QUADPOINTS; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the MarkupAnnotation @@ -47,24 +45,8 @@ public class MarkupAnnotationValidator e this.pdAnnot = this.pdMarkup; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() + protected boolean checkSpecificMandatoryFields() { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean contents = this.annotDictionary.containsKey(COSName.CONTENTS); - boolean qp = this.annotDictionary.containsKey(COSName.getPDFName(ANNOT_DICTIONARY_KEY_QUADPOINTS)); - - boolean result = (subtype && rect && f && contents && qp); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; + return this.annotDictionary.containsKey(COSName.getPDFName(ANNOT_DICTIONARY_KEY_QUADPOINTS)); } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PopupAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PopupAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PopupAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PopupAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,13 +21,9 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; - import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationPopup; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the PopupAnnotation @@ -46,22 +42,4 @@ public class PopupAnnotationValidator ex this.pdAnnot = this.pdPopup; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PrintMarkAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PrintMarkAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PrintMarkAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/PrintMarkAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,13 +21,9 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; - import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the PopupAnnotation @@ -46,22 +42,4 @@ public class PrintMarkAnnotationValidato this.pdAnnot = this.pdUnk; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/RubberStampAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/RubberStampAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/RubberStampAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/RubberStampAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,13 +21,9 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; - import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationRubberStamp; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the BudderStampAnnotation @@ -46,24 +42,4 @@ public class RubberStampAnnotationValida this.pdAnnot = this.pdRStamp; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean contents = this.annotDictionary.containsKey(COSName.CONTENTS); - - boolean result = (subtype && rect && f && contents); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } - } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/SquareCircleAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/SquareCircleAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/SquareCircleAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/SquareCircleAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -22,10 +22,8 @@ package org.apache.pdfbox.preflight.annotation; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_FORBIDDEN_COLOR; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationSquareCircle; import org.apache.pdfbox.preflight.PreflightContext; import org.apache.pdfbox.preflight.ValidationResult.ValidationError; @@ -83,27 +81,4 @@ public class SquareCircleAnnotationValid return true; } - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - /* - * ---- After PDF 1.4, all additional entries in this annotation are optional and they seem to be compatible - * with the PDF/A specification. - */ - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } - } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TextAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TextAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TextAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TextAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,11 +21,9 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_NOT_RECOMMENDED_FLAG; import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationText; import org.apache.pdfbox.preflight.PreflightContext; import org.apache.pdfbox.preflight.ValidationResult.ValidationError; @@ -69,27 +67,4 @@ public class TextAnnotationValidator ext } return result; } - - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - boolean contents = this.annotDictionary.containsKey(COSName.CONTENTS); - /* - * Since PDF 1.5, two optional entries are possible. These new entries seem to e compatible with the PDF/A - * specification (used to set a State to the annotation - ex : rejected, reviewed...) - */ - boolean result = (subtype && rect && f && contents); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TrapNetAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TrapNetAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TrapNetAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/TrapNetAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -21,13 +21,9 @@ package org.apache.pdfbox.preflight.annotation; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; - import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown; import org.apache.pdfbox.preflight.PreflightContext; -import org.apache.pdfbox.preflight.ValidationResult.ValidationError; /** * Validation class for the TrapNet annotation @@ -45,23 +41,4 @@ public class TrapNetAnnotationValidator this.pdUnk = new PDAnnotationUnknown(annotDictionary); this.pdAnnot = this.pdUnk; } - - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields(java.util.List) - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/WidgetAnnotationValidator.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/WidgetAnnotationValidator.java?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/WidgetAnnotationValidator.java (original) +++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/WidgetAnnotationValidator.java Sun Aug 18 13:33:22 2013 @@ -22,10 +22,8 @@ package org.apache.pdfbox.preflight.annotation; import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_FORBIDDEN_AA; -import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_ANNOT_MISSING_FIELDS; import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget; import org.apache.pdfbox.preflight.PreflightContext; import org.apache.pdfbox.preflight.ValidationResult.ValidationError; @@ -76,23 +74,4 @@ public class WidgetAnnotationValidator e } return true; } - - /* - * (non-Javadoc) - * - * @seenet.awl.edoc.pdfa.validation.annotation.AnnotationValidator# checkMandatoryFields() - */ - protected boolean checkMandatoryFields() - { - boolean subtype = this.annotDictionary.containsKey(COSName.SUBTYPE); - boolean rect = this.annotDictionary.containsKey(COSName.RECT); - boolean f = this.annotDictionary.containsKey(COSName.F); - - boolean result = (subtype && rect && f); - if (!result) - { - ctx.addValidationError(new ValidationError(ERROR_ANNOT_MISSING_FIELDS)); - } - return result; - } } Modified: pdfbox/trunk/preflight/src/test/resources/expected_errors.txt URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/resources/expected_errors.txt?rev=1515106&r1=1515105&r2=1515106&view=diff ============================================================================== --- pdfbox/trunk/preflight/src/test/resources/expected_errors.txt (original) +++ pdfbox/trunk/preflight/src/test/resources/expected_errors.txt Sun Aug 18 13:33:22 2013 @@ -143,7 +143,7 @@ isartor-6-5-2-t02-fail-a.pdf=1.2.9 // Sh isartor-6-5-2-t02-fail-b.pdf=5.2.1 isartor-6-5-2-t02-fail-c.pdf=5.2.1 isartor-6-5-3-t01-fail-a.pdf=5.3.2 -isartor-6-5-3-t02-fail-a.pdf=5.1 +isartor-6-5-3-t02-fail-a.pdf=5.2.2 // F is optional according to PDF 1.7 or ISO 32000 --> missing will set the print flag to 0 so it is invalid isartor-6-5-3-t02-fail-b.pdf=5.2.2 isartor-6-5-3-t02-fail-c.pdf=5.2.2 isartor-6-5-3-t02-fail-d.pdf=5.2.2