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