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;