Added: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java?rev=1361579&view=auto
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
 (added)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
 Sat Jul 14 19:53:48 2012
@@ -0,0 +1,166 @@
+/*****************************************************************************
+ * 
+ * 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.pdfbox.preflight.font.descriptor;
+
+import static 
org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CHARSET_MISSING_FOR_SUBSET;
+import static 
org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
+import static 
org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_FONT_FILEX_INVALID;
+import static 
org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_TYPE1_DAMAGED;
+import static 
org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_LENGTH2;
+import static 
org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_KEY_LENGTH3;
+import static org.apache.pdfbox.preflight.font.FontValidator.isSubSet;
+
+import java.awt.Font;
+import java.awt.FontFormatException;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.fontbox.cff.CFFFont;
+import org.apache.fontbox.cff.CFFParser;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.pdmodel.common.PDStream;
+import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDFontDescriptorDictionary;
+import org.apache.pdfbox.preflight.PreflightContext;
+import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+import org.apache.pdfbox.preflight.exception.ValidationException;
+import org.apache.pdfbox.preflight.font.container.Type1Container;
+import org.apache.pdfbox.preflight.font.util.Type1;
+import org.apache.pdfbox.preflight.font.util.Type1Parser;
+
+public class Type1DescriptorHelper extends 
FontDescriptorHelper<Type1Container> {
+       private boolean isFontFile1 = true;
+
+       public Type1DescriptorHelper(PreflightContext context, PDFont font, 
Type1Container fontContainer) {
+               super(context, font, fontContainer);
+       }
+
+       protected boolean checkMandatoryFields(COSDictionary fDescriptor) {
+               boolean result = super.checkMandatoryFields(fDescriptor);
+               /*
+                * if the this font is a Subset, the CharSet entry must be 
present in
+                * the FontDescriptor
+                */
+               if (isSubSet(fontDescriptor.getFontName())) {
+                       String charsetStr = fontDescriptor.getCharSet();
+                       if (charsetStr == null || "".equals(charsetStr)) {
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_CHARSET_MISSING_FOR_SUBSET, "The Charset entry is 
missing for the Type1 Subset"));
+                               result = false;
+                       }
+               }
+               return result;
+       }
+
+       @Override
+       public PDStream extractFontFile(PDFontDescriptorDictionary 
fontDescriptor) {
+               PDStream ff1 = fontDescriptor.getFontFile();
+               PDStream ff3 = fontDescriptor.getFontFile3();
+
+               if (ff1 != null) {
+                       COSStream stream = ff1.getStream();
+                       if (stream == null) {
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing"));
+                               this.fContainer.notEmbedded();
+                               return null;
+                       }
+
+                       boolean hasLength1 = stream.getInt(COSName.LENGTH1) > 0;
+                       boolean hasLength2 = 
stream.getInt(COSName.getPDFName(FONT_DICTIONARY_KEY_LENGTH2)) > 0;
+                       boolean hasLength3 = 
stream.getInt(COSName.getPDFName(FONT_DICTIONARY_KEY_LENGTH3)) > 0;
+                       if (!(hasLength1 && hasLength2 && hasLength3)) {
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is invalid"));
+                               return null;
+                       }
+
+                       return ff1;
+               } else {
+                       this.isFontFile1 = false;
+                       this.fContainer.setFontFile1(isFontFile1);
+                       return ff3;
+               }
+       }
+
+       @Override
+       protected void processFontFile(PDFontDescriptorDictionary 
fontDescriptor,       PDStream fontFile) {
+               if (isFontFile1) {
+                       processFontFile1(fontDescriptor, fontFile);
+               } else {
+                       processFontFile3(fontDescriptor, fontFile);
+               }
+       }
+
+       /**
+        * Try to load the font using the java.awt.font object.
+        * if the font is invalid, an exception will be pushed in the font 
container
+        * @param fontDescriptor
+        * @param fontFile
+        */
+       protected void processFontFile1(PDFontDescriptorDictionary 
fontDescriptor,      PDStream fontFile) {
+               ByteArrayInputStream bis = null;
+               try {
+                       bis = new ByteArrayInputStream(fontFile.getByteArray());
+                       Font.createFont(Font.TYPE1_FONT, bis);
+                       IOUtils.closeQuietly(bis);
+
+                       // Parse the Type1 Font program in order to extract 
Glyph Width
+                       bis = new ByteArrayInputStream(fontFile.getByteArray());
+                       COSStream streamObj = fontFile.getStream();
+                       int length1 = streamObj.getInt(COSName.LENGTH1);
+                       int length2 = streamObj.getInt(COSName.LENGTH2);
+                       Type1Parser parserForMetrics = 
Type1Parser.createParserWithEncodingObject(bis, length1, length2, 
font.getFontEncoding());
+                       Type1 parsedData = parserForMetrics.parse();
+
+                       this.fContainer.setType1Font(parsedData);
+
+               } catch (IOException e) {
+                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_TYPE1_DAMAGED, "The FontFile can't be read"));
+               } catch (FontFormatException e) {
+                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_TYPE1_DAMAGED, "The FontFile is damaged"));
+               } finally {
+                       IOUtils.closeQuietly(bis);
+               }
+       }
+
+       /**
+        * Type1C is a CFF font format, extract all CFFFont object from the 
stream
+        * 
+        * @param fontStream
+        * @return
+        * @throws ValidationException
+        */
+       protected void processFontFile3(PDFontDescriptorDictionary 
fontDescriptor,      PDStream fontFile) {
+               try {
+                       CFFParser cffParser = new CFFParser();
+                       List<CFFFont> lCFonts = 
cffParser.parse(fontFile.getByteArray());
+                       if (lCFonts == null || lCFonts.isEmpty()) {
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_CID_DAMAGED, "The FontFile can't be read"));
+                       }
+                       this.fContainer.setCFFFontObjects(lCFonts);
+               } catch (IOException e) {
+                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_CID_DAMAGED, "The FontFile can't be read"));
+               }
+       }
+}

Propchange: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/CIDToGIDMap.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDToGIDMap.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/CIDToGIDMap.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/CIDToGIDMap.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDToGIDMap.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDToGIDMap.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/CIDToGIDMap.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/FontMetaDataValidation.java
 (from r1359830, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontMetaDataValidation.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/FontMetaDataValidation.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/FontMetaDataValidation.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontMetaDataValidation.java&r1=1359830&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontMetaDataValidation.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/FontMetaDataValidation.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -37,6 +37,7 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.preflight.PreflightConstants;
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.ValidationException;
+import org.apache.pdfbox.preflight.font.FontValidator;
 
 /**
  * Class used to validate the MetaData entry of the Font File Stream 
dictionary.
@@ -63,16 +64,12 @@ public class FontMetaDataValidation {
         *          The FontDescriptor dictionary
         * @param ve
         *          the list of validation error to update if the validation 
fails
-        * @throws ValidationException
         */
-       public boolean analyseFontName(XMPMetadata metadata,
-                       PDFontDescriptor fontDesc, List<ValidationError> ve)
-       throws ValidationException {
+       public boolean analyseFontName(XMPMetadata metadata,PDFontDescriptor 
fontDesc, List<ValidationError> ve){
                String fontName = fontDesc.getFontName();
                String noSubSetName = fontName;
-               if (AbstractFontValidator.isSubSet(fontName)) {
-                       noSubSetName = fontName.split(AbstractFontValidator
-                                       .getSubSetPatternDelimiter())[1];
+               if (FontValidator.isSubSet(fontName)) {
+                       noSubSetName = 
fontName.split(FontValidator.getSubSetPatternDelimiter())[1];
                }
 
                DublinCoreSchema dc = metadata.getDublinCoreSchema();
@@ -149,10 +146,8 @@ public class FontMetaDataValidation {
         *          The FontDescriptor dictionary
         * @param ve
         *          the list of validation error to update if the validation 
fails
-        * @throws ValidationException
         */
-       public boolean analyseRights(XMPMetadata metadata, PDFontDescriptor 
fontDesc, List<ValidationError> ve)
-       throws ValidationException {
+       public boolean analyseRights(XMPMetadata metadata, PDFontDescriptor 
fontDesc, List<ValidationError> ve)  {
 
                DublinCoreSchema dc = metadata.getDublinCoreSchema();
                if (dc != null) {

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDescription.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/GlyphDescription.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDescription.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDescription.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/GlyphDescription.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/GlyphDescription.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDescription.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font.type1;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.util.List;
 

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDetail.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphDetail.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDetail.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDetail.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphDetail.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphDetail.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphDetail.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font;
+package org.apache.pdfbox.preflight.font.util;
 
 public class GlyphDetail {
        private GlyphException invalidGlyphError = null;

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphException.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphException.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphException.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphException.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphException.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/GlyphException.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/GlyphException.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font;
+package org.apache.pdfbox.preflight.font.util;
 
 public class GlyphException extends Exception {
        private String errorCode;

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PDFAType3StreamParser.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/PDFAType3StreamParser.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PDFAType3StreamParser.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PDFAType3StreamParser.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/PDFAType3StreamParser.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/PDFAType3StreamParser.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PDFAType3StreamParser.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.awt.Image;
 import java.io.IOException;

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PeekInputStream.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/PeekInputStream.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PeekInputStream.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PeekInputStream.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/PeekInputStream.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/PeekInputStream.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PeekInputStream.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font.type1;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font.type1;
+package org.apache.pdfbox.preflight.font.util;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 
-import org.apache.pdfbox.preflight.font.GlyphException;
 import org.apache.pdfbox.encoding.Encoding;
 import org.apache.pdfbox.preflight.PreflightConstants;
 

Copied: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java
 (from r1355309, 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1Parser.java)
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java?p2=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java&p1=pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1Parser.java&r1=1355309&r2=1361579&rev=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/type1/Type1Parser.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java
 Sat Jul 14 19:53:48 2012
@@ -19,7 +19,7 @@
  * 
  ****************************************************************************/
 
-package org.apache.pdfbox.preflight.font.type1;
+package org.apache.pdfbox.preflight.font.util;
 
 import static 
org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_ENCODING_MAC;
 import static 
org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_ENCODING_MAC_EXP;

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java?rev=1361579&r1=1361578&r2=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/process/reflect/FontValidationProcess.java
 Sat Jul 14 19:53:48 2012
@@ -35,11 +35,12 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.preflight.PreflightContext;
 import org.apache.pdfbox.preflight.PreflightPath;
 import org.apache.pdfbox.preflight.exception.ValidationException;
-import org.apache.pdfbox.preflight.font.CompositeFontValidator;
 import org.apache.pdfbox.preflight.font.FontValidator;
 import org.apache.pdfbox.preflight.font.TrueTypeFontValidator;
+import org.apache.pdfbox.preflight.font.Type0FontValidator;
 import org.apache.pdfbox.preflight.font.Type1FontValidator;
 import org.apache.pdfbox.preflight.font.Type3FontValidator;
+import org.apache.pdfbox.preflight.font.container.FontContainer;
 import org.apache.pdfbox.preflight.process.AbstractProcess;
 
 public class FontValidationProcess extends AbstractProcess {
@@ -47,12 +48,15 @@ public class FontValidationProcess exten
        public void validate(PreflightContext context)  throws 
ValidationException {
                PreflightPath vPath = context.getValidationPath();
                if (vPath.isEmpty() || !vPath.isExpectedType(PDFont.class)) {
-                throw new ValidationException("Font validation process needs 
at least one PDFont object");
+                       throw new ValidationException("Font validation process 
needs at least one PDFont object");
                }
 
                PDFont font = (PDFont)vPath.peek();
-               FontValidator validator = getFontValidator(context, font);
-               validator.validate();
+               FontContainer fontContainer = 
context.getFontContainer(font.getCOSObject());
+               if (fontContainer == null) { // if fontContainer isn't null the 
font is already checked
+                       FontValidator<? extends FontContainer> validator = 
getFontValidator(context, font);
+                       validator.validate();
+               }
        }
 
        /**
@@ -60,7 +64,7 @@ public class FontValidationProcess exten
         * @param font
         * @return
         */
-       protected FontValidator getFontValidator(PreflightContext context, 
PDFont font)
+       protected FontValidator<? extends FontContainer> 
getFontValidator(PreflightContext context, PDFont font)
                        throws ValidationException {
                String subtype = font.getSubType();
                if (FONT_DICTIONARY_VALUE_TRUETYPE.equals(subtype)) {
@@ -71,7 +75,7 @@ public class FontValidationProcess exten
                } else if (FONT_DICTIONARY_VALUE_TYPE3.equals(subtype)) {
                        return new Type3FontValidator(context, font);
                } else if (FONT_DICTIONARY_VALUE_COMPOSITE.equals(subtype)) {
-                       return new CompositeFontValidator(context, font);
+                       return new Type0FontValidator(context, font);
                } else if (FONT_DICTIONARY_VALUE_TYPE2.equals(subtype)
                                || FONT_DICTIONARY_VALUE_TYPE1C.equals(subtype)
                                || FONT_DICTIONARY_VALUE_TYPE0C.equals(subtype)

Modified: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestInvalidDirectory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestInvalidDirectory.java?rev=1361579&r1=1361578&r2=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestInvalidDirectory.java
 (original)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestInvalidDirectory.java
 Sat Jul 14 19:53:48 2012
@@ -38,55 +38,56 @@ import org.junit.runners.Parameterized.P
 
 @RunWith(Parameterized.class)
 public class TestInvalidDirectory {
-  
-  
-  protected static File directory;
-    
-  protected File target = null;
-  
-  
-  public TestInvalidDirectory (File file) {
-    this.target = file;
-  }
-  
-  @Test
-  public void validate () throws Exception {
-               PreflightParser parser = new PreflightParser(new 
FileDataSource(target));
-               parser.parse();
-               PreflightDocument document = (PreflightDocument) 
parser.getPDDocument();
-               document.validate();
-               Assert.assertFalse(document.getResult().isValid());
-               document.close();
-  }
-  
-  @Parameters
-  public static Collection<Object[]> initializeParameters() throws Exception {
-    // check directory
-    File directory = null;
-    String pdfPath = System.getProperty("pdfa.invalid", null);
-    if ("${user.pdfa.invalid}".equals(pdfPath)) {pdfPath=null;}
-    if (pdfPath!=null) {
-      directory = new File(pdfPath);
-      if (!directory.exists()) throw new Exception ("directory does not exists 
: "+directory.getAbsolutePath());
-      if (!directory.isDirectory()) throw new Exception ("not a directory : 
"+directory.getAbsolutePath());
-    } else {
-      System.err.println("System property 'pdfa.invalid' not defined, will not 
run TestValidaDirectory");
-    }
-    // create list
-    if (directory==null) {
-      return new ArrayList<Object[]>(0);
-    } else {
-      File [] files = directory.listFiles();
-      List<Object[]> data = new ArrayList<Object[]>(files.length);
-      for (File file : files) {
-        if (file.isFile()) {
-          data.add(new Object [] {file});
-        }
-      }
-      return data;
-    }
-  }
-  
-  
-  
+
+
+       protected static File directory;
+
+       protected File target = null;
+
+
+       public TestInvalidDirectory (File file) {
+               this.target = file;
+       }
+
+       @Test
+       public void validate () throws Exception {
+               System.out.println(target);
+               PreflightParser parser = new PreflightParser(new 
FileDataSource(target));
+               parser.parse();
+               PreflightDocument document = (PreflightDocument) 
parser.getPDDocument();
+               document.validate();
+               Assert.assertFalse(document.getResult().isValid());
+               document.close();
+       }
+
+       @Parameters
+       public static Collection<Object[]> initializeParameters() throws 
Exception {
+               // check directory
+               File directory = null;
+               String pdfPath = System.getProperty("pdfa.invalid", null);
+               if ("${user.pdfa.invalid}".equals(pdfPath)) {pdfPath=null;}
+               if (pdfPath!=null) {
+                       directory = new File(pdfPath);
+                       if (!directory.exists()) throw new Exception 
("directory does not exists : "+directory.getAbsolutePath());
+                       if (!directory.isDirectory()) throw new Exception ("not 
a directory : "+directory.getAbsolutePath());
+               } else {
+                       System.err.println("System property 'pdfa.invalid' not 
defined, will not run TestValidaDirectory");
+               }
+               // create list
+               if (directory==null) {
+                       return new ArrayList<Object[]>(0);
+               } else {
+                       File [] files = directory.listFiles();
+                       List<Object[]> data = new 
ArrayList<Object[]>(files.length);
+                       for (File file : files) {
+                               if (file.isFile()) {
+                                       data.add(new Object [] {file});
+                               }
+                       }
+                       return data;
+               }
+       }
+
+
+
 }

Modified: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestValidDirectory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestValidDirectory.java?rev=1361579&r1=1361578&r2=1361579&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestValidDirectory.java
 (original)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/TestValidDirectory.java
 Sat Jul 14 19:53:48 2012
@@ -30,11 +30,8 @@ import javax.activation.FileDataSource;
 
 import junit.framework.Assert;
 
-import org.apache.padaf.preflight.PdfAValidator;
-import org.apache.padaf.preflight.PdfAValidatorFactory;
 import org.apache.padaf.preflight.ValidationResult;
 import org.apache.pdfbox.preflight.parser.PreflightParser;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;


Reply via email to