You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/06/28 18:47:31 UTC
svn commit: r1862289 -
/pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
Author: tilman
Date: Fri Jun 28 18:47:31 2019
New Revision: 1862289
URL: http://svn.apache.org/viewvc?rev=1862289&view=rev
Log:
PDFBOX-4586: widget annotations must have an /AP
Modified:
pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
Modified: pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java?rev=1862289&r1=1862288&r2=1862289&view=diff
==============================================================================
--- pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java (original)
+++ pdfbox/branches/1.8/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java Fri Jun 28 18:47:31 2019
@@ -37,6 +37,7 @@ import org.apache.pdfbox.cos.COSDocument
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectForm;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
+import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -63,7 +64,6 @@ public abstract class AnnotationValidato
public AnnotationValidator(PreflightContext context, COSDictionary annotDictionary)
{
- super();
this.ctx = context;
this.annotDictionary = annotDictionary;
this.cosDocument = this.ctx.getDocument().getDocument();
@@ -199,7 +199,17 @@ public abstract class AnnotationValidato
ContextHelper.validateElement(ctx, new PDXObjectForm(COSUtils.getAsStream(apn, cosDocument)),
GRAPHIC_PROCESS);
}
- } // else ok, nothing to check,this field is optional
+ }
+ else if (this.pdAnnot instanceof PDAnnotationWidget && this.pdAnnot.getAppearance() == null)
+ {
+ // https://www.pdfa.org/wp-content/uploads/2017/07/TechNote0010.pdf
+ // "An ISO 19005-1 validator shall FAIL otherwise conforming files in which a
+ // widget annotation lacks an appearance dictionary." (page 17)
+ ctx.addValidationError(new ValidationError(ERROR_ANNOT_INVALID_AP_CONTENT,
+ "widget annotation lacks an appearance dictionary"));
+ return false;
+ }
+ // else ok, nothing to check, this field is optional
return true;
}