use of org.apache.pdfbox.preflight.PreflightConfiguration in project pdfbox by apache.
the class XObjImageValidator method checkColorSpaceAndImageMask.
/*
* According to the PDF Reference file, there are some specific rules on following fields ColorSpace, Mask,
* ImageMask and BitsPerComponent. If ImageMask is set to true, ColorSpace and Mask entries are forbidden.
*/
protected void checkColorSpaceAndImageMask() throws ValidationException {
COSBase csImg = this.xobject.getItem(COSName.COLORSPACE);
COSBase bitsPerComp = this.xobject.getItem("BitsPerComponent");
COSBase mask = this.xobject.getItem(COSName.MASK);
if (isImageMaskTrue()) {
if (csImg != null || mask != null) {
context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_KEY, "ImageMask entry is true, ColorSpace and Mask are forbidden."));
}
Integer bitsPerCompValue = COSUtils.getAsInteger(bitsPerComp, cosDocument);
if (bitsPerCompValue != null && bitsPerCompValue != 1) {
context.addValidationError(new ValidationError(ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY, "ImageMask entry is true, BitsPerComponent must be absent or 1."));
}
} else {
try {
PreflightConfiguration config = context.getConfig();
ColorSpaceHelperFactory csFact = config.getColorSpaceHelperFact();
PDColorSpace pdCS = PDColorSpace.create(csImg);
ColorSpaceHelper csh = csFact.getColorSpaceHelper(context, pdCS, ColorSpaceRestriction.NO_PATTERN);
csh.validate();
} catch (IOException e) {
LOGGER.debug("Couldn't create PDColorSpace " + csImg, e);
context.addValidationError(new ValidationError(ERROR_GRAPHIC_INVALID_UNKNOWN_COLOR_SPACE));
}
}
}
Aggregations