Author: leleueri
Date: Sat Dec 22 14:59:43 2012
New Revision: 1425292

URL: http://svn.apache.org/viewvc?rev=1425292&view=rev
Log:
[https://issues.apache.org/jira/browse/PDFBOX-1449] When an error is found in a 
ContentStream, the process continue to display as much errors as possible

Modified:
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamEngine.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java
    
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamEngine.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamEngine.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamEngine.java
 Sat Dec 22 14:59:43 2012
@@ -50,6 +50,7 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.color.PDLab;
 import org.apache.pdfbox.preflight.PreflightConfiguration;
 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.graphic.ColorSpaceHelper;
 import org.apache.pdfbox.preflight.graphic.ColorSpaceHelperFactory;
@@ -242,8 +243,9 @@ public abstract class ContentStreamEngin
                        }
 
                        if (!RenderingIntents.contains(riArgument0)) {
-                               throwContentStreamException("Unexpected value 
'" + arguments.get(0)
+                               registerError("Unexpected value '" + 
arguments.get(0)
                                                + "' for ri operand. ", 
ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                               return;
                        }
                }
        }
@@ -257,7 +259,8 @@ public abstract class ContentStreamEngin
                if ("q".equals(operator.getOperation())) {
                        int numberOfGraphicStates = 
this.getGraphicsStack().size();
                        if (numberOfGraphicStates > MAX_GRAPHIC_STATES) {
-                               throwContentStreamException("Too many graphic 
states", ERROR_GRAPHIC_TOO_MANY_GRAPHIC_STATES);
+                               registerError("Too many graphic states", 
ERROR_GRAPHIC_TOO_MANY_GRAPHIC_STATES);
+                               return;
                        }
                }
        }
@@ -318,8 +321,8 @@ public abstract class ContentStreamEngin
                                }
 
                                if (cs == null) {
-                                       throwContentStreamException("The 
ColorSpace is unknown",
-                                                       
ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                                       registerError("The ColorSpace is 
unknown", ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                                       return;
                                }
                        }
 
@@ -348,25 +351,28 @@ public abstract class ContentStreamEngin
 
                if ("rg".equals(operation) || "RG".equals(operation)) {
                        if (!validColorSpace(cs, ColorSpaceType.RGB)) {
-                               throwContentStreamException("The operator \"" + 
operation
+                               registerError("The operator \"" + operation
                                                + "\" can't be used with CMYK 
Profile",
                                                
ERROR_GRAPHIC_INVALID_COLOR_SPACE_RGB);
+                               return;
                        }
                }
 
                if ("k".equals(operation) || "K".equals(operation)) {
                        if (!validColorSpace(cs, ColorSpaceType.CMYK)) {
-                               throwContentStreamException("The operator \"" + 
operation
+                               registerError("The operator \"" + operation
                                                + "\" can't be used with RGB 
Profile",
                                                
ERROR_GRAPHIC_INVALID_COLOR_SPACE_CMYK);
+                               return;
                        }
                }
 
                if ("g".equals(operation) || "G".equals(operation)) {
                        if (!validColorSpace(cs, ColorSpaceType.ALL)) {
-                               throwContentStreamException("The operator \"" + 
operation
+                               registerError("The operator \"" + operation
                                                + "\" can't be used without 
Color Profile",
                                                
ERROR_GRAPHIC_INVALID_COLOR_SPACE_MISSING);
+                               return;
                        }
                }
 
@@ -376,9 +382,10 @@ public abstract class ContentStreamEngin
                                || "b*".equals(operation)) {
                        if (!validColorSpace(cs, ColorSpaceType.ALL)) {
                                // The default fill color needs an OutputIntent
-                               throwContentStreamException("The operator \"" + 
operation
+                               registerError("The operator \"" + operation
                                                + "\" can't be used without 
Color Profile",
                                                
ERROR_GRAPHIC_INVALID_COLOR_SPACE_MISSING);
+                               return;
                        }
                }
        }
@@ -504,8 +511,8 @@ public abstract class ContentStreamEngin
                } else if (arguments.get(0) instanceof COSName) {
                        colorSpaceName = ((COSName) arguments.get(0)).getName();
                } else {
-                       throwContentStreamException("The operand doesn't have 
the expected type",
-                                       ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                       registerError("The operand doesn't have the expected 
type",     ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                       return;
                }
 
                ColorSpaceHelper csHelper = null;
@@ -528,7 +535,8 @@ public abstract class ContentStreamEngin
                }
 
                if (cs == null) {
-                       throwContentStreamException("The ColorSpace is 
unknown", ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                       registerError("The ColorSpace is unknown", 
ERROR_GRAPHIC_UNEXPECTED_VALUE_FOR_KEY);
+                       return;
                }
 
                if (csHelper == null) {
@@ -542,17 +550,13 @@ public abstract class ContentStreamEngin
        }
 
        /**
-        * Build a ContentStreamException using the given parameters
+        * Add a validation error into the PreflightContext
         * 
-        * @param msg
-        *          exception details
-        * @param errorCode
-        *          the error code.
-        * @throws ContentStreamException
+        * @param msg exception details
+        * @param errorCode the error code.
         */
-       protected void throwContentStreamException(String msg, String 
errorCode) throws ContentStreamException {
-               ContentStreamException cex = new ContentStreamException(msg);
-               cex.setErrorCode(errorCode);
-               throw cex;
+       protected void registerError(String msg, String errorCode) {
+                       ValidationError error = new ValidationError(errorCode, 
msg);
+                       this.context.addValidationError(error);
        }
 }

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/ContentStreamWrapper.java
 Sat Dec 22 14:59:43 2012
@@ -144,8 +144,9 @@ public class ContentStreamWrapper extend
                        processor.setContext(this);
                        processor.process(operator, arguments);
                } else {
-                       throwContentStreamException("The operator \"" + 
operation
+                       registerError("The operator \"" + operation
                                        + "\" isn't supported.", 
ERROR_SYNTAX_CONTENT_STREAM_UNSUPPORTED_OP);
+                       return;
                }
 
                /*
@@ -207,35 +208,35 @@ public class ContentStreamWrapper extend
                 */
                if ("\"".equals(operator.getOperation())) {
                        if (arguments.size() != 3) {
-                               throwContentStreamException("Invalid argument 
for the operator : "
-                                               + operator.getOperation(),
-                                               
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               registerError("Invalid argument for the 
operator : "
+                                               + operator.getOperation(), 
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               return;
                        }
                        Object arg0 = arguments.get(0);
                        Object arg1 = arguments.get(1);
                        Object arg2 = arguments.get(2);
                        if (!(arg0 instanceof COSInteger || arg0 instanceof 
COSFloat) || 
                                        !(arg1 instanceof COSInteger || arg1 
instanceof COSFloat) ) {
-                               throwContentStreamException("Invalid argument 
for the operator : "
-                                               + operator.getOperation(),
-                                               
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);                          
+                               registerError("Invalid argument for the 
operator : "
+                                               + operator.getOperation(), 
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               return;
                        }
 
                        if (arg2 instanceof COSString) {
                                validText(((COSString) arg2).getBytes());
                        } else {
-                               throwContentStreamException("Invalid argument 
for the operator : "
-                                               + operator.getOperation(),
-                                               
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               registerError("Invalid argument for the 
operator : "
+                                               + operator.getOperation(), 
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               return;
                        }
                } else {
                        Object objStr = arguments.get(0);
                        if (objStr instanceof COSString) {
                                validText(((COSString) objStr).getBytes());
                        } else if (!(objStr instanceof COSInteger)) {
-                               throwContentStreamException("Invalid argument 
for the operator : "
-                                               + operator.getOperation(),
-                                               
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               registerError("Invalid argument for the 
operator : "
+                                               + operator.getOperation(), 
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               return;
                        }
                }
        }
@@ -259,8 +260,9 @@ public class ContentStreamWrapper extend
                        } else if (object instanceof COSString) {
                                validText(((COSString) object).getBytes());
                        } else if (!(object instanceof COSInteger || object 
instanceof COSFloat)) {
-                               throwContentStreamException("Invalid argument 
for the operator : "
+                               registerError("Invalid argument for the 
operator : "
                                                + operator.getOperation(),      
ERROR_SYNTAX_CONTENT_STREAM_INVALID_ARGUMENT);
+                               return;
                        }
                }
        }
@@ -282,10 +284,10 @@ public class ContentStreamWrapper extend
                PDTextState textState = getGraphicsState().getTextState();
                final int renderingMode = textState.getRenderingMode();
                final PDFont font = textState.getFont();
-
                if (font == null) {
                        // Unable to decode the Text without Font
-                       throwContentStreamException("Text operator can't be 
process without Font", ERROR_FONTS_UNKNOWN_FONT_REF);
+                       registerError("Text operator can't be process without 
Font", ERROR_FONTS_UNKNOWN_FONT_REF);
+                       return;
                }
 
                FontContainer fontContainer = 
context.getFontContainer(font.getCOSObject());
@@ -294,10 +296,15 @@ public class ContentStreamWrapper extend
                        return ;
                } else if (fontContainer == null) {
                        // Font Must be embedded if the RenderingMode isn't 3
-                       throwContentStreamException(font.getBaseFont() + " is 
unknown wasn't found by the FontHelperValdiator", 
ERROR_FONTS_UNKNOWN_FONT_REF);  
-               } else if (!fontContainer.isValid() && ! 
fontContainer.errorsAleadyMerged()) {
+                       registerError(font.getBaseFont() + " is unknown wasn't 
found by the FontHelperValdiator", ERROR_FONTS_UNKNOWN_FONT_REF);
+                       return;
+               } else if (!fontContainer.isValid() && 
!fontContainer.errorsAleadyMerged()) {
                        
context.addValidationErrors(fontContainer.getAllErrors());
                        fontContainer.setErrorsAleadyMerged(true);
+                       return;
+               } if (!fontContainer.isValid() && 
fontContainer.errorsAleadyMerged()) {
+                       // font already computed
+                       return;
                }
 
 
@@ -314,15 +321,14 @@ public class ContentStreamWrapper extend
                                        codeLength++;
                                        cid = font.encodeToCID(string, i, 
codeLength);
                                }
-                       } catch (IOException e) {
-                               throwContentStreamException("Encoding can't 
interpret the character code", ERROR_FONTS_ENCODING_ERROR);
-                       }
-
-                       try {
                                fontContainer.checkGlyphWith(cid);
+                       } catch (IOException e) {
+                               registerError("Encoding can't interpret the 
character code", ERROR_FONTS_ENCODING_ERROR);
+                               return;
                        } catch (GlyphException e) {
                                if (renderingMode != 3) {
-                                       
throwContentStreamException(e.getMessage(), e.getErrorCode());
+                                       registerError(e.getMessage(), 
e.getErrorCode());
+                                       return;
                                }
                        }
                }

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType0DescriptorHelper.java
 Sat Dec 22 14:59:43 2012
@@ -63,7 +63,7 @@ public class CIDType0DescriptorHelper ex
                         */
                        COSStream stream = ff3.getStream();
                        if (stream == null) {
-                               this.fContainer.push(new ValidationError(       
ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing"));
+                               this.fContainer.push(new ValidationError(       
ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing for " + 
fontDescriptor.getFontName()));
                                this.fContainer.notEmbedded();
                        } else {
                                /*
@@ -72,7 +72,7 @@ public class CIDType0DescriptorHelper ex
                                 */
                                String st = 
stream.getNameAsString(COSName.SUBTYPE);
                                if (!(FONT_DICTIONARY_VALUE_TYPE0C.equals(st) 
|| FONT_DICTIONARY_VALUE_TYPE1C.equals(st))) {
-                                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID,        "The FontFile3 stream 
doesn't have the right Subtype"));
+                                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID,        "The FontFile3 stream 
doesn't have the right Subtype for " + fontDescriptor.getFontName()));
                                }
 
                                checkCIDSet(fontDescriptor);

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/CIDType2DescriptorHelper.java
 Sat Dec 22 14:59:43 2012
@@ -77,7 +77,7 @@ public class CIDType2DescriptorHelper ex
                         */
                        COSStream stream = ff2.getStream();
                        if (stream == null) {
-                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing"));
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing for " 
+ fontDescriptor.getFontName()));
                                this.fContainer.notEmbedded();
                        }
                }

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/FontDescriptorHelper.java
 Sat Dec 22 14:59:43 2012
@@ -69,7 +69,7 @@ public abstract class FontDescriptorHelp
        protected PDFont font;
 
        protected PDFontDescriptorDictionary fontDescriptor;
-       
+
        public FontDescriptorHelper(PreflightContext context, PDFont font, T 
fontContainer) {
                super();
                this.fContainer = fontContainer;
@@ -82,7 +82,7 @@ public abstract class FontDescriptorHelp
                // Only a PDFontDescriptorDictionary provides a way to embedded 
the font program.
                if(fd != null && fd instanceof PDFontDescriptorDictionary) {
                        fontDescriptor = (PDFontDescriptorDictionary)fd;
-                       
+
                        if 
(checkMandatoryFields(fontDescriptor.getCOSDictionary())) {
                                if (hasOnlyOneFontFile(fontDescriptor)) {
                                        PDStream fontFile = 
extractFontFile(fontDescriptor);
@@ -91,7 +91,12 @@ public abstract class FontDescriptorHelp
                                                
checkFontFileMetaData(fontDescriptor, fontFile);
                                        }
                                } else {
-                                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID,        "They are more than one 
FontFile"));
+                                       if 
(fontFileNotEmbedded(fontDescriptor)) {
+                                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "FontFile entry is missing from 
FontDescriptor for " + fontDescriptor.getFontName()));
+                                               this.fContainer.notEmbedded();
+                                       } else {
+                                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID,        "They are more than one 
FontFile for " + fontDescriptor.getFontName()));
+                                       }
                                }
                        }
                } else {
@@ -130,6 +135,13 @@ public abstract class FontDescriptorHelp
                return (ff1 != null ^ ff2 != null ^ ff3 != null);
        }
 
+       protected boolean fontFileNotEmbedded(PDFontDescriptorDictionary 
fontDescriptor) {
+               PDStream ff1 = fontDescriptor.getFontFile();
+               PDStream ff2 = fontDescriptor.getFontFile2();
+               PDStream ff3 = fontDescriptor.getFontFile3();
+               return (ff1 == null && ff2 == null && ff3 == null);
+       }
+
        protected abstract void processFontFile(PDFontDescriptorDictionary 
fontDescriptor, PDStream fontFile);
 
        /**
@@ -142,7 +154,7 @@ public abstract class FontDescriptorHelp
                PDMetadata metadata = null;
                try {
                        metadata = fontFile.getMetadata();
-                       
+
                        if (metadata != null) {
                                // Filters are forbidden in a XMP stream
                                if (metadata.getFilters() != null && 
!metadata.getFilters().isEmpty()) {
@@ -177,7 +189,7 @@ public abstract class FontDescriptorHelp
                        this.fContainer.push(new 
ValidationError(ERROR_METADATA_FORMAT_UNKOWN,  "The Metadata entry doesn't 
reference a stream object"));
                }
        }
-       
+
        protected final byte[] getMetaDataStreamAsBytes(PDMetadata metadata) {
                byte[] result = null;
                ByteArrayOutputStream bos = null;

Modified: 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java?rev=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/TrueTypeDescriptorHelper.java
 Sat Dec 22 14:59:43 2012
@@ -50,13 +50,13 @@ public class TrueTypeDescriptorHelper ex
                PDStream fontFile = fontDescriptor.getFontFile2();
                COSStream stream =  (fontFile == null ? null : 
fontFile.getStream());
                if (stream == null) {
-                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile2 is missing"));
+                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile2 is missing for " 
+ fontDescriptor.getFontName()));
                        this.fContainer.notEmbedded();
                        return null;
                }
 
                if (stream.getInt(COSName.LENGTH1) <= 0) {
-                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile entry /Length1 is 
invalid"));
+                       this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile entry /Length1 is 
invalid for " + fontDescriptor.getFontName()));
                        return null;
                }
 

Modified: 
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=1425292&r1=1425291&r2=1425292&view=diff
==============================================================================
--- 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
 (original)
+++ 
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/descriptor/Type1DescriptorHelper.java
 Sat Dec 22 14:59:43 2012
@@ -82,7 +82,7 @@ public class Type1DescriptorHelper exten
                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.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is missing for " 
+ fontDescriptor.getFontName()));
                                this.fContainer.notEmbedded();
                                return null;
                        }
@@ -91,7 +91,7 @@ public class Type1DescriptorHelper exten
                        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"));
+                               this.fContainer.push(new 
ValidationError(ERROR_FONTS_FONT_FILEX_INVALID, "The FontFile is invalid for " 
+ fontDescriptor.getFontName()));
                                return null;
                        }
 


Reply via email to