use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.
the class TestSynchronizedMetadataValidation method testBadPrefixSchemas.
/**
* Check reaction when metadata are well-formed
*
* @throws Exception
*/
@Test
public void testBadPrefixSchemas() throws Exception {
title = "TITLE";
author = "AUTHOR(S)";
subject = "SUBJECTS";
keywords = "KEYWORD(S)";
creator = "CREATOR";
producer = "PRODUCER";
creationDate = Calendar.getInstance();
modifyDate = Calendar.getInstance();
// building temporary XMP metadata
DublinCoreSchema dc = new DublinCoreSchema(metadata, "dctest");
metadata.addSchema(dc);
XMPBasicSchema xmp = new XMPBasicSchema(metadata, "xmptest");
metadata.addSchema(xmp);
AdobePDFSchema pdf = new AdobePDFSchema(metadata, "pdftest");
metadata.addSchema(pdf);
// Writing info in XMP and Document Information dictionary
// TITLE
dico.setTitle(title);
dc.setTitle("x-default", title);
// AUTHOR
dico.setAuthor(author);
dc.addCreator(author);
// SUBJECT
dico.setSubject(subject);
dc.addDescription("x-default", subject);
// KEYWORDS
dico.setKeywords(keywords);
pdf.setKeywords(keywords);
// CREATOR
dico.setCreator(creator);
xmp.setCreatorTool(creator);
// PRODUCER
dico.setProducer(producer);
pdf.setProducer(producer);
// CREATION DATE
dico.setCreationDate(creationDate);
xmp.setCreateDate(creationDate);
// MODIFY DATE
dico.setModificationDate(modifyDate);
xmp.setModifyDate(modifyDate);
// Launching synchronization test
try {
ve = sync.validateMetadataSynchronization(doc, metadata);
for (ValidationError valid : ve) {
Assert.assertEquals(PreflightConstants.ERROR_METADATA_WRONG_NS_PREFIX, valid.getErrorCode());
}
} catch (ValidationException e) {
throw new Exception(e.getMessage());
}
}
use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.
the class TestSynchronizedMetadataValidation method testEmptyXMP.
/**
* Check the detection of a completely empty XMP document (without any schemas)
*
* @throws Exception
*/
@Test
public void testEmptyXMP() throws Exception {
title = "TITLE";
author = "AUTHOR(S)";
subject = "SUBJECTS";
keywords = "KEYWORD(S)";
creator = "CREATOR";
producer = "PRODUCER";
creationDate = Calendar.getInstance();
modifyDate = Calendar.getInstance();
// Writing info in Document Information dictionary
// TITLE
dico.setTitle(title);
// AUTHOR
dico.setAuthor(author);
// SUBJECT
dico.setSubject(subject);
// KEYWORDS
dico.setKeywords(keywords);
// CREATOR
dico.setCreator(creator);
// PRODUCER
dico.setProducer(producer);
// CREATION DATE
dico.setCreationDate(creationDate);
// MODIFY DATE
dico.setModificationDate(modifyDate);
try {
ve = sync.validateMetadataSynchronization(doc, metadata);
// Test Detection of an Empty XMP (without any schemas)
for (ValidationError valid : ve) {
Assert.assertEquals(PreflightConstants.ERROR_METADATA_MISMATCH, valid.getErrorCode());
}
} catch (ValidationException e) {
throw new Exception(e.getMessage());
}
}
use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.
the class ExtGStateValidationProcess method validate.
/**
* Validate the ExtGState dictionaries.
*
* @param context the context which contains the Resource dictionary.
* @throws ValidationException thrown if a the Extended Graphic State isn't valid.
*/
@Override
public void validate(PreflightContext context) throws ValidationException {
PreflightPath vPath = context.getValidationPath();
if (vPath.isEmpty()) {
return;
}
if (!vPath.isExpectedType(COSDictionary.class)) {
context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_XOBJECT_INVALID_TYPE, "ExtGState validation required at least a Resource dictionary"));
} else {
COSDictionary extGStatesDict = (COSDictionary) vPath.peek();
List<COSDictionary> listOfExtGState = extractExtGStateDictionaries(context, extGStatesDict);
validateTransparencyRules(context, listOfExtGState);
validateFonts(context, listOfExtGState);
}
}
use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.
the class ExtGStateValidationProcess method checkUpperCA.
/**
* This method checks the "CA" value of the ExtGState dictionary. It is optional but must be 1.0
* if present.
*
* @param context the preflight context.
* @param egs the graphic state to check
*/
private void checkUpperCA(PreflightContext context, COSDictionary egs) {
COSBase uCA = egs.getItem(TRANSPARENCY_DICTIONARY_KEY_UPPER_CA);
if (uCA != null) {
// ---- If CA is present only the value 1.0 is authorized
COSDocument cosDocument = context.getDocument().getDocument();
Float fca = COSUtils.getAsFloat(uCA, cosDocument);
Integer ica = COSUtils.getAsInteger(uCA, cosDocument);
if (!(fca != null && Float.compare(fca, 1.0f) == 0) && !(ica != null && ica == 1)) {
context.addValidationError(new ValidationError(ERROR_TRANSPARENCY_EXT_GS_CA, "CA entry in a ExtGState is invalid"));
}
}
}
use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.
the class FontValidationProcess method getFontValidator.
/**
* Create the right "Validator" object for the given font type
*
* @param context the preflight context.
* @param font the font object.
* @return the font validator instance for the font type.
*/
protected FontValidator<? extends FontContainer<? extends PDFont>> getFontValidator(PreflightContext context, PDFont font) {
String subtype = font.getSubType();
if (FONT_DICTIONARY_VALUE_TRUETYPE.equals(subtype)) {
return new TrueTypeFontValidator(context, (PDTrueTypeFont) font);
}
if (FONT_DICTIONARY_VALUE_MMTYPE.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE1.equals(subtype)) {
return new Type1FontValidator(context, (PDSimpleFont) font);
}
if (FONT_DICTIONARY_VALUE_TYPE3.equals(subtype)) {
return new Type3FontValidator(context, (PDType3Font) font);
}
if (FONT_DICTIONARY_VALUE_COMPOSITE.equals(subtype)) {
return new Type0FontValidator(context, font);
}
if (FONT_DICTIONARY_VALUE_TYPE2.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE1C.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE0C.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE0.equals(subtype)) {
// this dictionary will be checked by a CompositeFontValidator
return null;
}
context.addValidationError(new ValidationError(PreflightConstants.ERROR_FONTS_UNKNOWN_FONT_TYPE, "Unknown font type: " + subtype));
return null;
}
Aggregations