You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/08/30 04:27:00 UTC
svn commit: r1621411 [7/7] - in /pdfbox/trunk: ./
examples/src/main/java/org/apache/pdfbox/examples/pdmodel/
fontbox/src/main/java/org/apache/fontbox/afm/
fontbox/src/main/java/org/apache/fontbox/cff/
fontbox/src/main/java/org/apache/fontbox/cff/charse...
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType0FontValidator.java Sat Aug 30 02:26:57 2014
@@ -22,7 +22,7 @@
package org.apache.pdfbox.preflight.font;
import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.font.container.CIDType0Container;
import org.apache.pdfbox.preflight.font.descriptor.CIDType0DescriptorHelper;
@@ -30,7 +30,7 @@ import org.apache.pdfbox.preflight.font.
public class CIDType0FontValidator extends DescendantFontValidator<CIDType0Container>
{
- public CIDType0FontValidator(PreflightContext context, PDFont font)
+ public CIDType0FontValidator(PreflightContext context, PDCIDFontType0 font)
{
super(context, font, new CIDType0Container(font));
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/CIDType2FontValidator.java Sat Aug 30 02:26:57 2014
@@ -22,7 +22,7 @@
package org.apache.pdfbox.preflight.font;
import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.font.container.CIDType2Container;
import org.apache.pdfbox.preflight.font.descriptor.CIDType2DescriptorHelper;
@@ -31,7 +31,7 @@ import org.apache.pdfbox.preflight.font.
public class CIDType2FontValidator extends DescendantFontValidator<CIDType2Container>
{
- public CIDType2FontValidator(PreflightContext context, PDFont font)
+ public CIDType2FontValidator(PreflightContext context, PDCIDFontType2 font)
{
super(context, font, new CIDType2Container(font));
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/DescendantFontValidator.java Sat Aug 30 02:26:57 2014
@@ -33,7 +33,7 @@ import org.apache.pdfbox.cos.COSDictiona
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.FontContainer;
@@ -42,20 +42,17 @@ import org.apache.pdfbox.preflight.utils
public abstract class DescendantFontValidator<T extends FontContainer> extends SimpleFontValidator<T>
{
-
protected COSDocument cosDocument = null;
- public DescendantFontValidator(PreflightContext context, PDFont font, T fContainer)
+ public DescendantFontValidator(PreflightContext context, PDCIDFont font, T fContainer)
{
- super(context, font, fContainer);
+ super(context, font.getCOSObject(), fContainer);
cosDocument = context.getDocument().getDocument();
}
@Override
protected void checkMandatoryField()
{
- COSDictionary fontDictionary = (COSDictionary) font.getCOSObject();
-
boolean arePresent = fontDictionary.containsKey(COSName.TYPE);
arePresent &= fontDictionary.containsKey(COSName.SUBTYPE);
arePresent &= fontDictionary.containsKey(COSName.BASE_FONT);
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/FontValidator.java Sat Aug 30 02:26:57 2014
@@ -21,7 +21,7 @@
package org.apache.pdfbox.preflight.font;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.exception.ValidationException;
import org.apache.pdfbox.preflight.font.container.FontContainer;
@@ -29,21 +29,18 @@ import org.apache.pdfbox.preflight.font.
public abstract class FontValidator<T extends FontContainer>
{
-
protected T fontContainer;
protected PreflightContext context;
- protected PDFont font;
protected FontDescriptorHelper<T> descriptorHelper;
private static final String SUB_SET_PATTERN = "^[A-Z]{6}\\+.*";
- public FontValidator(PreflightContext context, PDFont font, T fContainer)
+ public FontValidator(PreflightContext context, COSDictionary dict, T fContainer)
{
super();
this.context = context;
- this.font = font;
this.fontContainer = fContainer;
- this.context.addFontContainer(font.getCOSObject(), fContainer);
+ this.context.addFontContainer(dict, fContainer);
}
public static boolean isSubSet(String fontName)
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/SimpleFontValidator.java Sat Aug 30 02:26:57 2014
@@ -25,7 +25,7 @@ import static org.apache.pdfbox.prefligh
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -33,10 +33,19 @@ import org.apache.pdfbox.preflight.font.
public abstract class SimpleFontValidator<T extends FontContainer> extends FontValidator<T>
{
+ protected PDSimpleFont font;
+ protected COSDictionary fontDictionary;
- public SimpleFontValidator(PreflightContext context, PDFont font, T fContainer)
+ public SimpleFontValidator(PreflightContext context, PDSimpleFont font, T fContainer)
{
- super(context, font, fContainer);
+ super(context, font.getCOSObject(), fContainer);
+ this.fontDictionary = font.getCOSObject();
+ }
+
+ public SimpleFontValidator(PreflightContext context, COSDictionary fontDictionary, T fContainer)
+ {
+ super(context, fontDictionary, fContainer);
+ this.fontDictionary = fontDictionary;
}
/**
@@ -60,7 +69,6 @@ public abstract class SimpleFontValidato
protected void checkMandatoryField()
{
- COSDictionary fontDictionary = (COSDictionary) font.getCOSObject();
boolean areFieldsPResent = fontDictionary.containsKey(COSName.TYPE);
areFieldsPResent &= fontDictionary.containsKey(COSName.SUBTYPE);
areFieldsPResent &= fontDictionary.containsKey(COSName.BASE_FONT);
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/TrueTypeFontValidator.java Sat Aug 30 02:26:57 2014
@@ -28,8 +28,8 @@ import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.encoding.Encoding;
import org.apache.pdfbox.encoding.MacRomanEncoding;
import org.apache.pdfbox.encoding.WinAnsiEncoding;
-import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDFontDescriptor;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.TrueTypeContainer;
@@ -37,8 +37,7 @@ import org.apache.pdfbox.preflight.font.
public class TrueTypeFontValidator extends SimpleFontValidator<TrueTypeContainer>
{
-
- public TrueTypeFontValidator(PreflightContext context, PDFont font)
+ public TrueTypeFontValidator(PreflightContext context, PDTrueTypeFont font)
{
super(context, font, new TrueTypeContainer(font));
}
@@ -58,7 +57,7 @@ public class TrueTypeFontValidator exten
*/
if (fd.isNonSymbolic())
{
- Encoding encodingValue = this.font.getFontEncoding();
+ Encoding encodingValue = this.font.getEncoding();
if (encodingValue == null
|| !(encodingValue instanceof MacRomanEncoding || encodingValue instanceof WinAnsiEncoding))
{
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type0FontValidator.java Sat Aug 30 02:26:57 2014
@@ -24,6 +24,7 @@ package org.apache.pdfbox.preflight.font
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_CMAP_INVALID_OR_MISSING;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_INVALID;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CIDKEYED_SYSINFO;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_DAMAGED;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_CID_CMAP_DAMAGED;
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_DICTIONARY_INVALID;
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_DEFAULT_CMAP_WMODE;
@@ -46,8 +47,8 @@ import org.apache.pdfbox.cos.COSDictiona
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSStream;
-import org.apache.pdfbox.pdmodel.font.PDCIDFontType0Font;
-import org.apache.pdfbox.pdmodel.font.PDCIDFontType2Font;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import org.apache.pdfbox.preflight.PreflightContext;
@@ -59,12 +60,12 @@ import org.apache.pdfbox.preflight.utils
public class Type0FontValidator extends FontValidator<Type0Container>
{
-
+ protected PDFont font;
protected COSDocument cosDocument = null;
public Type0FontValidator(PreflightContext context, PDFont font)
{
- super(context, font, new Type0Container(font));
+ super(context, font.getCOSObject(), new Type0Container(font));
cosDocument = this.context.getDocument().getDocument();
}
@@ -157,22 +158,34 @@ public class Type0FontValidator extends
/**
* Create the validation object for CIDType0 Font
- *
- * @return
*/
protected FontValidator<? extends FontContainer> createCIDType0FontValidator(COSDictionary fDict)
{
- return new CIDType0FontValidator(context, new PDCIDFontType0Font(fDict, (PDType0Font)font));
+ try
+ {
+ return new CIDType0FontValidator(context, new PDCIDFontType0(fDict, (PDType0Font)font));
+ }
+ catch (IOException e)
+ {
+ this.fontContainer.push(new ValidationError(ERROR_FONTS_CID_DAMAGED, "The CIDType0 font is damaged"));
+ return null;
+ }
}
/**
* Create the validation object for CIDType2 Font
- *
- * @return
*/
protected FontValidator<? extends FontContainer> createCIDType2FontValidator(COSDictionary fDict)
{
- return new CIDType2FontValidator(context, new PDCIDFontType2Font(fDict, (PDType0Font)font));
+ try
+ {
+ return new CIDType2FontValidator(context, new PDCIDFontType2(fDict, (PDType0Font)font));
+ }
+ catch (IOException e)
+ {
+ this.fontContainer.push(new ValidationError(ERROR_FONTS_CID_DAMAGED, "The CIDType2 font is damaged"));
+ return null;
+ }
}
/**
@@ -180,8 +193,6 @@ public class Type0FontValidator extends
*
* The CMap entry must be a dictionary in a PDF/A. This entry can be a String only if the String value is Identity-H
* or Identity-V
- *
- * @param encoding
*/
protected void checkEncoding()
{
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type1FontValidator.java Sat Aug 30 02:26:57 2014
@@ -32,7 +32,7 @@ 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.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.font.container.Type1Container;
@@ -42,7 +42,7 @@ import org.apache.pdfbox.preflight.utils
public class Type1FontValidator extends SimpleFontValidator<Type1Container>
{
- public Type1FontValidator(PreflightContext context, PDFont font)
+ public Type1FontValidator(PreflightContext context, PDSimpleFont font)
{
super(context, font, new Type1Container(font));
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/Type3FontValidator.java Sat Aug 30 02:26:57 2014
@@ -28,6 +28,7 @@ import static org.apache.pdfbox.prefligh
import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_FONTS_TYPE3_DAMAGED;
import java.io.IOException;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -41,9 +42,11 @@ import org.apache.pdfbox.encoding.Dictio
import org.apache.pdfbox.encoding.Encoding;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.common.COSArrayList;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDFontFactory;
+import org.apache.pdfbox.pdmodel.font.PDType3Font;
import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
@@ -59,15 +62,17 @@ import org.apache.pdfbox.preflight.utils
public class Type3FontValidator extends FontValidator<Type3Container>
{
+ protected PDFont font;
protected COSDictionary fontDictionary;
protected COSDocument cosDocument;
protected Encoding encoding;
- public Type3FontValidator(PreflightContext context, PDFont font)
+ public Type3FontValidator(PreflightContext context, PDType3Font font)
{
- super(context, font, new Type3Container(font));
+ super(context, font.getCOSObject(), new Type3Container(font));
this.cosDocument = context.getDocument().getDocument();
- this.fontDictionary = (COSDictionary) font.getCOSObject();
+ this.fontDictionary = font.getCOSObject();
+ this.font = font;
}
public void validate() throws ValidationException
@@ -224,22 +229,13 @@ public class Type3FontValidator extends
{
// Encoding is a Name, check if it is an Existing Encoding
String enc = COSUtils.getAsString(fontEncoding, cosDocument);
- try
- {
- this.encoding = Encoding.getInstance(COSName.getPDFName(enc));
- }
- catch (IOException e)
- {
- // the encoding doesn't exist
- this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
- return;
- }
+ this.encoding = Encoding.getInstance(COSName.getPDFName(enc));
}
/**
* This method is called by the CheckEncoding method if the Encoding entry is an instance of COSDictionary. In this
* case, a new instance of {@link DictionaryEncoding} is created. If an IOException is thrown by the
- * DictionaryEncoding constructor the {@link PreflightConstants.ERROR_FONTS_ENCODING} is pushed in the
+ * DictionaryEncoding constructor the ERROR_FONTS_ENCODING is pushed in the
* FontContainer.
*
* Differences entry validation is implicitly done by the DictionaryEncoding constructor.
@@ -249,16 +245,7 @@ public class Type3FontValidator extends
private void checkEncodingAsDictionary(COSBase fontEncoding)
{
COSDictionary encodingDictionary = COSUtils.getAsDictionary(fontEncoding, cosDocument);
- try
- {
- this.encoding = new DictionaryEncoding(encodingDictionary);
- }
- catch (IOException e)
- {
- // the encoding doesn't exist
- this.fontContainer.push(new ValidationError(ERROR_FONTS_ENCODING));
- return;
- }
+ this.encoding = new DictionaryEncoding(encodingDictionary, false, null);
}
/**
@@ -269,13 +256,10 @@ public class Type3FontValidator extends
* the CharProcs doesn't know the Character, it is mapped with the .notdef one.
*
* For each character, the Glyph width must be the same as the Width value declared in the Widths array.
- *
- * @param errors
- * @return
*/
private void checkCharProcsAndMetrics() throws ValidationException
{
- List<Integer> widths = font.getWidths();
+ List<Integer> widths = getWidths(font);
if (widths == null || widths.isEmpty())
{
this.fontContainer.push(new ValidationError(ERROR_FONTS_DICTIONARY_INVALID,
@@ -291,8 +275,8 @@ public class Type3FontValidator extends
return;
}
- int fc = this.font.getFirstChar();
- int lc = this.font.getLastChar();
+ int fc = font.getCOSObject().getInt(COSName.FIRST_CHAR, -1);
+ int lc = font.getCOSObject().getInt(COSName.LAST_CHAR, -1);
/*
* wArr length = (lc - fc) + 1 and it is an array of int.
@@ -353,6 +337,21 @@ public class Type3FontValidator extends
}
}
+ public List<Integer> getWidths(PDFont font)
+ {
+ List<Integer> widths;
+ COSArray array = (COSArray) font.getCOSObject().getDictionaryObject(COSName.WIDTHS);
+ if (array != null)
+ {
+ widths = COSArrayList.convertIntegerCOSArrayToList(array);
+ }
+ else
+ {
+ widths = Collections.emptyList();
+ }
+ return widths;
+ }
+
private PDResources getPDResources()
{
COSBase res = this.fontDictionary.getItem(COSName.RESOURCES);
@@ -385,15 +384,7 @@ public class Type3FontValidator extends
private String getCharNameFromEncoding(int cid) throws ValidationException
{
- try
- {
- return this.encoding.getName(cid);
- }
- catch (IOException e)
- {
- // shouldn't occur
- throw new ValidationException("Unable to check Widths consistency", e);
- }
+ return this.encoding.getName(cid);
}
/**
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType0Container.java Sat Aug 30 02:26:57 2014
@@ -23,84 +23,35 @@ package org.apache.pdfbox.preflight.font
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
+import org.apache.fontbox.cff.CFFCIDFont;
import org.apache.fontbox.cff.CFFFont;
-import org.apache.fontbox.cff.CFFFont.Mapping;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType0;
+import org.apache.pdfbox.preflight.font.util.FontLike;
public class CIDType0Container extends FontContainer
{
protected List<CFFFont> lCFonts = new ArrayList<CFFFont>();
- public CIDType0Container(PDFont font)
+ public CIDType0Container(PDCIDFontType0 font)
{
- super(font);
+ super(new FontLike(font));
}
@Override
protected float getFontProgramWidth(int cid)
{
- // build the font container and keep it in the Handler.
- boolean cidFound = false;
- for (CFFFont font : this.lCFonts)
+ CFFCIDFont cffFont = (CFFCIDFont)lCFonts.get(0);
+ try
{
- Collection<Mapping> cMapping = font.getMappings();
- for (Mapping mapping : cMapping)
- {
- /*
- * REMARK : May be this code must be changed like the Type1FontContainer to Map the SID with the
- * character name? Not enough PDF with this kind of Font to test the current implementation
- */
- if (mapping.getSID() == cid)
- {
- cidFound = true;
- break;
- }
- }
- if (cidFound)
- {
- break;
- }
+ // fixme: this does not take into account the PDF's CMap or the FontDescriptor's default width
+ return cffFont.getType2CharString(cid).getWidth();
}
-
- float widthInFontProgram = 0;
- if (cidFound || cid == 0)
- {
-
- float defaultGlyphWidth = 0;
- if (this.font.getFontDescriptor() != null)
- {
- defaultGlyphWidth = this.font.getFontDescriptor().getMissingWidth();
- }
-
- try
- {
- // Search the CID in all CFFFont in the FontProgram
- for (CFFFont cff : this.lCFonts)
- {
- widthInFontProgram = cff.getWidth(cid);
- if (widthInFontProgram != defaultGlyphWidth)
- {
- break;
- }
- }
- }
- catch (IOException e)
- {
- widthInFontProgram = -1;
- }
- }
- else
+ catch (IOException e)
{
- /*
- * Cid 0 is commonly used as the NotDef Glyph. this glyph can be used as Space. IN PDF/A-1 the Notdef glyph
- * can be used as space. Not in PDF/A-2
- */
- widthInFontProgram = -1;
+ return -1;
}
- return widthInFontProgram;
}
public void setlCFonts(List<CFFFont> lCFonts)
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/CIDType2Container.java Sat Aug 30 02:26:57 2014
@@ -22,46 +22,56 @@
package org.apache.pdfbox.preflight.font.container;
import org.apache.fontbox.ttf.TrueTypeFont;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDCIDFontType2;
+import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.font.util.CIDToGIDMap;
+import org.apache.pdfbox.preflight.font.util.FontLike;
+import org.apache.pdfbox.preflight.font.util.GlyphException;
+
+import java.io.IOException;
public class CIDType2Container extends FontContainer
{
-
protected CIDToGIDMap cidToGid = null;
-
protected TrueTypeFont ttf = null;
- public CIDType2Container(PDFont font)
+ public CIDType2Container(PDCIDFontType2 font)
{
- super(font);
+ super(new FontLike(font));
}
@Override
- protected float getFontProgramWidth(int cid)
+ protected float getFontProgramWidth(int cid) throws GlyphException
{
float foundWidth = -1;
final int glyphIndex = getGlyphIndex(cid);
- // if glyph exists we can check the width
- if (this.ttf != null && this.ttf.getGlyph().getGlyphs().length > glyphIndex)
+ try
{
+ // if glyph exists we can check the width
+ if (this.ttf != null && this.ttf.getGlyph().getGlyphs().length > glyphIndex)
+ {
/*
* In a Mono space font program, the length of the AdvanceWidth array must be one. According to the TrueType
* font specification, the Last Value of the AdvanceWidth array is apply to the subsequent glyphs. So if the
* GlyphId is greater than the length of the array the last entry is used.
*/
- int numberOfLongHorMetrics = ttf.getHorizontalHeader().getNumberOfHMetrics();
- int unitsPerEm = ttf.getHeader().getUnitsPerEm();
- int[] advanceGlyphWidths = ttf.getHorizontalMetrics().getAdvanceWidth();
- float glypdWidth = advanceGlyphWidths[numberOfLongHorMetrics - 1];
- if (glyphIndex < numberOfLongHorMetrics)
- {
- glypdWidth = advanceGlyphWidths[glyphIndex];
+ int numberOfLongHorMetrics = ttf.getHorizontalHeader().getNumberOfHMetrics();
+ int unitsPerEm = ttf.getHeader().getUnitsPerEm();
+ int[] advanceGlyphWidths = ttf.getHorizontalMetrics().getAdvanceWidth();
+ float glypdWidth = advanceGlyphWidths[numberOfLongHorMetrics - 1];
+ if (glyphIndex < numberOfLongHorMetrics)
+ {
+ glypdWidth = advanceGlyphWidths[glyphIndex];
+ }
+ foundWidth = ((glypdWidth * 1000) / unitsPerEm);
}
- foundWidth = ((glypdWidth * 1000) / unitsPerEm);
+ return foundWidth;
+ }
+ catch (IOException e)
+ {
+ throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
}
- return foundWidth;
}
/**
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/FontContainer.java Sat Aug 30 02:26:57 2014
@@ -21,6 +21,7 @@
package org.apache.pdfbox.preflight.font.container;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -29,6 +30,7 @@ import java.util.Map;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
+import org.apache.pdfbox.preflight.font.util.FontLike;
import org.apache.pdfbox.preflight.font.util.GlyphDetail;
import org.apache.pdfbox.preflight.font.util.GlyphException;
@@ -51,11 +53,15 @@ public abstract class FontContainer
protected boolean errorsAleadyMerged = false;
- protected PDFont font;
+ protected FontLike font;
public FontContainer(PDFont font)
{
- super();
+ this.font = new FontLike(font);
+ }
+
+ public FontContainer(FontLike font)
+ {
this.font = font;
}
@@ -101,19 +107,25 @@ public abstract class FontContainer
/**
*
- * @param cid
+ * @param cid todo: not a CID, this is actually a char code!
* @throws GlyphException
*/
- public void checkGlyphWith(int cid) throws GlyphException
+ public void checkGlyphWidth(int cid) throws GlyphException
{
if (isAlreadyComputedCid(cid))
{
return;
}
-
- final float expectedWidth = this.font.getFontWidth(cid);
- final float foundWidth = getFontProgramWidth(cid);
- checkWidthsConsistency(cid, expectedWidth, foundWidth);
+ try
+ {
+ final float expectedWidth = this.font.getWidth(cid);
+ final float foundWidth = getFontProgramWidth(cid);
+ checkWidthsConsistency(cid, expectedWidth, foundWidth);
+ }
+ catch (IOException e)
+ {
+ throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
+ }
}
/**
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/TrueTypeContainer.java Sat Aug 30 02:26:57 2014
@@ -25,22 +25,25 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.fontbox.ttf.CMAPEncodingEntry;
-import org.apache.fontbox.ttf.CMAPTable;
+import org.apache.fontbox.ttf.CmapSubtable;
+import org.apache.fontbox.ttf.CmapTable;
import org.apache.fontbox.ttf.TrueTypeFont;
import org.apache.pdfbox.encoding.Encoding;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.encoding.GlyphList;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
+import org.apache.pdfbox.preflight.PreflightConstants;
+import org.apache.pdfbox.preflight.font.util.GlyphException;
public class TrueTypeContainer extends FontContainer
{
-
protected TrueTypeFont ttFont;
+ private CmapSubtable[] cmapEncodingEntries = null;
+ private PDTrueTypeFont trueTypeFont;
- private CMAPEncodingEntry[] cmapEncodingEntries = null;
-
- public TrueTypeContainer(PDFont font)
+ public TrueTypeContainer(PDTrueTypeFont font)
{
super(font);
+ this.trueTypeFont = font;
}
public void setTrueTypeFont(TrueTypeFont ttFont)
@@ -65,22 +68,29 @@ public class TrueTypeContainer extends F
if (this.cmapEncodingEntries != null)
return;
- CMAPTable cmap = this.ttFont.getCMAP();
- if (this.font.getFontDescriptor().isSymbolic())
+ try
{
- this.cmapEncodingEntries = cmap.getCmaps();
+ CmapTable cmap = this.ttFont.getCmap();
+ if (this.trueTypeFont.getFontDescriptor().isSymbolic())
+ {
+ this.cmapEncodingEntries = cmap.getCmaps();
+ }
+ else
+ {
+ this.cmapEncodingEntries = orderCMapEntries(cmap);
+ }
}
- else
+ catch (IOException e)
{
- this.cmapEncodingEntries = orderCMapEntries(cmap);
+ return;
}
}
- private CMAPEncodingEntry[] orderCMapEntries(CMAPTable cmap)
+ private CmapSubtable[] orderCMapEntries(CmapTable cmap)
{
- List<CMAPEncodingEntry> res = new ArrayList<CMAPEncodingEntry>();
+ List<CmapSubtable> res = new ArrayList<CmapSubtable>();
boolean firstIs31 = false;
- for (CMAPEncodingEntry cmapEntry : cmap.getCmaps())
+ for (CmapSubtable cmapEntry : cmap.getCmaps())
{
// WinAnsi
if ((cmapEntry.getPlatformId() == 3) && (cmapEntry.getPlatformEncodingId() == 1))
@@ -107,26 +117,33 @@ public class TrueTypeContainer extends F
res.add(cmapEntry);
}
}
- return res.toArray(new CMAPEncodingEntry[res.size()]);
+ return res.toArray(new CmapSubtable[res.size()]);
}
@Override
- protected float getFontProgramWidth(int cid)
+ protected float getFontProgramWidth(int cid) throws GlyphException
{
- float result = -1f;
- if (cmapEncodingEntries != null)
+ try
{
- for (CMAPEncodingEntry entry : cmapEncodingEntries)
+ float result = -1f;
+ if (cmapEncodingEntries != null)
{
- int glyphID = extractGlyphID(cid, entry);
- if (glyphID > 0)
+ for (CmapSubtable entry : cmapEncodingEntries)
{
- result = extractGlyphWidth(glyphID);
- break;
+ int glyphID = extractGlyphID(cid, entry);
+ if (glyphID > 0)
+ {
+ result = extractGlyphWidth(glyphID);
+ break;
+ }
}
}
+ return result;
+ }
+ catch (IOException e)
+ {
+ throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH, cid, "Unexpected error during the width validtion for the character CID(" + cid+") : " + e.getMessage());
}
- return result;
}
/**
@@ -137,52 +154,45 @@ public class TrueTypeContainer extends F
* @param cmap
* @return
*/
- private int extractGlyphID(int cid, CMAPEncodingEntry cmap)
+ private int extractGlyphID(int cid, CmapSubtable cmap)
{
int notFoundGlyphID = 0;
int innerFontCid = cid;
if (cmap.getPlatformEncodingId() == 1 && cmap.getPlatformId() == 3)
{
- try
+ Encoding fontEncoding = this.trueTypeFont.getEncoding();
+ String name = fontEncoding.getName(cid);
+ String character = GlyphList.toUnicode(name);
+ if (character == null)
{
- Encoding fontEncoding = this.font.getFontEncoding();
- String character = fontEncoding.getCharacter(cid);
- if (character == null)
- {
- return notFoundGlyphID;
- }
+ return notFoundGlyphID;
+ }
- char[] characterArray = character.toCharArray();
- if (characterArray.length == 1)
- {
- innerFontCid = (int) characterArray[0];
- }
- else
+ char[] characterArray = character.toCharArray();
+ if (characterArray.length == 1)
+ {
+ innerFontCid = (int) characterArray[0];
+ }
+ else
+ {
+ // TODO OD-PDFA-87 A faire?
+ innerFontCid = (int) characterArray[0];
+ for (int i = 1; i < characterArray.length; ++i)
{
- // TODO OD-PDFA-87 A faire?
- innerFontCid = (int) characterArray[0];
- for (int i = 1; i < characterArray.length; ++i)
+ if (cmap.getGlyphId((int) characterArray[i]) == 0)
{
- if (cmap.getGlyphId((int) characterArray[i]) == 0)
- {
- return notFoundGlyphID; // TODO what we have to do here ???
- }
+ return notFoundGlyphID; // TODO what we have to do here ???
}
}
}
- catch (IOException ioe)
- {
- // should never happen
- return notFoundGlyphID;
- }
}
// search glyph
return cmap.getGlyphId(innerFontCid);
}
- private float extractGlyphWidth(int glyphID)
+ private float extractGlyphWidth(int glyphID) throws IOException
{
int unitsPerEm = this.ttFont.getHeader().getUnitsPerEm();
int[] glyphWidths = this.ttFont.getHorizontalMetrics().getAdvanceWidth();
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/container/Type1Container.java Sat Aug 30 02:26:57 2014
@@ -25,8 +25,8 @@ import java.io.IOException;
import java.util.List;
import org.apache.fontbox.cff.CFFFont;
-import org.apache.fontbox.cff.CFFFont.Mapping;
-import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.fontbox.cff.CFFType1Font;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.font.util.GlyphException;
import org.apache.pdfbox.preflight.font.util.Type1;
@@ -47,14 +47,21 @@ public class Type1Container extends Font
protected Type1 type1Font;
protected List<CFFFont> lCFonts;
- public Type1Container(PDFont font)
+ private PDSimpleFont simpleFont;
+
+ public Type1Container(PDSimpleFont font)
{
super(font);
+ this.simpleFont = font;
}
@Override
protected float getFontProgramWidth(int cid) throws GlyphException
{
+ // fixme: Type 1 fonts don't use CIDs, so this method makes little sense,
+ // when making changes I've assumed that "cid" is actually the character code
+ // from the PDF content stream.
+
float widthResult = -1;
try
{
@@ -67,42 +74,15 @@ public class Type1Container extends Font
}
else
{
- /*
- * Retrieves the SID with the Character Name in the encoding map Need
- * more PDF with a Type1C subfont to valid this implementation
- */
- String name = null;
- if (this.font.getFontEncoding() != null) {
- name = this.font.getFontEncoding().getName(cid);
- }
-
- int SID = -1;
-
- /* For each CFF, try to found the SID that correspond to the CID.
- * Look up by name if the encoding entry is present in the PDFont object
- * otherwise use the internal encoding map of the font.
- */
- for (CFFFont cff : lCFonts)
- {
- if (name == null) {
- SID = cff.getEncoding().getSID(cid);
- } else {
- SID = getSIDByCharacterName(name, cff);
- }
-
- if (SID > 0) {
- widthResult = cff.getWidth(SID);
- if (widthResult != defaultGlyphWidth)
- {
- break;
- }
- }
- }
-
- if (SID < 0)
+ // assuming that "cid" is actually the character code
+ String name = simpleFont.getEncoding().getName(cid);
+ if (name.equals(".notdef"))
{
throw new GlyphException(PreflightConstants.ERROR_FONTS_GLYPH_MISSING, cid, "Unknown character CID(" + cid+")");
}
+
+ CFFType1Font cffFont = (CFFType1Font)lCFonts.get(0);
+ widthResult = cffFont.getType1CharString(name).getWidth();
}
}
catch (IOException e)
@@ -113,27 +93,6 @@ public class Type1Container extends Font
return widthResult;
}
- /**
- * Return the SID of the given character name.
- *
- * @param name the character name looked up
- * @param cff Compact Font Format that represents a sub set of the Type1C Font.
- * @return -1 if the name is missing from the Font encoding map, the SID of the character if it is present in the CFF.
- */
- private int getSIDByCharacterName(String name, CFFFont cff)
- {
- int SID = -1;
- for (Mapping m : cff.getMappings())
- {
- if (m.getName().equals(name))
- {
- SID = m.getSID();
- break;
- }
- }
- return SID;
- }
-
public void setType1Font(Type1 type1Font)
{
this.type1Font = type1Font;
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=1621411&r1=1621410&r2=1621411&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 Aug 30 02:26:57 2014
@@ -83,7 +83,7 @@ public class TrueTypeDescriptorHelper ex
bis = new ByteArrayInputStream(fontFile.getByteArray());
TrueTypeFont ttf = new TTFParser(true).parseTTF(bis);
- if (fontDescriptor.isSymbolic() && ttf.getCMAP().getCmaps().length != 1)
+ if (fontDescriptor.isSymbolic() && ttf.getCmap().getCmaps().length != 1)
{
this.fContainer.push(new ValidationError(ERROR_FONTS_ENCODING,
"The Encoding should be missing for the Symbolic TTF"));
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=1621411&r1=1621410&r2=1621411&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 Aug 30 02:26:57 2014
@@ -44,6 +44,7 @@ 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.pdmodel.font.PDSimpleFont;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.exception.ValidationException;
@@ -151,7 +152,7 @@ public class Type1DescriptorHelper exten
int length2 = streamObj.getInt(COSName.LENGTH2);
bis = new ByteArrayInputStream(fontFile.getByteArray());
Type1Parser parserForMetrics = Type1Parser.createParserWithEncodingObject(bis, length1, length2,
- font.getFontEncoding());
+ ((PDSimpleFont) font).getEncoding());
Type1 parsedData = parserForMetrics.parse();
this.fContainer.setType1Font(parsedData);
@@ -173,8 +174,7 @@ public class Type1DescriptorHelper exten
/**
* Type1C is a CFF font format, extract all CFFFont object from the stream
- *
- * @param fontStream
+ *
* @return
* @throws ValidationException
*/
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1.java Sat Aug 30 02:26:57 2014
@@ -450,21 +450,7 @@ public class Type1
private String getLabelAsName(int cid)
{
- String label = null;
-
- try
- {
- label = this.encoding.getName(cid);
- }
- catch (IOException e)
- {
- label = this.cidToLabel.get(cid);
- if (label == null)
- {
- label = Type1Parser.NOTDEF;
- }
- }
-
+ String label = this.encoding.getName(cid);
return label.charAt(0) == Type1Parser.NAME_START ? label : Type1Parser.NAME_START + label;
}
}
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/Type1Parser.java Sat Aug 30 02:26:57 2014
@@ -40,7 +40,6 @@ import org.apache.fontbox.cff.Type1CharS
import org.apache.fontbox.cff.Type1FontUtil;
import org.apache.pdfbox.encoding.Encoding;
import org.apache.pdfbox.encoding.MacRomanEncoding;
-import org.apache.pdfbox.encoding.PdfDocEncoding;
import org.apache.pdfbox.encoding.StandardEncoding;
import org.apache.pdfbox.encoding.WinAnsiEncoding;
@@ -155,10 +154,6 @@ public final class Type1Parser
{
encoding = new WinAnsiEncoding();
}
- else if (FONT_DICTIONARY_VALUE_ENCODING_PDFDOC.equals(encodingName))
- {
- encoding = new PdfDocEncoding();
- }
return encoding;
}
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=1621411&r1=1621410&r2=1621411&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 Aug 30 02:26:57 2014
@@ -32,6 +32,9 @@ import static org.apache.pdfbox.prefligh
import static org.apache.pdfbox.preflight.PreflightConstants.FONT_DICTIONARY_VALUE_TYPE3;
import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDSimpleFont;
+import org.apache.pdfbox.pdmodel.font.PDTrueTypeFont;
+import org.apache.pdfbox.pdmodel.font.PDType3Font;
import org.apache.pdfbox.preflight.PreflightConstants;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.PreflightPath;
@@ -82,15 +85,15 @@ public class FontValidationProcess exten
String subtype = font.getSubType();
if (FONT_DICTIONARY_VALUE_TRUETYPE.equals(subtype))
{
- return new TrueTypeFontValidator(context, font);
+ return new TrueTypeFontValidator(context, (PDTrueTypeFont)font);
}
else if (FONT_DICTIONARY_VALUE_MMTYPE.equals(subtype) || FONT_DICTIONARY_VALUE_TYPE1.equals(subtype))
{
- return new Type1FontValidator(context, font);
+ return new Type1FontValidator(context, (PDSimpleFont)font);
}
else if (FONT_DICTIONARY_VALUE_TYPE3.equals(subtype))
{
- return new Type3FontValidator(context, font);
+ return new Type3FontValidator(context, (PDType3Font)font);
}
else if (FONT_DICTIONARY_VALUE_COMPOSITE.equals(subtype))
{
Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java?rev=1621411&r1=1621410&r2=1621411&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/TextToPDF.java Sat Aug 30 02:26:57 2014
@@ -21,6 +21,8 @@ import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
@@ -42,6 +44,25 @@ public class TextToPDF
private int fontSize = 10;
private PDFont font = PDType1Font.HELVETICA;
+ private static final Map<String, PDType1Font> STANDARD_14 = new HashMap<String, PDType1Font>();
+ static
+ {
+ STANDARD_14.put(PDType1Font.TIMES_ROMAN.getBaseFont(), PDType1Font.TIMES_ROMAN);
+ STANDARD_14.put(PDType1Font.TIMES_BOLD.getBaseFont(), PDType1Font.TIMES_BOLD);
+ STANDARD_14.put(PDType1Font.TIMES_ITALIC.getBaseFont(), PDType1Font.TIMES_ITALIC);
+ STANDARD_14.put(PDType1Font.TIMES_BOLD_ITALIC.getBaseFont(), PDType1Font.TIMES_BOLD_ITALIC);
+ STANDARD_14.put(PDType1Font.HELVETICA.getBaseFont(), PDType1Font.HELVETICA);
+ STANDARD_14.put(PDType1Font.HELVETICA_BOLD.getBaseFont(), PDType1Font.HELVETICA_BOLD);
+ STANDARD_14.put(PDType1Font.HELVETICA_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_OBLIQUE);
+ STANDARD_14.put(PDType1Font.HELVETICA_BOLD_OBLIQUE.getBaseFont(), PDType1Font.HELVETICA_BOLD_OBLIQUE);
+ STANDARD_14.put(PDType1Font.COURIER.getBaseFont(), PDType1Font.COURIER);
+ STANDARD_14.put(PDType1Font.COURIER_BOLD.getBaseFont(), PDType1Font.COURIER_BOLD);
+ STANDARD_14.put(PDType1Font.COURIER_OBLIQUE.getBaseFont(), PDType1Font.COURIER_OBLIQUE);
+ STANDARD_14.put(PDType1Font.COURIER_BOLD_OBLIQUE.getBaseFont(), PDType1Font.COURIER_BOLD_OBLIQUE);
+ STANDARD_14.put(PDType1Font.SYMBOL.getBaseFont(), PDType1Font.SYMBOL);
+ STANDARD_14.put(PDType1Font.ZAPF_DINGBATS.getBaseFont(), PDType1Font.ZAPF_DINGBATS);
+ }
+
/**
* Create a PDF document with some text.
*
@@ -188,7 +209,7 @@ public class TextToPDF
if( args[i].equals( "-standardFont" ))
{
i++;
- app.setFont( PDType1Font.getStandardFont( args[i] ));
+ app.setFont( getStandardFont( args[i] ));
}
else if( args[i].equals( "-ttf" ))
{
@@ -224,7 +245,7 @@ public class TextToPDF
*/
private void usage()
{
- String[] std14 = PDType1Font.getStandard14Names();
+ String[] std14 = getStandard14Names();
System.err.println( "usage: jar -jar pdfbox-app-x.y.z.jar TextToPDF [options] <output-file> <text-file>" );
System.err.println( " -standardFont <name> default:" + PDType1Font.HELVETICA.getBaseFont() );
for (String std14String : std14)
@@ -233,9 +254,32 @@ public class TextToPDF
}
System.err.println( " -ttf <ttf file> The TTF font to use.");
System.err.println( " -fontSize <fontSize> default:10" );
+ }
+ /**
+ * A convenience method to get one of the standard 14 font from name.
+ *
+ * @param name The name of the font to get.
+ *
+ * @return The font that matches the name or null if it does not exist.
+ */
+ private static PDType1Font getStandardFont(String name)
+ {
+ return STANDARD_14.get(name);
}
+
+ /**
+ * This will get the names of the standard 14 fonts.
+ *
+ * @return An array of the names of the standard 14 fonts.
+ */
+ private static String[] getStandard14Names()
+ {
+ return STANDARD_14.keySet().toArray(new String[14]);
+ }
+
+
/**
* @return Returns the font.
*/