You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2011/08/04 10:54:43 UTC

svn commit: r1153791 - in /pdfbox/trunk/preflight/src: main/java/org/apache/padaf/preflight/ main/java/org/apache/padaf/preflight/helpers/ test/java/org/apache/padaf/preflight/ test/resources/

Author: leleueri
Date: Thu Aug  4 08:54:42 2011
New Revision: 1153791

URL: http://svn.apache.org/viewvc?rev=1153791&view=rev
Log:
Update PaDaF with last changes of the GitHub repository.

Modified:
    pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/ValidationConstants.java
    pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/CatalogValidationHelper.java
    pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/MetadataValidationHelper.java
    pdfbox/trunk/preflight/src/test/java/org/apache/padaf/preflight/TestValidDirectory.java
    pdfbox/trunk/preflight/src/test/resources/expected_errors.txt

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/ValidationConstants.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/ValidationConstants.java?rev=1153791&r1=1153790&r2=1153791&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/ValidationConstants.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/ValidationConstants.java Thu Aug  4 08:54:42 2011
@@ -265,6 +265,52 @@ public interface ValidationConstants {
   static final String RENDERING_INTENT_PERCEPTUAL = "Perceptual";
   static final String RENDERING_INTENT_SATURATION = "Saturation";
 
+  static final String ICC_Characterization_Data_Registry_FOGRA43 = "FOGRA43";
+  static final String ICC_Characterization_Data_Registry_CGATS_TR_006 = "CGATS TR 006";
+  static final String ICC_Characterization_Data_Registry_FOGRA39 = "FOGRA39";
+  static final String ICC_Characterization_Data_Registry_JC200103 = "JC200103";
+  static final String ICC_Characterization_Data_Registry_FOGRA27 = "FOGRA27";
+  static final String ICC_Characterization_Data_Registry_EUROSB104 = "EUROSB104";
+  static final String ICC_Characterization_Data_Registry_FOGRA45 = "FOGRA45";
+  static final String ICC_Characterization_Data_Registry_FOGRA46 = "FOGRA46";
+  static final String ICC_Characterization_Data_Registry_FOGRA41 = "FOGRA41";
+  static final String ICC_Characterization_Data_Registry_CGATS_TR_001 = "CGATS TR 001";
+  static final String ICC_Characterization_Data_Registry_CGATS_TR_003 = "CGATS TR 003";
+  static final String ICC_Characterization_Data_Registry_CGATS_TR_005 = "CGATS TR 005";
+  static final String ICC_Characterization_Data_Registry_FOGRA28 = "FOGRA28";
+  static final String ICC_Characterization_Data_Registry_JCW2003 = "JCW2003";
+  static final String ICC_Characterization_Data_Registry_EUROSB204 = "EUROSB204";
+  static final String ICC_Characterization_Data_Registry_FOGRA47 = "FOGRA47";
+  static final String ICC_Characterization_Data_Registry_FOGRA44 = "FOGRA44";
+  static final String ICC_Characterization_Data_Registry_FOGRA29 = "FOGRA29";
+  static final String ICC_Characterization_Data_Registry_JC200104 = "JC200104";
+  static final String ICC_Characterization_Data_Registry_FOGRA40 = "FOGRA40";
+  static final String ICC_Characterization_Data_Registry_FOGRA30 = "FOGRA30";
+  static final String ICC_Characterization_Data_Registry_FOGRA42 = "FOGRA42";
+  static final String ICC_Characterization_Data_Registry_IFRA26 = "IFRA26";
+  static final String ICC_Characterization_Data_Registry_JCN2002 = "JCN2002";
+  static final String ICC_Characterization_Data_Registry_CGATS_TR_002 = "CGATS TR 002";
+  static final String ICC_Characterization_Data_Registry_FOGRA33 = "FOGRA33";
+  static final String ICC_Characterization_Data_Registry_FOGRA37 = "FOGRA37";
+  static final String ICC_Characterization_Data_Registry_FOGRA31 = "FOGRA31";
+  static final String ICC_Characterization_Data_Registry_FOGRA35 = "FOGRA35";
+  static final String ICC_Characterization_Data_Registry_FOGRA32 = "FOGRA32";
+  static final String ICC_Characterization_Data_Registry_FOGRA34 = "FOGRA34";
+  static final String ICC_Characterization_Data_Registry_FOGRA36 = "FOGRA36";
+  static final String ICC_Characterization_Data_Registry_FOGRA38 = "FOGRA38";
+  static final String ICC_Characterization_Data_Registry_sRGB = "sRGB";
+  static final String ICC_Characterization_Data_Registry_sRGB_IEC = "sRGB IEC61966-2.1";
+  static final String ICC_Characterization_Data_Registry_Adobe = "Adobe RGB (1998)";
+  static final String ICC_Characterization_Data_Registry_bg_sRGB = "bg-sRGB";
+  static final String ICC_Characterization_Data_Registry_sYCC = "sYCC";
+  static final String ICC_Characterization_Data_Registry_scRGB = "scRGB";
+  static final String ICC_Characterization_Data_Registry_scRGB_nl = "scRGB-nl";
+  static final String ICC_Characterization_Data_Registry_scYCC_nl = "scYCC-nl";
+  static final String ICC_Characterization_Data_Registry_ROMM = "ROMM RGB";
+  static final String ICC_Characterization_Data_Registry_RIMM = "RIMM RGB";
+  static final String ICC_Characterization_Data_Registry_ERIMM = "ERIMM RGB";
+  static final String ICC_Characterization_Data_Registry_eciRGB = "eciRGB";
+  static final String ICC_Characterization_Data_Registry_opRGB = "opRGB";
   /**
    * Error code uses by the Valdiator when there are an error without error
    * code.

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/CatalogValidationHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/CatalogValidationHelper.java?rev=1153791&r1=1153790&r2=1153791&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/CatalogValidationHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/CatalogValidationHelper.java Thu Aug  4 08:54:42 2011
@@ -53,10 +53,66 @@ import org.apache.pdfbox.persistence.uti
  * This helper validates the PDF file catalog
  */
 public class CatalogValidationHelper extends AbstractValidationHelper {
+	protected List<String> listICC = new ArrayList<String>();
 
 	public CatalogValidationHelper(ValidatorConfig cfg)
 	throws ValidationException {
 		super(cfg);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA43);
+		listICC.add(ICC_Characterization_Data_Registry_CGATS_TR_006);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA39);
+		listICC.add(ICC_Characterization_Data_Registry_JC200103);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA27);
+		listICC.add(ICC_Characterization_Data_Registry_EUROSB104);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA45);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA46);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA41);
+		listICC.add(ICC_Characterization_Data_Registry_CGATS_TR_001);
+		listICC.add(ICC_Characterization_Data_Registry_CGATS_TR_003);
+		listICC.add(ICC_Characterization_Data_Registry_CGATS_TR_005);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA28);
+		listICC.add(ICC_Characterization_Data_Registry_JCW2003);
+		listICC.add(ICC_Characterization_Data_Registry_EUROSB204);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA47);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA44);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA29);
+		listICC.add(ICC_Characterization_Data_Registry_JC200104);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA40);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA30);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA42);
+		listICC.add(ICC_Characterization_Data_Registry_IFRA26);
+		listICC.add(ICC_Characterization_Data_Registry_JCN2002);
+		listICC.add(ICC_Characterization_Data_Registry_CGATS_TR_002);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA33);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA37);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA31);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA35);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA32);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA34);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA36);
+		listICC.add(ICC_Characterization_Data_Registry_FOGRA38);
+		listICC.add(ICC_Characterization_Data_Registry_sRGB);
+		listICC.add(ICC_Characterization_Data_Registry_sRGB_IEC);
+		listICC.add(ICC_Characterization_Data_Registry_Adobe);
+		listICC.add(ICC_Characterization_Data_Registry_bg_sRGB);
+		listICC.add(ICC_Characterization_Data_Registry_sYCC);
+		listICC.add(ICC_Characterization_Data_Registry_scRGB);
+		listICC.add(ICC_Characterization_Data_Registry_scRGB_nl);
+		listICC.add(ICC_Characterization_Data_Registry_scYCC_nl);
+		listICC.add(ICC_Characterization_Data_Registry_ROMM);
+		listICC.add(ICC_Characterization_Data_Registry_RIMM);
+		listICC.add(ICC_Characterization_Data_Registry_ERIMM);
+		listICC.add(ICC_Characterization_Data_Registry_eciRGB);
+		listICC.add(ICC_Characterization_Data_Registry_opRGB);
+	}
+
+	protected boolean isStandardICCCharacterization(String name) {
+		for (String iccStandard : listICC) {
+			if (iccStandard.contains(name)) { // TODO check with an equal instead of contains?
+				return true;
+	}
+		}
+		return false;
 	}
 
 	/*
@@ -191,15 +247,13 @@ public class CatalogValidationHelper ext
     PDDocumentCatalog catalog = pdDocument.getDocumentCatalog();
     COSDocument cDoc = pdDocument.getDocument();
 
-    COSBase cBase = catalog.getCOSDictionary().getItem(
-        COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
+    COSBase cBase = catalog.getCOSDictionary().getItem(COSName.getPDFName(DOCUMENT_DICTIONARY_KEY_OUTPUT_INTENTS));
     COSArray outputIntents = COSUtils.getAsArray(cBase, cDoc);
 
     Map<COSObjectKey, Boolean> tmpDestOutputProfile = new HashMap<COSObjectKey, Boolean>();
 
     for (int i = 0; outputIntents != null && i < outputIntents.size(); ++i) {
-      COSDictionary dictionary = COSUtils.getAsDictionary(outputIntents.get(i),
-          cDoc);
+		COSDictionary dictionary = COSUtils.getAsDictionary(outputIntents.get(i), cDoc);
 
       if (dictionary == null) {
 
@@ -209,49 +263,39 @@ public class CatalogValidationHelper ext
 
       } else {
         // ---- S entry is mandatory and must be equals to GTS_PDFA1
-        String sValue = dictionary.getNameAsString(COSName
-            .getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_S));
+			String sValue = dictionary.getNameAsString(COSName.getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_S));
         if (!OUTPUT_INTENT_DICTIONARY_VALUE_GTS_PDFA1.equals(sValue)) {
-          result.add(new ValidationError(
-              ERROR_GRAPHIC_OUTPUT_INTENT_S_VALUE_INVALID,"The S entry of the OutputIntent isn't GTS_PDFA1"));
+				result.add(new ValidationError(ERROR_GRAPHIC_OUTPUT_INTENT_S_VALUE_INVALID,
+				"The S entry of the OutputIntent isn't GTS_PDFA1"));
           continue;
         }
 
         // ---- OutputConditionIdentifier is a mandatory field
         String outputConditionIdentifier = dictionary
-            .getString(COSName
-                .getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_OUTPUT_CONDITION_IDENTIFIER));
-        if (outputConditionIdentifier == null
-            || "".equals(outputConditionIdentifier)) {
-          result.add(new ValidationError(
-              ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,
+			.getString(COSName.getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_OUTPUT_CONDITION_IDENTIFIER));
+			if (outputConditionIdentifier == null) {// empty string is autorized (it may be an application specific value)
+				result.add(new ValidationError(ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,
               "The OutputIntentCondition is missing"));
           continue;
         }
 
-        // ---- If OutputConditionIdentifier is "Custom" :
+			// ---- If OutputConditionIdentifier is "Custom" or a non Standard ICC Characterization :
         // ---- DestOutputProfile and Info are mandatory
         // ---- DestOutputProfile must be a ICC Profile
 
-        // ---- Because of PDF/A conforming file needs to specify the color
-        // characteristics, the DestOutputProfile
-        // is checked even if the OutputConditionIdentifier isn't "Custom"
-        COSBase dop = dictionary.getItem(COSName
-            .getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE));
-        ValidationError valer = validateICCProfile(dop, cDoc,
-            tmpDestOutputProfile, handler);
+			// ---- Because of PDF/A conforming file needs to specify the color characteristics, the DestOutputProfile
+			// ---- is checked even if the OutputConditionIdentifier isn't "Custom"
+			COSBase dop = dictionary.getItem(COSName.getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_DEST_OUTPUT_PROFILE));
+			ValidationError valer = validateICCProfile(dop, cDoc, tmpDestOutputProfile, handler);
         if (valer != null) {
           result.add(valer);
           continue;
         }
 
-        if (OUTPUT_INTENT_DICTIONARY_VALUE_OUTPUT_CONDITION_IDENTIFIER_CUSTOM
-            .equals(outputConditionIdentifier)) {
-          String info = dictionary.getString(COSName
-              .getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_INFO));
+			if (!isStandardICCCharacterization(outputConditionIdentifier)) {
+				String info = dictionary.getString(COSName.getPDFName(OUTPUT_INTENT_DICTIONARY_KEY_INFO));
           if (info == null || "".equals(info)) {
-            result.add(new ValidationError(
-                ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,
+					result.add(new ValidationError(ERROR_GRAPHIC_OUTPUT_INTENT_INVALID_ENTRY,
                 "The Info entry of a OutputIntent dictionary is missing"));
             continue;
           }

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/MetadataValidationHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/MetadataValidationHelper.java?rev=1153791&r1=1153790&r2=1153791&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/MetadataValidationHelper.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/padaf/preflight/helpers/MetadataValidationHelper.java Thu Aug  4 08:54:42 2011
@@ -32,15 +32,17 @@ import org.apache.commons.io.IOUtils;
 import org.apache.padaf.preflight.DocumentHandler;
 import org.apache.padaf.preflight.ValidationConstants;
 import org.apache.padaf.preflight.ValidationException;
-import org.apache.padaf.preflight.ValidatorConfig;
 import org.apache.padaf.preflight.ValidationResult.ValidationError;
+import org.apache.padaf.preflight.ValidatorConfig;
 import org.apache.padaf.preflight.utils.COSUtils;
 import org.apache.padaf.preflight.xmp.PDFAIdentificationValidation;
 import org.apache.padaf.preflight.xmp.RDFAboutAttributeConcordanceValidation;
+import org.apache.padaf.preflight.xmp.RDFAboutAttributeConcordanceValidation.DifferentRDFAboutException;
 import org.apache.padaf.preflight.xmp.SynchronizedMetaDataValidation;
 import org.apache.padaf.preflight.xmp.XpacketParsingException;
 import org.apache.padaf.preflight.xmp.RDFAboutAttributeConcordanceValidation.DifferentRDFAboutException;
 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;
@@ -113,6 +115,7 @@ public class MetadataValidationHelper ex
       XMPDocumentBuilder builder;
 	  try {
 		builder = new XMPDocumentBuilder();
+		builder.addPreprocessor(new PDFAExtentionSchemaPreprocessor());
 	  } catch (XmpSchemaException e1) {
 	    throw new ValidationException(e1.getMessage(), e1);
 	  }

Modified: pdfbox/trunk/preflight/src/test/java/org/apache/padaf/preflight/TestValidDirectory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/padaf/preflight/TestValidDirectory.java?rev=1153791&r1=1153790&r2=1153791&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/java/org/apache/padaf/preflight/TestValidDirectory.java (original)
+++ pdfbox/trunk/preflight/src/test/java/org/apache/padaf/preflight/TestValidDirectory.java Thu Aug  4 08:54:42 2011
@@ -65,7 +65,7 @@ public class TestValidDirectory {
   	ValidationResult result = null;
   	try {
   		result = validator.validate(new FileDataSource(target));
-  		Assert.assertTrue(result.isValid());
+  		Assert.assertTrue("Validation of " + target ,result.isValid());
   	} finally {
   		if (result != null) {
   			result.closePdf();

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=1153791&r1=1153790&r2=1153791&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/test/resources/expected_errors.txt (original)
+++ pdfbox/trunk/preflight/src/test/resources/expected_errors.txt Thu Aug  4 08:54:42 2011
@@ -19,8 +19,6 @@
 #-------------------------------------------------------------------------------
 # filename=param1,param2...
 
-#jira-od-pdfa-18.pdf=1.1
-
 isartor-6-1-2-t01-fail-a.pdf=1.1
 isartor-6-1-2-t02-fail-a.pdf=1.1
 isartor-6-1-3-t01-fail-a.pdf=1.4.1
@@ -213,7 +211,7 @@ isartor-6-7-8-t01-fail-a.pdf=7.3
 isartor-6-7-8-t02-fail-a.pdf=7.3 // 7.4.2 Impossible car NSPrefix utilisé pour identifier pdfschemaext. Ici il est vu comme un schema inconnu
 isartor-6-7-8-t02-fail-b.pdf=7.4.1 
 isartor-6-7-8-t02-fail-c.pdf=7.1 //traité comme probleme de format 
-isartor-6-7-8-t02-fail-d.pdf=7.1.1 // Property missing donc Property unknown (7.1.1)
+isartor-6-7-8-t02-fail-d.pdf=7.1.1 // Property missing so Property unknown (7.1.1)
 isartor-6-7-8-t02-fail-e.pdf=7.5
 isartor-6-7-8-t02-fail-f.pdf=7.5
 isartor-6-7-8-t02-fail-g.pdf=7.6