Search in sources :

Example 6 with ValidationException

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();
        }
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) ValidationResult(org.apache.pdfbox.preflight.ValidationResult) PreflightParser(org.apache.pdfbox.preflight.parser.PreflightParser) PreflightDocument(org.apache.pdfbox.preflight.PreflightDocument) ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) Test(org.junit.Test)

Example 7 with ValidationException

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());
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) XMPBasicSchema(org.apache.xmpbox.schema.XMPBasicSchema) DublinCoreSchema(org.apache.xmpbox.schema.DublinCoreSchema) AdobePDFSchema(org.apache.xmpbox.schema.AdobePDFSchema) IOException(java.io.IOException) ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) Test(org.junit.Test)

Example 8 with ValidationException

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());
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) XMPBasicSchema(org.apache.xmpbox.schema.XMPBasicSchema) GregorianCalendar(java.util.GregorianCalendar) DublinCoreSchema(org.apache.xmpbox.schema.DublinCoreSchema) AdobePDFSchema(org.apache.xmpbox.schema.AdobePDFSchema) IOException(java.io.IOException) ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) Test(org.junit.Test)

Example 9 with ValidationException

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());
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) XMPBasicSchema(org.apache.xmpbox.schema.XMPBasicSchema) DublinCoreSchema(org.apache.xmpbox.schema.DublinCoreSchema) AdobePDFSchema(org.apache.xmpbox.schema.AdobePDFSchema) IOException(java.io.IOException) ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) Test(org.junit.Test)

Example 10 with ValidationException

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());
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) IOException(java.io.IOException) ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) Test(org.junit.Test)

Aggregations

ValidationException (org.apache.pdfbox.preflight.exception.ValidationException)21 IOException (java.io.IOException)13 Test (org.junit.Test)11 ValidationError (org.apache.pdfbox.preflight.ValidationResult.ValidationError)8 DublinCoreSchema (org.apache.xmpbox.schema.DublinCoreSchema)7 AdobePDFSchema (org.apache.xmpbox.schema.AdobePDFSchema)6 XMPBasicSchema (org.apache.xmpbox.schema.XMPBasicSchema)6 PreflightDocument (org.apache.pdfbox.preflight.PreflightDocument)4 InputStream (java.io.InputStream)3 COSObject (org.apache.pdfbox.cos.COSObject)3 ValidationResult (org.apache.pdfbox.preflight.ValidationResult)3 ArrayList (java.util.ArrayList)2 GregorianCalendar (java.util.GregorianCalendar)2 COSDictionary (org.apache.pdfbox.cos.COSDictionary)2 COSDocument (org.apache.pdfbox.cos.COSDocument)2 COSObjectKey (org.apache.pdfbox.cos.COSObjectKey)2 COSStream (org.apache.pdfbox.cos.COSStream)2 PreflightParser (org.apache.pdfbox.preflight.parser.PreflightParser)2 ICC_Profile (java.awt.color.ICC_Profile)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1