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()));
}
}
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);
}
}
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()));
}
}
}
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"));
}
}
}
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));
}
}
Aggregations