Search in sources :

Example 96 with ValidationError

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());
    }
}
Also used : ValidationException(org.apache.pdfbox.preflight.exception.ValidationException) XMPBasicSchema(org.apache.xmpbox.schema.XMPBasicSchema) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) 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 97 with ValidationError

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

Example 98 with ValidationError

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);
    }
}
Also used : COSDictionary(org.apache.pdfbox.cos.COSDictionary) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 99 with ValidationError

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"));
        }
    }
}
Also used : COSBase(org.apache.pdfbox.cos.COSBase) COSDocument(org.apache.pdfbox.cos.COSDocument) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError)

Example 100 with ValidationError

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;
}
Also used : TrueTypeFontValidator(org.apache.pdfbox.preflight.font.TrueTypeFontValidator) Type3FontValidator(org.apache.pdfbox.preflight.font.Type3FontValidator) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) Type1FontValidator(org.apache.pdfbox.preflight.font.Type1FontValidator) Type0FontValidator(org.apache.pdfbox.preflight.font.Type0FontValidator)

Aggregations

ValidationError (org.apache.pdfbox.preflight.ValidationResult.ValidationError)108 COSBase (org.apache.pdfbox.cos.COSBase)36 COSDictionary (org.apache.pdfbox.cos.COSDictionary)28 IOException (java.io.IOException)27 COSDocument (org.apache.pdfbox.cos.COSDocument)13 COSObject (org.apache.pdfbox.cos.COSObject)13 COSArray (org.apache.pdfbox.cos.COSArray)10 COSStream (org.apache.pdfbox.cos.COSStream)10 COSString (org.apache.pdfbox.cos.COSString)8 PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)8 ValidationException (org.apache.pdfbox.preflight.exception.ValidationException)8 COSName (org.apache.pdfbox.cos.COSName)7 COSObjectKey (org.apache.pdfbox.cos.COSObjectKey)7 PreflightPath (org.apache.pdfbox.preflight.PreflightPath)6 InputStream (java.io.InputStream)5 ArrayList (java.util.ArrayList)5 PDStream (org.apache.pdfbox.pdmodel.common.PDStream)5 PreflightParser (org.apache.pdfbox.preflight.parser.PreflightParser)5 DublinCoreSchema (org.apache.xmpbox.schema.DublinCoreSchema)5 PDDocument (org.apache.pdfbox.pdmodel.PDDocument)4