You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by gb...@apache.org on 2012/10/28 12:47:36 UTC
svn commit: r1402980 - in
/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight:
font/descriptor/ metadata/ process/
Author: gbailleul
Date: Sun Oct 28 11:47:36 2012
New Revision: 1402980
URL: http://svn.apache.org/viewvc?rev=1402980&view=rev
Log:
PDFBOX-1377: patch preflight
Modified:
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/PDFAIdentificationValidation.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/RDFAboutAttributeConcordanceValidation.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/SynchronizedMetaDataValidation.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/MetadataValidationProcess.java
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java?rev=1402980&r1=1402979&r2=1402980&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java Sun Oct 28 11:47:36 2012
@@ -23,12 +23,10 @@ package org.apache.pdfbox.preflight.font
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DESCRIPTOR_INVALID;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_CATEGORY_PROPERTY_INVALID;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_FORMAT;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_FORMAT_STREAM;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_FORMAT_UNKOWN;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_FORMAT_XPACKET;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_RDF_ABOUT_ATTRIBUTE_MISSING;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_METADATA_UNKNOWN_VALUETYPE;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_INVALID_FILTER;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_ASCENT;
@@ -48,13 +46,9 @@ import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.padaf.xmpbox.XMPMetadata;
-import org.apache.padaf.xmpbox.parser.XMPDocumentBuilder;
-import org.apache.padaf.xmpbox.parser.XmpExpectedRdfAboutAttribute;
-import org.apache.padaf.xmpbox.parser.XmpParsingException;
-import org.apache.padaf.xmpbox.parser.XmpSchemaException;
-import org.apache.padaf.xmpbox.parser.XmpUnknownValueTypeException;
-import org.apache.padaf.xmpbox.parser.XmpXpacketEndException;
-import org.apache.padaf.xmpbox.type.BadFieldValueException;
+import org.apache.padaf.xmpbox.xml.DomXmpParser;
+import org.apache.padaf.xmpbox.xml.XmpParsingException;
+import org.apache.padaf.xmpbox.xml.XmpParsingException.ErrorType;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
@@ -160,7 +154,7 @@ public abstract class FontDescriptorHelp
try {
- XMPDocumentBuilder xmpBuilder = new XMPDocumentBuilder();
+ DomXmpParser xmpBuilder = new DomXmpParser();
XMPMetadata xmpMeta = xmpBuilder.parse(mdAsBytes);
FontMetaDataValidation fontMDval = new FontMetaDataValidation();
@@ -169,18 +163,14 @@ public abstract class FontDescriptorHelp
fontMDval.analyseRights(xmpMeta, fontDescriptor, ve);
this.fContainer.push(ve);
- } catch (XmpUnknownValueTypeException e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_UNKNOWN_VALUETYPE, e.getMessage()));
} catch (XmpParsingException e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT, e.getMessage()));
- } catch (XmpSchemaException e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT, e.getMessage()));
- } catch (XmpExpectedRdfAboutAttribute e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_RDF_ABOUT_ATTRIBUTE_MISSING,e.getMessage()));
- } catch (BadFieldValueException e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_CATEGORY_PROPERTY_INVALID,e.getMessage()));
- } catch (XmpXpacketEndException e) {
- this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT_XPACKET, "Unable to parse font metadata due to : " + e.getMessage()));
+ if (e.getErrorType()==ErrorType.NoValueType) {
+ this.fContainer.push(new ValidationError(ERROR_METADATA_UNKNOWN_VALUETYPE, e.getMessage()));
+ } else if (e.getErrorType()==ErrorType.XpacketBadEnd) {
+ this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT_XPACKET, "Unable to parse font metadata due to : " + e.getMessage()));
+ } else {
+ this.fContainer.push(new ValidationError(ERROR_METADATA_FORMAT, e.getMessage()));
+ }
}
}
} catch (IllegalStateException e) {
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/PDFAIdentificationValidation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/PDFAIdentificationValidation.java?rev=1402980&r1=1402979&r2=1402980&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/PDFAIdentificationValidation.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/PDFAIdentificationValidation.java Sun Oct 28 11:47:36 2012
@@ -32,6 +32,7 @@ import java.util.List;
import org.apache.padaf.xmpbox.XMPMetadata;
import org.apache.padaf.xmpbox.schema.PDFAIdentificationSchema;
import org.apache.padaf.xmpbox.schema.XMPBasicSchema;
+import org.apache.padaf.xmpbox.type.StructuredType;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -62,13 +63,15 @@ public class PDFAIdentificationValidatio
}
// According to the PDF/A specification, the prefix must be pdfaid for this schema.
- if (!id.getPrefix().equals(PDFAIdentificationSchema.IDPREFIX)) {
- if (metadata.getSchema(PDFAIdentificationSchema.IDPREFIX, XMPBasicSchema.XMPBASICURI) == null) {
+ StructuredType stBasic = XMPBasicSchema.class.getAnnotation(StructuredType.class);
+ StructuredType stPdfaIdent = PDFAIdentificationSchema.class.getAnnotation(StructuredType.class);
+ if (!id.getPrefix().equals(stPdfaIdent.preferedPrefix())) {
+ if (metadata.getSchema(stPdfaIdent.preferedPrefix(), stBasic.namespace()) == null) {
ve.add(unexpectedPrefixFoundError(id.getPrefix(),
- PDFAIdentificationSchema.IDPREFIX, PDFAIdentificationSchema.class.getName()));
+ stPdfaIdent.preferedPrefix(), PDFAIdentificationSchema.class.getName()));
} else {
id = (PDFAIdentificationSchema) metadata.getSchema(
- PDFAIdentificationSchema.IDPREFIX, PDFAIdentificationSchema.IDURI);
+ stPdfaIdent.preferedPrefix(), stPdfaIdent.namespace());
}
}
checkConformanceLevel(ve, id.getConformance());
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/RDFAboutAttributeConcordanceValidation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/RDFAboutAttributeConcordanceValidation.java?rev=1402980&r1=1402979&r2=1402980&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/RDFAboutAttributeConcordanceValidation.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/RDFAboutAttributeConcordanceValidation.java Sun Oct 28 11:47:36 2012
@@ -27,8 +27,6 @@ import java.util.List;
import org.apache.padaf.xmpbox.XMPMetadata;
import org.apache.padaf.xmpbox.schema.XMPSchema;
import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
/**
* Class which all elements within an rdf:RDF have the same value for their
@@ -55,35 +53,18 @@ public class RDFAboutAttributeConcordanc
"Schemas not found in the given metadata representation");
}
String about = schemas.get(0).getAboutValue();
- // rdf:description must have an about attribute, it has been checked during
- // parsing
- Element e;
+ // rdf:description must have an rdf:about attribute
for (XMPSchema xmpSchema : schemas) {
- e = xmpSchema.getElement();
- checkRdfAbout(about, e);
+ checkRdfAbout(about, xmpSchema);
}
}
- private void checkRdfAbout(String about, Element e)
+ private void checkRdfAbout(String about, XMPSchema xmpSchema)
throws DifferentRDFAboutException {
- // System.out.println(e.getTagName());
- // TODO check if it need to test the 2 possibilities
- if (!e.getAttribute("rdf:about").equals(about)) {
+ if (!about.equals(xmpSchema.getAboutValue())) {
throw new DifferentRDFAboutException();
}
- if (!e.getAttribute("about").equals(about)) {
- throw new DifferentRDFAboutException();
- }
- if (e.hasChildNodes()) {
- NodeList children = e.getChildNodes();
- int size = children.getLength();
- for (int i = 0; i < size; i++) {
- if (children.item(i) instanceof Element) {
- checkRdfAbout(about, (Element) children.item(i));
- }
- }
- }
}
public static class DifferentRDFAboutException extends Exception {
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/SynchronizedMetaDataValidation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/SynchronizedMetaDataValidation.java?rev=1402980&r1=1402979&r2=1402980&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/SynchronizedMetaDataValidation.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/metadata/SynchronizedMetaDataValidation.java Sun Oct 28 11:47:36 2012
@@ -29,7 +29,7 @@ import java.util.List;
import org.apache.padaf.xmpbox.XMPMetadata;
-import org.apache.padaf.xmpbox.parser.DateConverter;
+import org.apache.padaf.xmpbox.DateConverter;
import org.apache.padaf.xmpbox.schema.AdobePDFSchema;
import org.apache.padaf.xmpbox.schema.DublinCoreSchema;
import org.apache.padaf.xmpbox.schema.XMPBasicSchema;
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=1402980&r1=1402979&r2=1402980&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 Sun Oct 28 11:47:36 2012
@@ -28,20 +28,9 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.padaf.xmpbox.XMPMetadata;
-import org.apache.padaf.xmpbox.parser.PDFAExtentionSchemaPreprocessor;
-import org.apache.padaf.xmpbox.parser.XMPDocumentBuilder;
-import org.apache.padaf.xmpbox.parser.XmpExpectedRdfAboutAttribute;
-import org.apache.padaf.xmpbox.parser.XmpParsingException;
-import org.apache.padaf.xmpbox.parser.XmpPropertyFormatException;
-import org.apache.padaf.xmpbox.parser.XmpRequiredPropertyException;
-import org.apache.padaf.xmpbox.parser.XmpSchemaException;
-import org.apache.padaf.xmpbox.parser.XmpUnexpectedNamespacePrefixException;
-import org.apache.padaf.xmpbox.parser.XmpUnexpectedNamespaceURIException;
-import org.apache.padaf.xmpbox.parser.XmpUnknownPropertyException;
-import org.apache.padaf.xmpbox.parser.XmpUnknownSchemaException;
-import org.apache.padaf.xmpbox.parser.XmpUnknownValueTypeException;
-import org.apache.padaf.xmpbox.parser.XmpXpacketEndException;
-import org.apache.padaf.xmpbox.type.BadFieldValueException;
+import org.apache.padaf.xmpbox.xml.DomXmpParser;
+import org.apache.padaf.xmpbox.xml.XmpParsingException;
+import org.apache.padaf.xmpbox.xml.XmpParsingException.ErrorType;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSDocument;
@@ -70,24 +59,11 @@ public class MetadataValidationProcess e
PDDocument document = ctx.getDocument();
byte[] tmp = getXpacket(document.getDocument());
- XMPDocumentBuilder builder;
- try {
- builder = new XMPDocumentBuilder();
- builder.addPreprocessor(new PDFAExtentionSchemaPreprocessor());
- } catch (XmpSchemaException e1) {
- throw new ValidationException(e1.getMessage(), e1);
- }
+ DomXmpParser builder;
+ builder = new DomXmpParser();
XMPMetadata metadata;
- try {
- metadata = builder.parse(tmp);
- ctx.setMetadata(metadata);
- } catch (XmpSchemaException e) {
- throw new ValidationException(
- "Parser: Internal Problem (failed to instanciate Schema object)", e);
- } catch (XmpXpacketEndException e) {
- throw new ValidationException("Unable to parse font metadata due to : "
- + e.getMessage(), e);
- }
+ metadata = builder.parse(tmp);
+ ctx.setMetadata(metadata);
// 6.7.5 no deprecated attribute in xpacket processing instruction
if (metadata.getXpacketBytes() != null) {
@@ -125,42 +101,36 @@ public class MetadataValidationProcess e
addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_METADATA_MAIN,
"Unexpected error"));
}
- } catch (XmpPropertyFormatException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_PROPERTY_FORMAT, e.getMessage()));
- } catch (BadFieldValueException e) {
- addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_METADATA_CATEGORY_PROPERTY_INVALID ,e.getMessage()));
- }
- catch (XmpExpectedRdfAboutAttribute e) {
- addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_METADATA_RDF_ABOUT_ATTRIBUTE_MISSING ,e.getMessage()));
- } catch (XmpUnknownPropertyException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_PROPERTY_UNKNOWN, e.getMessage()));
- } catch (XmpUnknownSchemaException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_ABSENT_DESCRIPTION_SCHEMA, e
- .getMessage()));
- } catch (XmpUnexpectedNamespaceURIException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_WRONG_NS_URI, e.getMessage()));
- } catch (XmpUnexpectedNamespacePrefixException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_ABSENT_DESCRIPTION_SCHEMA, e
- .getMessage()));
- } catch (XmpRequiredPropertyException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_PROPERTY_MISSING, e.getMessage()));
- } catch (XmpUnknownValueTypeException e) {
- addValidationError(ctx, new ValidationError(
- PreflightConstants.ERROR_METADATA_UNKNOWN_VALUETYPE, e
- .getMessage()));
} catch (XmpParsingException e) {
-
- addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_METADATA_FORMAT, e
- .getMessage()));
- }
-
- catch (IOException e) {
+ if (e.getErrorType()==ErrorType.NoValueType) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_UNKNOWN_VALUETYPE, e
+ .getMessage()));
+ } else if (e.getErrorType()==ErrorType.RequiredProperty) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_PROPERTY_MISSING, e.getMessage()));
+ } else if (e.getErrorType()==ErrorType.InvalidPrefix) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_ABSENT_DESCRIPTION_SCHEMA, e
+ .getMessage()));
+ } else if (e.getErrorType()==ErrorType.InvalidType) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_PROPERTY_UNKNOWN, e.getMessage()));
+ } else if (e.getErrorType()==ErrorType.XpacketBadEnd) {
+ throw new ValidationException("Unable to parse font metadata due to : "
+ + e.getMessage(), e);
+ } else if (e.getErrorType()==ErrorType.NoSchema) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_ABSENT_DESCRIPTION_SCHEMA, e
+ .getMessage()));
+ } else if (e.getErrorType()==ErrorType.InvalidPdfaSchema) {
+ addValidationError(ctx, new ValidationError(
+ PreflightConstants.ERROR_METADATA_WRONG_NS_URI, e.getMessage()));
+ } else {
+ addValidationError(ctx, new ValidationError(PreflightConstants.ERROR_METADATA_FORMAT, e
+ .getMessage()));
+ }
+ } catch (IOException e) {
throw new ValidationException("Failed while validating", e);
}
}