Package org.apache.padaf.preflight.helpers

Source Code of org.apache.padaf.preflight.helpers.GraphicsValidationHelper

/*****************************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied.  See the License for the
* specific language governing permissions and limitations
* under the License.
*
****************************************************************************/

package org.apache.padaf.preflight.helpers;

import java.util.ArrayList;
import java.util.List;


import org.apache.padaf.preflight.DocumentHandler;
import org.apache.padaf.preflight.ValidationException;
import org.apache.padaf.preflight.ValidatorConfig;
import org.apache.padaf.preflight.ValidationResult.ValidationError;
import org.apache.padaf.preflight.graphics.ShadingPattern;
import org.apache.padaf.preflight.graphics.TilingPattern;
import org.apache.padaf.preflight.graphics.XObjFormValidator;
import org.apache.padaf.preflight.graphics.XObjImageValidator;
import org.apache.padaf.preflight.graphics.XObjPostscriptValidator;
import org.apache.padaf.preflight.graphics.XObjectValidator;
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSObject;
import org.apache.pdfbox.cos.COSStream;
import org.apache.pdfbox.pdmodel.PDDocument;

/**
* @author eric
*
*/
public class GraphicsValidationHelper extends AbstractValidationHelper {

  public GraphicsValidationHelper(ValidatorConfig cfg)
  throws ValidationException {
    super(cfg);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * net.awl.edoc.pdfa.validation.helpers.AbstractValidationHelper#innerValidate
   * (net.awl.edoc.pdfa.validation.DocumentHandler)
   */
  @Override
  public List<ValidationError> innerValidate(DocumentHandler handler)
      throws ValidationException {
    List<ValidationError> result = new ArrayList<ValidationError>(0);
    PDDocument pdfDoc = handler.getDocument();

    // ---- Checks all XObjects
    COSDocument cDoc = pdfDoc.getDocument();
    List<?> lCOSObj = cDoc.getObjects();
    for (Object o : lCOSObj) {
      COSObject cObj = (COSObject) o;
      COSBase cBase = cObj.getObject();
      if (cBase instanceof COSDictionary) {
        COSDictionary dic = (COSDictionary) cBase;
        String type = dic.getNameAsString(COSName
            .getPDFName(DICTIONARY_KEY_TYPE));
        if (type != null && DICTIONARY_KEY_XOBJECT.equals(type)) {
          result.addAll(validateXObject(handler, cObj));
        } else if (type != null && DICTIONARY_KEY_PATTERN.equals(type)) {
          result.addAll(validatePattern(handler, cObj));
        }
      }
    }
    return result;
  }

  public List<ValidationError> validatePattern(DocumentHandler handler,
      COSObject cObj) throws ValidationException {
    COSDictionary cosPattern = (COSDictionary) cObj.getObject();
    int ptype = cosPattern.getInt(DICTIONARY_KEY_PATTERN_TYPE);

    XObjectValidator validator = null;

    switch (ptype) {
    case DICTIONARY_PATTERN_TILING:
      validator = new TilingPattern(handler, (COSStream) cosPattern);
      break;
    case DICTIONARY_PATTERN_SHADING:
      validator = new ShadingPattern(handler, cosPattern);
      break;
    default:
      throw new ValidationException("Unkown pattern type : " + ptype);
    }

    return validator.validate();
  }

  public List<ValidationError> validateXObject(DocumentHandler handler,
      COSObject cObj) throws ValidationException {
    XObjectValidator xObjVal = null;

    // ---- According to the XObject subtype, the validation isn't processed by
    // the same Validator
    COSStream dic = (COSStream) cObj.getObject();
    String subtype = dic.getNameAsString(COSName
        .getPDFName(DICTIONARY_KEY_SUBTYPE));

    if (XOBJECT_DICTIONARY_VALUE_SUBTYPE_IMG.equals(subtype)) {
      xObjVal = new XObjImageValidator(handler, dic);
    } else if (XOBJECT_DICTIONARY_VALUE_SUBTYPE_FORM.equals(subtype)) {
      xObjVal = new XObjFormValidator(handler, dic);
    } else if (XOBJECT_DICTIONARY_VALUE_SUBTYPE_POSTSCRIPT.equals(subtype)) {
      xObjVal = new XObjPostscriptValidator(handler, dic);
    } else {
      throw new ValidationException("Invalid XObject subtype");
    }

    return xObjVal.validate();
  }

}
TOP

Related Classes of org.apache.padaf.preflight.helpers.GraphicsValidationHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.