Search in sources :

Example 6 with PreflightPath

use of org.apache.pdfbox.preflight.PreflightPath 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 7 with PreflightPath

use of org.apache.pdfbox.preflight.PreflightPath in project pdfbox by apache.

the class FontValidationProcess method validate.

@Override
public void validate(PreflightContext context) throws ValidationException {
    PreflightPath vPath = context.getValidationPath();
    if (vPath.isEmpty()) {
        return;
    }
    if (!vPath.isExpectedType(PDFont.class)) {
        context.addValidationError(new ValidationError(PreflightConstants.ERROR_FONTS_INVALID_DATA, "Font validation process needs at least one PDFont object"));
    } else {
        PDFont font = (PDFont) vPath.peek();
        FontContainer<?> fontContainer = context.getFontContainer(font.getCOSObject());
        if (fontContainer == null) {
            // if fontContainer isn't null the font is already checked
            FontValidator<? extends FontContainer<? extends PDFont>> validator = getFontValidator(context, font);
            if (validator != null) {
                validator.validate();
            }
        }
    }
}
Also used : PDFont(org.apache.pdfbox.pdmodel.font.PDFont) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 8 with PreflightPath

use of org.apache.pdfbox.preflight.PreflightPath in project pdfbox by apache.

the class ShadingPatternValidationProcess method validate.

@Override
public void validate(PreflightContext context) throws ValidationException {
    PreflightPath vPath = context.getValidationPath();
    if (vPath.isEmpty()) {
        return;
    }
    if (!vPath.isExpectedType(PDShading.class)) {
        context.addValidationError(new ValidationError(PreflightConstants.ERROR_GRAPHIC_MISSING_OBJECT, "ShadingPattern validation required at least a PDResources"));
    } else {
        PDShading shadingResource = (PDShading) vPath.peek();
        PDPage page = vPath.getClosestPathElement(PDPage.class);
        checkColorSpace(context, page, shadingResource);
        checkGraphicState(context, page, shadingResource);
    }
}
Also used : PDShading(org.apache.pdfbox.pdmodel.graphics.shading.PDShading) PDPage(org.apache.pdfbox.pdmodel.PDPage) ValidationError(org.apache.pdfbox.preflight.ValidationResult.ValidationError) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 9 with PreflightPath

use of org.apache.pdfbox.preflight.PreflightPath in project pdfbox by apache.

the class ContextHelper method callValidation.

/**
 * Put the element to check on the top of the ValidationPath and call the validation method on the Process.
 *
 * @param context
 *            (mandatory) the preflight context that contains all required information
 * @param element
 * @param processName
 *            the process to instantiate and to compute
 * @throws ValidationException
 */
private static void callValidation(PreflightContext context, Object element, String processName) throws ValidationException {
    PreflightPath validationPath = context.getValidationPath();
    if (hasRecursion(context, element, validationPath)) {
        return;
    }
    boolean needPop = validationPath.pushObject(element);
    PreflightConfiguration config = context.getConfig();
    ValidationProcess process = config.getInstanceOfProcess(processName);
    process.validate(context);
    if (needPop) {
        validationPath.pop();
    }
}
Also used : PreflightConfiguration(org.apache.pdfbox.preflight.PreflightConfiguration) ValidationProcess(org.apache.pdfbox.preflight.process.ValidationProcess) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Example 10 with PreflightPath

use of org.apache.pdfbox.preflight.PreflightPath in project pdfbox by apache.

the class XObjFormValidator method validateXObjectContent.

/**
 * An Form XObject is a ContentStream. This method method uses an instance of ContentStreamWrapper to check the
 * Stream of this Form XObject.
 */
protected void validateXObjectContent() throws ValidationException {
    PreflightPath vPath = context.getValidationPath();
    PreflightContentStream csWrapper = new PreflightContentStream(context, vPath.getClosestPathElement(PDPage.class));
    csWrapper.validateXObjContentStream(pdXObj);
}
Also used : PDPage(org.apache.pdfbox.pdmodel.PDPage) PreflightContentStream(org.apache.pdfbox.preflight.content.PreflightContentStream) PreflightPath(org.apache.pdfbox.preflight.PreflightPath)

Aggregations

PreflightPath (org.apache.pdfbox.preflight.PreflightPath)10 ValidationError (org.apache.pdfbox.preflight.ValidationResult.ValidationError)6 PDPage (org.apache.pdfbox.pdmodel.PDPage)4 IOException (java.io.IOException)2 COSArray (org.apache.pdfbox.cos.COSArray)1 COSBase (org.apache.pdfbox.cos.COSBase)1 COSDictionary (org.apache.pdfbox.cos.COSDictionary)1 COSDocument (org.apache.pdfbox.cos.COSDocument)1 COSName (org.apache.pdfbox.cos.COSName)1 PDResources (org.apache.pdfbox.pdmodel.PDResources)1 PDFont (org.apache.pdfbox.pdmodel.font.PDFont)1 PDPostScriptXObject (org.apache.pdfbox.pdmodel.graphics.PDPostScriptXObject)1 PDColorSpace (org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace)1 PDImageXObject (org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)1 PDShading (org.apache.pdfbox.pdmodel.graphics.shading.PDShading)1 PreflightConfiguration (org.apache.pdfbox.preflight.PreflightConfiguration)1 ValidationResult (org.apache.pdfbox.preflight.ValidationResult)1 PreflightContentStream (org.apache.pdfbox.preflight.content.PreflightContentStream)1 PreflightType3Stream (org.apache.pdfbox.preflight.font.util.PreflightType3Stream)1 ValidationProcess (org.apache.pdfbox.preflight.process.ValidationProcess)1