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 2016/07/04 16:04:08 UTC
svn commit: r1751327 -
/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
Author: tilman
Date: Mon Jul 4 16:04:08 2016
New Revision: 1751327
URL: http://svn.apache.org/viewvc?rev=1751327&view=rev
Log:
PDFBOX-3408: Go up the hierarchy to get the type
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/annotation/AnnotationValidator.java
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=1751327&r1=1751326&r2=1751327&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 Jul 4 16:04:08 2016
@@ -190,7 +190,7 @@ public abstract class AnnotationValidato
{
COSBase apn = apDict.getItem(COSName.N);
COSBase subtype = annotDictionary.getItem(COSName.SUBTYPE);
- COSBase ft = annotDictionary.getItem(COSName.FT);
+ COSBase ft = getFieldType();
if (COSName.WIDGET.equals(subtype) && COSName.BTN.equals(ft))
{
// TECHNICAL CORRIGENDUM 2 for ISO 19005-1:2005 (PDF/A-1)
@@ -339,4 +339,25 @@ public abstract class AnnotationValidato
{
this.annotFact = fact;
}
+
+ private COSBase getFieldType()
+ {
+ COSBase ft = annotDictionary.getDictionaryObject(COSName.FT);
+ COSDictionary parent = annotDictionary;
+ while (ft == null)
+ {
+ // /FT could be in parent, so look upwards
+ COSBase parentBase = parent.getDictionaryObject(COSName.PARENT);
+ if (parentBase instanceof COSDictionary)
+ {
+ parent = (COSDictionary) parentBase;
+ ft = parent.getDictionaryObject(COSName.FT);
+ }
+ else
+ {
+ break;
+ }
+ }
+ return ft;
+ }
}