use of org.apache.pdfbox.preflight.exception.ValidationException in project pdfbox by apache.
the class TestSynchronizedMetadataValidation method testAllInfoUnsynchronized.
/**
* Check the detection of unsynchronized information between Document Information dictionary and XMP
*
* @throws Exception
*/
@Test
public void testAllInfoUnsynchronized() throws Exception {
// building temporary XMP metadata
DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
// Writing info in XMP and Document Information dictionary
// TITLE
dico.setTitle("dicoTitle");
dc.setTitle("x-default", "XMPTitle");
// AUTHOR
dico.setAuthor("dicoAuthor");
dc.addCreator("XMPAuthor");
// SUBJECT
dico.setSubject("dicoSubj");
dc.addSubject("XMPSubj");
// KEYWORDS
dico.setKeywords("DicoKeywords");
pdf.setKeywords("XMPkeywords");
// CREATOR
dico.setCreator("DicoCreator");
xmp.setCreatorTool("XMPCreator");
// PRODUCER
dico.setProducer("DicoProducer");
pdf.setProducer("XMPProducer");
// CREATION DATE
dico.setCreationDate(Calendar.getInstance());
GregorianCalendar XMPCreate = new GregorianCalendar(2008, 11, 05);
xmp.setCreateDate(XMPCreate);
// MODIFY DATE
dico.setModificationDate(Calendar.getInstance());
GregorianCalendar XMPModify = new GregorianCalendar(2009, 10, 15);
xmp.setModifyDate(XMPModify);
// Launching synchronization test
try {
ve = sync.validateMetadataSynchronization(doc, metadata);
// Test unsychronized value
Assert.assertEquals(8, ve.size());
} catch (ValidationException e) {
throw new Exception(e.getMessage());
}
}
use of org.apache.pdfbox.preflight.exception.ValidationException 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.exception.ValidationException in project pdfbox by apache.
the class TestSynchronizedMetadataValidation method testNullArrayValue.
/**
* Check detection of a null value in array (for Subject and author properties)
*
* @throws Exception
*/
@Test(expected = IllegalArgumentException.class)
public void testNullArrayValue() throws Exception {
// building temporary XMP metadata
DublinCoreSchema dc = metadata.createAndAddDublinCoreSchema();
// AUTHOR
dico.setAuthor("dicoAuthor");
dc.addCreator(null);
// SUBJECT
dico.setSubject("dicoSubj");
dc.addSubject(null);
// Launching synchronization test
try {
ve = sync.validateMetadataSynchronization(doc, metadata);
// Test unsychronized value
Assert.assertEquals(2, ve.size());
} catch (ValidationException e) {
throw new Exception(e.getMessage());
}
}
use of org.apache.pdfbox.preflight.exception.ValidationException 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.exception.ValidationException in project pdfbox by apache.
the class ExtGStateValidationProcess method extractExtGStateDictionaries.
/**
* Create a list of ExtGState dictionaries using the given Resource dictionary and the COSDocument.
*
* @param context the context which contains the Resource dictionary.
* @param egsEntry a resource COSDictionary.
* @return the list of ExtGState dictionaries.
* @throws ValidationException thrown if a the Extended Graphic State isn't valid.
*/
public List<COSDictionary> extractExtGStateDictionaries(PreflightContext context, COSDictionary egsEntry) throws ValidationException {
List<COSDictionary> listOfExtGState = new ArrayList<>(0);
COSDocument cosDocument = context.getDocument().getDocument();
COSDictionary extGStates = COSUtils.getAsDictionary(egsEntry, cosDocument);
if (extGStates != null) {
for (Object object : extGStates.keySet()) {
COSName key = (COSName) object;
if (key.getName().matches(TRANPARENCY_DICTIONARY_KEY_EXTGSTATE_ENTRY_REGEX)) {
COSBase gsBase = extGStates.getItem(key);
COSDictionary gsDict = COSUtils.getAsDictionary(gsBase, cosDocument);
if (gsDict == null) {
throw new ValidationException("The Extended Graphics State dictionary is invalid");
}
listOfExtGState.add(gsDict);
}
}
}
return listOfExtGState;
}
Aggregations