Search in sources :

Example 26 with ValidationError

use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.

the class ShadingPatternValidationProcess method checkColorSpace.

/**
 * Checks if the ColorSapce entry is consistent which rules of the PDF Reference and the ISO 190005-1:2005
 * Specification.
 *
 * This method is called by the validate method.
 *
 * @param context the preflight context.
 * @param page the page to check.
 * @param shadingRes the Shading pattern to check.
 * @throws ValidationException
 */
protected void checkColorSpace(PreflightContext context, PDPage page, PDShading shadingRes) throws ValidationException {
    try {
        PDColorSpace pColorSpace = shadingRes.getColorSpace();
        PreflightConfiguration config = context.getConfig();
        ColorSpaceHelperFactory csFact = config.getColorSpaceHelperFact();
        ColorSpaceHelper csh = csFact.getColorSpaceHelper(context, pColorSpace, ColorSpaceRestriction.NO_PATTERN);
        csh.validate();
    } catch (IOException e) {
        LOGGER.debug("Unable to get the color space", e);
        context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_UNKNOWN_COLOR_SPACE, e.getMessage()));
    }
}
Also used : PreflightConfiguration(org.apache.pdfbox.preflight.PreflightConfiguration) ColorSpaceHelperFactory(org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory) ColorSpaceHelper(org.apache.pdfbox.preflight.graphic.ColorSpaceHelper) IOException(java.io.IOException) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PDColorSpace(org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)

Example 27 with ValidationError

use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.

the class SinglePageValidationProcess method validate.

@Override
public void validate(PreflightContext context) throws ValidationException {
    PreflightPath vPath = context.getValidationPath();
    if (vPath.isEmpty()) {
        return;
    }
    if (!vPath.isExpectedType(PDPage.class)) {
        addValidationError(context, new ValidationError(PreflightConstants.ERROR_PDF_PROCESSING_MISSING, "Page validation required at least a PDPage"));
    } else {
        PDPage page = (PDPage) vPath.peek();
        validateActions(context, page);
        validateAnnotation(context, page);
        validateColorSpaces(context, page);
        validateResources(context, page);
        validateGraphicObjects(context, page);
        validateGroupTransparency(context, page);
        // TODO
        // add MetaData validation ?
        validateContent(context, page);
    }
}
Also used : PDPage(org.apache.pdfbox.pdmodel.PDPage) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 28 with ValidationError

use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.

the class SinglePageValidationProcess method validateGraphicObjects.

/**
 * Check that all XObject references in the PDResource of the page and in the Thumb entry are confirming to the
 * PDF/A specification.
 *
 * @param context the preflight context.
 * @param page the page to check.
 * @throws ValidationException
 */
protected void validateGraphicObjects(PreflightContext context, PDPage page) throws ValidationException {
    COSBase thumbBase = page.getCOSObject().getItem(PAGE_DICTIONARY_VALUE_THUMB);
    if (thumbBase != null) {
        try {
            if (thumbBase instanceof COSObject) {
                thumbBase = ((COSObject) thumbBase).getObject();
            }
            PDXObject thumbImg = PDImageXObject.createThumbnail((COSStream) thumbBase);
            ContextHelper.validateElement(context, thumbImg, GRAPHIC_PROCESS);
        } catch (IOException e) {
            LOGGER.debug("Unable to read Thumb image", e);
            context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID, "Unable to read Thumb image : " + e.getMessage()));
        }
    }
}
Also used : COSObject(org.apache.pdfbox.cos.COSObject) COSBase(org.apache.pdfbox.cos.COSBase) IOException(java.io.IOException) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PDXObject(org.apache.pdfbox.pdmodel.graphics.PDXObject)

Example 29 with ValidationError

use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.

the class SinglePageValidationProcess method validateGroupTransparency.

/**
 * Check that the group dictionary doesn't have a Transparency attribute
 *
 * @param context the preflight context.
 * @param page the page to check.
 * @throws ValidationException
 */
protected void validateGroupTransparency(PreflightContext context, PDPage page) throws ValidationException {
    COSBase baseGroup = page.getCOSObject().getItem(XOBJECT_DICTIONARY_KEY_GROUP);
    COSDictionary groupDictionary = COSUtils.getAsDictionary(baseGroup, context.getDocument().getDocument());
    if (groupDictionary != null) {
        String sVal = groupDictionary.getNameAsString(COSName.S);
        if (XOBJECT_DICTIONARY_VALUE_S_TRANSPARENCY.equals(sVal)) {
            context.addValidationError(new ValidationError(ERROR_GRAPHIC_TRANSPARENCY_GROUP, "Group has a transparency S entry or the S entry is null"));
        }
    }
}
Also used : COSDictionary(org.apache.pdfbox.cos.COSDictionary) COSBase(org.apache.pdfbox.cos.COSBase) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError)

Example 30 with ValidationError

use of org.apache.pdfbox.preflight.ValidationResult.ValidationError in project pdfbox by apache.

the class TilingPatternValidationProcess method checkMandatoryFields.

/**
 * This method checks if required fields are present.
 */
protected void checkMandatoryFields(PreflightContext context, PDPage page, PDTilingPattern pattern) {
    COSDictionary dictionary = pattern.getCOSObject();
    boolean res = dictionary.getItem(COSName.RESOURCES) != null;
    res = res && dictionary.getItem(COSName.BBOX) != null;
    res = res && dictionary.getItem(COSName.PAINT_TYPE) != null;
    res = res && dictionary.getItem(COSName.TILING_TYPE) != null;
    res = res && dictionary.getItem(COSName.X_STEP) != null;
    res = res && dictionary.getItem(COSName.Y_STEP) != null;
    if (!res) {
        context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_PATTERN_DEFINITION));
    }
}
Also used : COSDictionary(org.apache.pdfbox.cos.COSDictionary) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError)

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