use of org.apache.pdfbox.preflight.exception.ValidationException in project pdfbox by apache.
the class AbstractInvalidFileTester method validate.
@Test()
public final void validate() throws Exception {
if (path == null) {
logger.warn("This is an empty test");
return;
}
PreflightDocument document = null;
try {
PreflightParser parser = new PreflightParser(path);
parser.parse();
document = parser.getPreflightDocument();
document.validate();
ValidationResult result = document.getResult();
Assert.assertFalse(path + " : Isartor file should be invalid (" + path + ")", result.isValid());
Assert.assertTrue(path + " : Should find at least one error", result.getErrorsList().size() > 0);
// could contain more than one error
boolean found = false;
if (this.expectedError != null) {
for (ValidationError error : result.getErrorsList()) {
if (error.getErrorCode().equals(this.expectedError)) {
found = true;
if (outputResult == null) {
break;
}
}
if (outputResult != null) {
String log = path.getName().replace(".pdf", "") + "#" + error.getErrorCode() + "#" + error.getDetails() + "\n";
outputResult.write(log.getBytes());
}
}
}
if (result.getErrorsList().size() > 0) {
if (this.expectedError == null) {
logger.info("File invalid as expected (no expected code) :" + this.path.getAbsolutePath());
} else if (!found) {
StringBuilder message = new StringBuilder(100);
message.append(path).append(" : Invalid error code returned. Expected ");
message.append(this.expectedError).append(", found ");
for (ValidationError error : result.getErrorsList()) {
message.append(error.getErrorCode()).append(" ");
}
Assert.fail(message.toString());
}
} else {
Assert.assertEquals(path + " : Invalid error code returned.", this.expectedError, result.getErrorsList().get(0).getErrorCode());
}
} catch (ValidationException e) {
throw new Exception(path + " :" + e.getMessage(), e);
} finally {
if (document != null) {
document.close();
}
}
}
use of org.apache.pdfbox.preflight.exception.ValidationException in project pdfbox by apache.
the class TestSynchronizedMetadataValidation method testAllInfoSynhcronized.
/**
* Check reaction when metadata are well-formed
*
* @throws Exception
*/
@Test
public void testAllInfoSynhcronized() 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 = metadata.createAndAddDublinCoreSchema();
XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
// 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);
// Checking all is synchronized
Assert.assertEquals(0, 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 testBadSizeOfArrays.
/**
* in XMP, Subject and Author must be embedded in a single entry text array This function check the detection of
* multiple entries for these properties
*
* @throws Exception
*/
@Test
public void testBadSizeOfArrays() 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");
dc.addCreator("2ndCreator");
// SUBJECT
dico.setSubject("dicoSubj");
dc.addSubject("XMPSubj");
dc.addSubject("2ndSubj");
// 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 testdoublePrefixSchemas.
/**
* Check reaction when metadata are well-formed
*
* @throws Exception
*/
@Test
public void testdoublePrefixSchemas() 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 = metadata.createAndAddDublinCoreSchema();
DublinCoreSchema dc2 = new DublinCoreSchema(metadata, "dctest");
metadata.addSchema(dc2);
XMPBasicSchema xmp = metadata.createAndAddXMPBasicSchema();
XMPBasicSchema xmp2 = new XMPBasicSchema(metadata, "xmptest");
metadata.addSchema(xmp2);
AdobePDFSchema pdf = metadata.createAndAddAdobePDFSchema();
AdobePDFSchema pdf2 = new AdobePDFSchema(metadata, "pdftest");
metadata.addSchema(pdf2);
// write some temp info in 'false' schemas
dc2.setCoverage("tmpcover");
xmp2.setCreatorTool("tmpcreator");
pdf2.setKeywords("tmpkeys");
// 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);
Assert.assertTrue(ve.isEmpty());
} 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 testEmptyXMPSchemas.
/**
* Check the detection of a XMP with empty common schemas
*
* @throws Exception
*/
@Test
public void testEmptyXMPSchemas() 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 (but empty)
metadata.createAndAddDublinCoreSchema();
metadata.createAndAddAdobePDFSchema();
metadata.createAndAddXMPBasicSchema();
// 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 absent XMP values
Assert.assertEquals(8, ve.size());
} catch (ValidationException e) {
throw new Exception(e.getMessage());
}
}
Aggregations