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/09/18 22:14:19 UTC

svn commit: r1626070 [1/2] - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/util/ pdfbox/src/main/java/org/apache/pdfbox/encoding/ pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/fon...

Author: jahewson
Date: Thu Sep 18 20:14:17 2014
New Revision: 1626070

URL: http://svn.apache.org/r1626070
Log:
PDFBOX-2362: Remove .properties file usage in PDFStreamEngine

Added:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorN.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorN.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LegacyFillNonZeroRule.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetFlatness.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetRenderingIntent.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetFontAndSize.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetTextHorizontalScaling.java
      - copied, changed from r1625710, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetHorizontalTextScaling.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowTextAdjusted.java
      - copied, changed from r1625710, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowTextGlyph.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowTextLine.java
      - copied, changed from r1625710, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/MoveAndShow.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowTextLineAndSpace.java
      - copied, changed from r1625710, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetMoveAndShow.java
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist/
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist/additional_glyphlist.properties
      - copied unchanged from r1625710, pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/additional_glyphlist.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist/glyphlist.properties
      - copied unchanged from r1625710, pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist/zapf_dingbats.properties
      - copied unchanged from r1625710, pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/zapf_dingbats.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/version.properties
      - copied unchanged from r1625710, pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/pdfbox.properties
Removed:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/MoveAndShow.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetHorizontalTextScaling.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetMoveAndShow.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetTextFont.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowTextGlyph.java
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PDFGraphicsStreamEngine.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PDFMarkedContentExtractor.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PDFTextStripper.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/additional_glyphlist.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/glyphlist.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/pdfbox.properties
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/zapf_dingbats.properties
Modified:
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java
    pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/CMapManager.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFGraphicsStreamEngine.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMarkedContentExtractor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStreamEngine.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripperByArea.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/DrawObject.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Operator.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/OperatorProcessor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorSpace.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetGraphicsStateParameters.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineCapStyle.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineDashPattern.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineJoinStyle.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineMiterLimit.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineWidth.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetMatrix.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/BeginText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/EndText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/MoveText.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/MoveTextSetLeading.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/NextLine.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetCharSpacing.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetTextLeading.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetTextRenderingMode.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetTextRise.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/SetWordSpacing.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/text/ShowText.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/edit/TestPDPageContentStream.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightContentStream.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/StubOperator.java
    pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/font/util/PreflightType3Stream.java

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java Thu Sep 18 20:14:17 2014
@@ -27,10 +27,9 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.pdfbox.util.Matrix;
-import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.DrawObject;
 import org.apache.pdfbox.util.operator.Operator;
 import org.apache.pdfbox.util.PDFStreamEngine;
-import org.apache.pdfbox.util.ResourceLoader;
 
 import java.awt.geom.AffineTransform;
 import java.io.IOException;
@@ -38,6 +37,11 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
+import org.apache.pdfbox.util.operator.state.Concatenate;
+import org.apache.pdfbox.util.operator.state.Restore;
+import org.apache.pdfbox.util.operator.state.Save;
+import org.apache.pdfbox.util.operator.state.SetGraphicsStateParameters;
+import org.apache.pdfbox.util.operator.state.SetMatrix;
 
 /**
  * This is an example on how to get the x/y coordinates of image locations.
@@ -49,8 +53,6 @@ import org.apache.pdfbox.pdmodel.encrypt
  */
 public class PrintImageLocations extends PDFStreamEngine
 {
-    
-    private static final String INVOKE_OPERATOR = "Do";
     /**
      * Default constructor.
      *
@@ -58,8 +60,12 @@ public class PrintImageLocations extends
      */
     public PrintImageLocations() throws IOException
     {
-        super( ResourceLoader.loadProperties(
-                "org/apache/pdfbox/resources/PDFTextStripper.properties", true ) );
+        addOperator(new Concatenate());
+        addOperator(new DrawObject());
+        addOperator(new SetGraphicsStateParameters());
+        addOperator(new Save());
+        addOperator(new Restore());
+        addOperator(new SetMatrix());
     }
 
     /**
@@ -124,8 +130,8 @@ public class PrintImageLocations extends
      */
     protected void processOperator( Operator operator, List arguments ) throws IOException
     {
-        String operation = operator.getOperation();
-        if( INVOKE_OPERATOR.equals(operation) )
+        String operation = operator.getName();
+        if( "Do".equals(operation) )
         {
             COSName objectName = (COSName)arguments.get( 0 );
             Map<String, PDXObject> xobjects = getResources().getXObjects();

Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/RemoveAllText.java Thu Sep 18 20:14:17 2014
@@ -23,7 +23,6 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.common.PDStream;
 import org.apache.pdfbox.util.operator.Operator;
-import org.apache.pdfbox.util.operator.Operator;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -84,7 +83,7 @@ public class RemoveAllText
                         if( token instanceof Operator)
                         {
                             Operator op = (Operator)token;
-                            if( op.getOperation().equals( "TJ") || op.getOperation().equals( "Tj" ))
+                            if( op.getName().equals( "TJ") || op.getName().equals( "Tj" ))
                             {
                                 //remove the one argument to this operator
                                 newTokens.remove( newTokens.size() -1 );

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/GlyphList.java Thu Sep 18 20:14:17 2014
@@ -46,10 +46,10 @@ public class GlyphList
             DEFAULT = new GlyphList();
 
             // Loads the official glyph List based on adobes glyph list
-            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/glyphlist.properties");
+            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/glyphlist/glyphlist.properties");
 
             // Loads some additional glyph mappings
-            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/additional_glyphlist.properties");
+            DEFAULT.loadGlyphs("org/apache/pdfbox/resources/glyphlist/additional_glyphlist.properties");
 
             // Load an external glyph list file that user can give as JVM property
             try
@@ -71,7 +71,7 @@ public class GlyphList
 
             // Zapf Dingbats has its own glyph list
             ZAPF_DINGBATS = new GlyphList();
-            ZAPF_DINGBATS.loadGlyphs("org/apache/pdfbox/resources/zapf_dingbats.properties");
+            ZAPF_DINGBATS.loadGlyphs("org/apache/pdfbox/resources/glyphlist/zapf_dingbats.properties");
         }
         catch (IOException e)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ContentStreamWriter.java Thu Sep 18 20:14:17 2014
@@ -136,7 +136,7 @@ public class ContentStreamWriter
         else if( o instanceof Operator)
         {
             Operator op = (Operator)o;
-            if( op.getOperation().equals( "BI" ) )
+            if( op.getName().equals( "BI" ) )
             {
                 output.write( "BI".getBytes("ISO-8859-1") );
                 COSDictionary dic = op.getImageParameters();
@@ -154,7 +154,7 @@ public class ContentStreamWriter
             }
             else
             {
-                output.write( op.getOperation().getBytes("ISO-8859-1") );
+                output.write( op.getName().getBytes("ISO-8859-1") );
                 output.write( EOL );
             }
         }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/CMapManager.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/CMapManager.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/CMapManager.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/CMapManager.java Thu Sep 18 20:14:17 2014
@@ -18,7 +18,6 @@ package org.apache.pdfbox.pdmodel.font;
 
 import org.apache.fontbox.cmap.CMap;
 import org.apache.fontbox.cmap.CMapParser;
-import org.apache.pdfbox.util.ResourceLoader;
 
 import java.io.IOException;
 import java.io.InputStream;

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFGraphicsStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFGraphicsStreamEngine.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFGraphicsStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFGraphicsStreamEngine.java Thu Sep 18 20:14:17 2014
@@ -22,6 +22,68 @@ import org.apache.pdfbox.pdmodel.graphic
 
 import java.awt.geom.Point2D;
 import java.io.IOException;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingColor;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingColorN;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingColorSpace;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingDeviceCMYKColor;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingDeviceGrayColor;
+import org.apache.pdfbox.util.operator.color.SetNonStrokingDeviceRGBColor;
+import org.apache.pdfbox.util.operator.color.SetStrokingColor;
+import org.apache.pdfbox.util.operator.color.SetStrokingColorN;
+import org.apache.pdfbox.util.operator.color.SetStrokingColorSpace;
+import org.apache.pdfbox.util.operator.color.SetStrokingDeviceCMYKColor;
+import org.apache.pdfbox.util.operator.color.SetStrokingDeviceGrayColor;
+import org.apache.pdfbox.util.operator.color.SetStrokingDeviceRGBColor;
+import org.apache.pdfbox.util.operator.graphics.AppendRectangleToPath;
+import org.apache.pdfbox.util.operator.graphics.BeginInlineImage;
+import org.apache.pdfbox.util.operator.graphics.ClipEvenOddRule;
+import org.apache.pdfbox.util.operator.graphics.ClipNonZeroRule;
+import org.apache.pdfbox.util.operator.graphics.CloseAndStrokePath;
+import org.apache.pdfbox.util.operator.graphics.CloseFillEvenOddAndStrokePath;
+import org.apache.pdfbox.util.operator.graphics.CloseFillNonZeroAndStrokePath;
+import org.apache.pdfbox.util.operator.graphics.ClosePath;
+import org.apache.pdfbox.util.operator.graphics.CurveTo;
+import org.apache.pdfbox.util.operator.graphics.CurveToReplicateFinalPoint;
+import org.apache.pdfbox.util.operator.graphics.CurveToReplicateInitialPoint;
+import org.apache.pdfbox.util.operator.graphics.DrawObject;
+import org.apache.pdfbox.util.operator.graphics.EndPath;
+import org.apache.pdfbox.util.operator.graphics.FillEvenOddAndStrokePath;
+import org.apache.pdfbox.util.operator.graphics.FillEvenOddRule;
+import org.apache.pdfbox.util.operator.graphics.FillNonZeroAndStrokePath;
+import org.apache.pdfbox.util.operator.graphics.FillNonZeroRule;
+import org.apache.pdfbox.util.operator.graphics.LegacyFillNonZeroRule;
+import org.apache.pdfbox.util.operator.graphics.LineTo;
+import org.apache.pdfbox.util.operator.graphics.MoveTo;
+import org.apache.pdfbox.util.operator.graphics.ShadingFill;
+import org.apache.pdfbox.util.operator.graphics.StrokePath;
+import org.apache.pdfbox.util.operator.state.Concatenate;
+import org.apache.pdfbox.util.operator.state.Restore;
+import org.apache.pdfbox.util.operator.state.Save;
+import org.apache.pdfbox.util.operator.state.SetFlatness;
+import org.apache.pdfbox.util.operator.state.SetGraphicsStateParameters;
+import org.apache.pdfbox.util.operator.state.SetLineCapStyle;
+import org.apache.pdfbox.util.operator.state.SetLineDashPattern;
+import org.apache.pdfbox.util.operator.state.SetLineJoinStyle;
+import org.apache.pdfbox.util.operator.state.SetLineMiterLimit;
+import org.apache.pdfbox.util.operator.state.SetLineWidth;
+import org.apache.pdfbox.util.operator.state.SetMatrix;
+import org.apache.pdfbox.util.operator.state.SetRenderingIntent;
+import org.apache.pdfbox.util.operator.text.BeginText;
+import org.apache.pdfbox.util.operator.text.EndText;
+import org.apache.pdfbox.util.operator.text.SetFontAndSize;
+import org.apache.pdfbox.util.operator.text.SetTextHorizontalScaling;
+import org.apache.pdfbox.util.operator.text.ShowTextAdjusted;
+import org.apache.pdfbox.util.operator.text.ShowTextLine;
+import org.apache.pdfbox.util.operator.text.ShowTextLineAndSpace;
+import org.apache.pdfbox.util.operator.text.MoveText;
+import org.apache.pdfbox.util.operator.text.MoveTextSetLeading;
+import org.apache.pdfbox.util.operator.text.NextLine;
+import org.apache.pdfbox.util.operator.text.SetCharSpacing;
+import org.apache.pdfbox.util.operator.text.SetTextLeading;
+import org.apache.pdfbox.util.operator.text.SetTextRenderingMode;
+import org.apache.pdfbox.util.operator.text.SetTextRise;
+import org.apache.pdfbox.util.operator.text.SetWordSpacing;
+import org.apache.pdfbox.util.operator.text.ShowText;
 
 /**
  * PDFStreamEngine subclass for advanced processing of graphics.
@@ -35,16 +97,74 @@ public abstract class PDFGraphicsStreamE
     private final PDPage page;
 
     /**
-     * Default constructor, loads properties from file.
-     *
-     * @throws java.io.IOException If there is an error loading properties from the file.
+     * Constructor.
      */
-    protected PDFGraphicsStreamEngine(PDPage page) throws IOException
+    protected PDFGraphicsStreamEngine(PDPage page)
     {
-        super(ResourceLoader
-                .loadProperties("org/apache/pdfbox/resources/PDFGraphicsStreamEngine.properties",
-                                true));
         this.page = page;
+
+        addOperator(new CloseFillNonZeroAndStrokePath());
+        addOperator(new FillNonZeroAndStrokePath());
+        addOperator(new CloseFillEvenOddAndStrokePath());
+        addOperator(new FillEvenOddAndStrokePath());
+        addOperator(new BeginInlineImage());
+        addOperator(new BeginText());
+        addOperator(new CurveTo());
+        addOperator(new Concatenate());
+        addOperator(new SetStrokingColorSpace());
+        addOperator(new SetNonStrokingColorSpace());
+        addOperator(new SetLineDashPattern());
+        addOperator(new DrawObject()); // special graphics version
+        addOperator(new EndText());
+        addOperator(new FillNonZeroRule());
+        addOperator(new LegacyFillNonZeroRule());
+        addOperator(new FillEvenOddRule());
+        addOperator(new SetStrokingDeviceGrayColor());
+        addOperator(new SetNonStrokingDeviceGrayColor());
+        addOperator(new SetGraphicsStateParameters());
+        addOperator(new ClosePath());
+        addOperator(new SetFlatness());
+        addOperator(new SetLineJoinStyle());
+        addOperator(new SetLineCapStyle());
+        addOperator(new SetStrokingDeviceCMYKColor());
+        addOperator(new SetNonStrokingDeviceCMYKColor());
+        addOperator(new LineTo());
+        addOperator(new MoveTo());
+        addOperator(new SetLineMiterLimit());
+        addOperator(new EndPath());
+        addOperator(new Save());
+        addOperator(new Restore());
+        addOperator(new AppendRectangleToPath());
+        addOperator(new SetStrokingDeviceRGBColor());
+        addOperator(new SetNonStrokingDeviceRGBColor());
+        addOperator(new SetRenderingIntent());
+        addOperator(new CloseAndStrokePath());
+        addOperator(new StrokePath());
+        addOperator(new SetStrokingColor());
+        addOperator(new SetNonStrokingColor());
+        addOperator(new SetStrokingColorN());
+        addOperator(new SetNonStrokingColorN());
+        addOperator(new ShadingFill());
+        addOperator(new NextLine());
+        addOperator(new SetCharSpacing());
+        addOperator(new MoveText());
+        addOperator(new MoveTextSetLeading());
+        addOperator(new SetFontAndSize());
+        addOperator(new ShowText());
+        addOperator(new ShowTextAdjusted());
+        addOperator(new SetTextLeading());
+        addOperator(new SetMatrix());
+        addOperator(new SetTextRenderingMode());
+        addOperator(new SetTextRise());
+        addOperator(new SetWordSpacing());
+        addOperator(new SetTextHorizontalScaling());
+        addOperator(new CurveToReplicateInitialPoint());
+        addOperator(new SetLineWidth());
+        addOperator(new ClipNonZeroRule());
+        addOperator(new ClipEvenOddRule());
+        addOperator(new CurveToReplicateFinalPoint());
+        addOperator(new ShowTextLine());
+        addOperator(new ShowTextLineAndSpace());
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMarkedContentExtractor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMarkedContentExtractor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMarkedContentExtractor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMarkedContentExtractor.java Thu Sep 18 20:14:17 2014
@@ -16,12 +16,10 @@
  */
 package org.apache.pdfbox.util;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Stack;
 
 import org.apache.pdfbox.cos.COSDictionary;
@@ -30,20 +28,21 @@ import org.apache.pdfbox.pdmodel.documen
 import org.apache.pdfbox.pdmodel.graphics.PDXObject;
 import org.apache.pdfbox.text.TextNormalize;
 import org.apache.pdfbox.text.TextPosition;
+import org.apache.pdfbox.util.operator.markedcontent.BeginMarkedContentSequence;
+import org.apache.pdfbox.util.operator.markedcontent.BeginMarkedContentSequenceWithProperties;
+import org.apache.pdfbox.util.operator.markedcontent.EndMarkedContentSequence;
 
 /**
  * This is an stream engine to extract the marked content of a pdf.
- * @author koch
- * @version $Revision$
+ *
+ * @author Johannes Koch
  */
 public class PDFMarkedContentExtractor extends PDFTextStreamEngine
 {
     private boolean suppressDuplicateOverlappingText = true;
     private List<PDMarkedContent> markedContents = new ArrayList<PDMarkedContent>();
     private Stack<PDMarkedContent> currentMarkedContents = new Stack<PDMarkedContent>();
-
-    private Map<String, List<TextPosition>> characterListMapping =
-        new HashMap<String, List<TextPosition>>();
+    private Map<String, List<TextPosition>> characterListMapping = new HashMap<String, List<TextPosition>>();
 
     /**
      * encoding that text will be written in (or null).
@@ -57,56 +56,31 @@ public class PDFMarkedContentExtractor e
     private TextNormalize normalize = null;
 
     /**
-     * Instantiate a new PDFTextStripper object. This object will load
-     * properties from PDFMarkedContentExtractor.properties and will not
-     * do anything special to convert the text to a more encoding-specific
-     * output.
-     *
-     * @throws IOException If there is an error loading the properties.
-     */
-    public PDFMarkedContentExtractor() throws IOException
-    {
-        super( ResourceLoader.loadProperties(
-                "org/apache/pdfbox/resources/PDFMarkedContentExtractor.properties", true ) );
-        this.outputEncoding = null;
-        this.normalize = new TextNormalize(this.outputEncoding);
-    }
-
-
-    /**
-     * Instantiate a new PDFTextStripper object.  Loading all of the operator mappings
-     * from the properties object that is passed in.  Does not convert the text
-     * to more encoding-specific output.
-     *
-     * @param props The properties containing the mapping of operators to PDFOperator
-     * classes.
-     *
-     * @throws IOException If there is an error reading the properties.
+     * Instantiate a new PDFTextStripper object. Will not do anything special to convert
+     * the text to a more encoding-specific output.
      */
-    public PDFMarkedContentExtractor( Properties props ) throws IOException
+    public PDFMarkedContentExtractor()
     {
-        super( props );
-        this.outputEncoding = null;
-        this.normalize = new TextNormalize(this.outputEncoding);
+        this(null);
     }
 
     /**
-     * Instantiate a new PDFTextStripper object. This object will load
-     * properties from PDFMarkedContentExtractor.properties and will apply
-     * encoding-specific conversions to the output text.
+     * Constructor. Will apply encoding-specific conversions to the output text.
      *
      * @param encoding The encoding that the output will be written in.
-     * @throws IOException If there is an error reading the properties.
      */
-    public PDFMarkedContentExtractor( String encoding ) throws IOException
+    public PDFMarkedContentExtractor(String encoding)
     {
-        super( ResourceLoader.loadProperties(
-                "org/apache/pdfbox/resources/PDFMarkedContentExtractor.properties", true ));
+        addOperator(new BeginMarkedContentSequenceWithProperties());
+        addOperator(new BeginMarkedContentSequence());
+        addOperator(new EndMarkedContentSequence());
+        // todo: DP - Marked Content Point
+        // todo: MP - Marked Content Point with Properties
+
         this.outputEncoding = encoding;
         this.normalize = new TextNormalize(this.outputEncoding);
     }
 
-
     /**
      * This will determine of two floating point numbers are within a specified variance.
      *
@@ -119,7 +93,6 @@ public class PDFMarkedContentExtractor e
         return second > first - variance && second < first + variance;
     }
 
-
     public void beginMarkedContentSequence(COSName tag, COSDictionary properties)
     {
         PDMarkedContent markedContent = PDMarkedContent.create(tag, properties);
@@ -155,7 +128,6 @@ public class PDFMarkedContentExtractor e
         }
     }
 
-
     /**
      * This will process a TextPosition object and add the
      * text to the list of characters on a page.  It takes care of
@@ -263,10 +235,8 @@ public class PDFMarkedContentExtractor e
         }
     }
 
-
     public List<PDMarkedContent> getMarkedContents()
     {
         return this.markedContents;
     }
-
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java Thu Sep 18 20:14:17 2014
@@ -23,14 +23,10 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
 import java.util.Stack;
 
 import org.apache.commons.logging.Log;
@@ -64,7 +60,6 @@ public class PDFStreamEngine
 {
     private static final Log LOG = LogFactory.getLog(PDFStreamEngine.class);
 
-    private final Set<String> unsupportedOperators = new HashSet<String>();
     private final Map<String, OperatorProcessor> operators = new HashMap<String, OperatorProcessor>();
 
     private Matrix textMatrix;
@@ -85,55 +80,6 @@ public class PDFStreamEngine
     }
 
     /**
-     * Constructor with engine properties. The property keys are all PDF operators, the values are
-     * class names used to execute those operators. An empty value means that the operator will be
-     * silently ignored.
-     * 
-     * @param properties The engine properties.
-     */
-    public PDFStreamEngine(Properties properties)
-    {
-        if (properties == null)
-        {
-            throw new NullPointerException("properties cannot be null");
-        }
-        Enumeration<?> names = properties.propertyNames();
-        for (Object name : Collections.list(names))
-        {
-            String operator = name.toString();
-            String processorClassName = properties.getProperty(operator);
-            if ("".equals(processorClassName))
-            {
-                unsupportedOperators.add(operator);
-            }
-            else
-            {
-                try
-                {
-                    Class<?> cls = Class.forName(processorClassName);
-                    OperatorProcessor processor = (OperatorProcessor) cls.newInstance();
-                    registerOperatorProcessor(operator, processor);
-                }
-                catch (ClassNotFoundException e)
-                {
-                    // should not happen
-                    throw new RuntimeException(e);
-                }
-                catch (InstantiationException e)
-                {
-                  // should not happen
-                  throw new RuntimeException(e);
-                }
-                catch (IllegalAccessException e)
-                {
-                  // should not happen
-                  throw new RuntimeException(e);
-                }
-            }
-        }
-    }
-
-    /**
      * Indicates if force parsing is activated.
      * 
      * @return true if force parsing is active
@@ -158,7 +104,9 @@ public class PDFStreamEngine
      * 
      * @param operator The operator as a string.
      * @param op Processor instance.
+     * @deprecated Use {@link #addOperator(OperatorProcessor)} instead
      */
+    @Deprecated
     public void registerOperatorProcessor(String operator, OperatorProcessor op)
     {
         op.setContext(this);
@@ -166,6 +114,17 @@ public class PDFStreamEngine
     }
 
     /**
+     * Adds an operator processor to the engine.
+     *
+     * @param op operator processor
+     */
+    public final void addOperator(OperatorProcessor op)
+    {
+        op.setContext(this);
+        operators.put(op.getName(), op);
+    }
+
+    /**
      * Initialises a stream for processing.
      *
      * @param drawingSize the size of the page
@@ -502,8 +461,8 @@ public class PDFStreamEngine
      */
     protected void processOperator(Operator operator, List<COSBase> arguments) throws IOException
     {
-        String operation = operator.getOperation();
-        OperatorProcessor processor = operators.get(operation);
+        String name = operator.getName();
+        OperatorProcessor processor = operators.get(name);
         if (processor != null)
         {
             processor.setContext(this);
@@ -511,18 +470,22 @@ public class PDFStreamEngine
         }
         else
         {
-            if (!unsupportedOperators.contains(operation))
-            {
-                if (LOG.isDebugEnabled())
-                {
-                    LOG.debug("unsupported/disabled operation: " + operation);
-                }
-                unsupportedOperators.add(operation);
-            }
+            unsupportedOperator(operator, arguments);
         }
     }
 
     /**
+     * Called when an unsupported operator is encountered.
+     *
+     * @param operator The unknown operator.
+     * @param arguments The list of arguments.
+     */
+    protected void unsupportedOperator(Operator operator, List<COSBase> arguments)
+    {
+        // overridden in subclasses
+    }
+
+    /**
      * @return Returns the XObjects.
      */
     public Map<String, PDXObject> getXObjects()

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStreamEngine.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStreamEngine.java Thu Sep 18 20:14:17 2014
@@ -28,7 +28,28 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.text.TextPosition;
 
 import java.io.IOException;
-import java.util.Properties;
+import org.apache.pdfbox.util.operator.DrawObject;
+import org.apache.pdfbox.util.operator.state.Concatenate;
+import org.apache.pdfbox.util.operator.state.Restore;
+import org.apache.pdfbox.util.operator.state.Save;
+import org.apache.pdfbox.util.operator.state.SetGraphicsStateParameters;
+import org.apache.pdfbox.util.operator.state.SetMatrix;
+import org.apache.pdfbox.util.operator.text.BeginText;
+import org.apache.pdfbox.util.operator.text.EndText;
+import org.apache.pdfbox.util.operator.text.SetFontAndSize;
+import org.apache.pdfbox.util.operator.text.SetTextHorizontalScaling;
+import org.apache.pdfbox.util.operator.text.ShowTextAdjusted;
+import org.apache.pdfbox.util.operator.text.ShowTextLine;
+import org.apache.pdfbox.util.operator.text.ShowTextLineAndSpace;
+import org.apache.pdfbox.util.operator.text.MoveText;
+import org.apache.pdfbox.util.operator.text.MoveTextSetLeading;
+import org.apache.pdfbox.util.operator.text.NextLine;
+import org.apache.pdfbox.util.operator.text.SetCharSpacing;
+import org.apache.pdfbox.util.operator.text.SetTextLeading;
+import org.apache.pdfbox.util.operator.text.SetTextRenderingMode;
+import org.apache.pdfbox.util.operator.text.SetTextRise;
+import org.apache.pdfbox.util.operator.text.SetWordSpacing;
+import org.apache.pdfbox.util.operator.text.ShowText;
 
 /**
  * PDFStreamEngine subclass for advanced processing of text via TextPosition.
@@ -44,20 +65,33 @@ public class PDFTextStreamEngine extends
     private int pageRotation;
     private PDRectangle pageSize;
 
-    private PDFTextStreamEngine()
-    {
-    }
-
     /**
-     * Constructor with engine properties. The property keys are all PDF operators, the values are
-     * class names used to execute those operators. An empty value means that the operator will be
-     * silently ignored.
-     *
-     * @param properties The engine properties.
+     * Constructor.
      */
-    public PDFTextStreamEngine(Properties properties)
+    public PDFTextStreamEngine()
     {
-        super(properties);
+        addOperator(new BeginText());
+        addOperator(new Concatenate());
+        addOperator(new DrawObject()); // special text version
+        addOperator(new EndText());
+        addOperator(new SetGraphicsStateParameters());
+        addOperator(new Save());
+        addOperator(new Restore());
+        addOperator(new NextLine());
+        addOperator(new SetCharSpacing());
+        addOperator(new MoveText());
+        addOperator(new MoveTextSetLeading());
+        addOperator(new SetFontAndSize());
+        addOperator(new ShowText());
+        addOperator(new ShowTextAdjusted());
+        addOperator(new SetTextLeading());
+        addOperator(new SetMatrix());
+        addOperator(new SetTextRenderingMode());
+        addOperator(new SetTextRise());
+        addOperator(new SetWordSpacing());
+        addOperator(new SetTextHorizontalScaling());
+        addOperator(new ShowTextLine());
+        addOperator(new ShowTextLineAndSpace());
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java Thu Sep 18 20:14:17 2014
@@ -180,40 +180,18 @@ public class PDFTextStripper extends PDF
     private boolean inParagraph;
 
     /**
-     * Instantiate a new PDFTextStripper object. This object will load
-     * properties from PDFTextStripper.properties and will not do
+     * Instantiate a new PDFTextStripper object. Will not do
      * anything special to convert the text to a more encoding-specific output.
      *
      * @throws IOException If there is an error loading the properties.
      */
     public PDFTextStripper() throws IOException
     {
-        super(ResourceLoader.loadProperties(
-                "org/apache/pdfbox/resources/PDFTextStripper.properties", true));
-        this.outputEncoding = null;
-        normalize = new TextNormalize(this.outputEncoding);
-    }
-
-    /**
-     * Instantiate a new PDFTextStripper object.  Loading all of the operator mappings
-     * from the properties object that is passed in.  Does not convert the text
-     * to more encoding-specific output.
-     *
-     * @param props The properties containing the mapping of operators to PDFOperator
-     * classes.
-     *
-     * @throws IOException If there is an error reading the properties.
-     */
-    public PDFTextStripper(Properties props) throws IOException
-    {
-        super(props);
-        this.outputEncoding = null;
-        normalize = new TextNormalize(this.outputEncoding);
+        this(null);
     }
 
     /**
-     * Instantiate a new PDFTextStripper object. This object will load
-     * properties from PDFTextStripper.properties and will apply
+     * Instantiate a new PDFTextStripper object. Will apply
      * encoding-specific conversions to the output text.
      *
      * @param encoding The encoding that the output will be written in.
@@ -221,8 +199,6 @@ public class PDFTextStripper extends PDF
      */
     public PDFTextStripper(String encoding) throws IOException
     {
-        super(ResourceLoader.loadProperties(
-                "org/apache/pdfbox/resources/PDFTextStripper.properties", true));
         this.outputEncoding = encoding;
         normalize = new TextNormalize(this.outputEncoding);
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripperByArea.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripperByArea.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripperByArea.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripperByArea.java Thu Sep 18 20:14:17 2014
@@ -24,7 +24,6 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Vector;
 
 import org.apache.pdfbox.cos.COSStream;
@@ -55,27 +54,8 @@ public class PDFTextStripperByArea exten
         super();
     }
 
-        
     /**
-     * Instantiate a new PDFTextStripperArea object. Loading all of the operator
-     * mappings from the properties object that is passed in. Does not convert
-     * the text to more encoding-specific output.
-     * 
-     * @param props
-     *            The properties containing the mapping of operators to
-     *            PDFOperator classes.
-     * 
-     * @throws IOException
-     *             If there is an error reading the properties.
-     */
-    public PDFTextStripperByArea(Properties props) throws IOException
-    {
-        super(props);
-    }
-
-    /**
-     * Instantiate a new PDFTextStripperArea object. This object will load
-     * properties from PDFTextStripper.properties and will apply
+     * Instantiate a new PDFTextStripperArea object. Will apply
      * encoding-specific conversions to the output text.
      * 
      * @param encoding

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/DrawObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/DrawObject.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/DrawObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/DrawObject.java Thu Sep 18 20:14:17 2014
@@ -62,4 +62,10 @@ public class DrawObject extends Operator
             context.showForm(form);
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "Do";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Operator.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Operator.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Operator.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Operator.java Thu Sep 18 20:14:17 2014
@@ -82,11 +82,11 @@ public class Operator
     }
 
     /**
-     * This will get the operation that this operator represents.
+     * This will get the name of the operator.
      *
      * @return The string representation of the operation.
      */
-    public String getOperation()
+    public String getName()
     {
         return theOperator;
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/OperatorProcessor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/OperatorProcessor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/OperatorProcessor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/OperatorProcessor.java Thu Sep 18 20:14:17 2014
@@ -63,4 +63,9 @@ public abstract class OperatorProcessor
      * @throws IOException if the operator cannot be processed
      */
     public abstract void process(Operator operator, List<COSBase> operands) throws IOException;
+
+    /**
+     * Returns the name of this operator, e.g. "BI".
+     */
+    public abstract String getName();
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColor.java Thu Sep 18 20:14:17 2014
@@ -20,7 +20,7 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 
 /**
- * sc,scn: Sets the colour to use for stroking non-stroking operations.
+ * sc: Sets the colour to use for stroking non-stroking operations.
  *
  * @author John Hewson
  */
@@ -52,4 +52,10 @@ public class SetNonStrokingColor extends
     {
         return context.getGraphicsState().getNonStrokingColorSpace();
     }
+
+    @Override
+    public String getName()
+    {
+        return "sc";
+    }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorN.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorN.java?rev=1626070&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorN.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorN.java Thu Sep 18 20:14:17 2014
@@ -0,0 +1,33 @@
+/*
+ * 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.util.operator.color;
+
+/**
+ * scn: Sets the colour to use for stroking non-stroking operations.
+ * Supports Pattern, Separation, DeviceN and ICCBased colour spaces.
+ *
+ * @author John Hewson
+ */
+public class SetNonStrokingColorN extends SetNonStrokingColor
+{
+    @Override
+    public String getName()
+    {
+        return "scn";
+    }
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorSpace.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorSpace.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingColorSpace.java Thu Sep 18 20:14:17 2014
@@ -56,4 +56,10 @@ public class SetNonStrokingColorSpace ex
             LOG.error("Missing color space: " + name.getName());
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "cs";
+    }
 }
\ No newline at end of file

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java Thu Sep 18 20:14:17 2014
@@ -37,4 +37,10 @@ public class SetNonStrokingDeviceCMYKCol
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceCMYK.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "k";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java Thu Sep 18 20:14:17 2014
@@ -37,4 +37,10 @@ public class SetNonStrokingDeviceGrayCol
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceGray.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "g";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java Thu Sep 18 20:14:17 2014
@@ -37,4 +37,10 @@ public class SetNonStrokingDeviceRGBColo
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceRGB.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "rg";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java Thu Sep 18 20:14:17 2014
@@ -20,7 +20,7 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 
 /**
- * SC,SCN: Sets the colour to use for stroking stroking operations.
+ * SC: Sets the colour to use for stroking stroking operations.
  *
  * @author John Hewson
  */
@@ -52,4 +52,10 @@ public class SetStrokingColor extends Se
     {
         return context.getGraphicsState().getStrokingColorSpace();
     }
+
+    @Override
+    public String getName()
+    {
+        return "SC";
+    }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorN.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorN.java?rev=1626070&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorN.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorN.java Thu Sep 18 20:14:17 2014
@@ -0,0 +1,33 @@
+/*
+ * 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.util.operator.color;
+
+/**
+ * SCN: Sets the colour to use for stroking stroking operations.
+ * Supports Pattern, Separation, DeviceN and ICCBased colour spaces.
+ *
+ * @author John Hewson
+ */
+public class SetStrokingColorN extends SetStrokingColor
+{
+    @Override
+    public String getName()
+    {
+        return "SCN";
+    }
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java Thu Sep 18 20:14:17 2014
@@ -56,4 +56,10 @@ public class SetStrokingColorSpace exten
             LOG.error("Missing color space: " + name.getName());
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "CS";
+    }
 }
\ No newline at end of file

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java Thu Sep 18 20:14:17 2014
@@ -36,4 +36,10 @@ public class SetStrokingDeviceCMYKColor 
         context.getGraphicsState().setStrokingColorSpace(PDDeviceCMYK.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "K";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java Thu Sep 18 20:14:17 2014
@@ -36,4 +36,10 @@ public class SetStrokingDeviceGrayColor 
         context.getGraphicsState().setStrokingColorSpace(PDDeviceGray.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "G";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java Thu Sep 18 20:14:17 2014
@@ -43,4 +43,10 @@ public class SetStrokingDeviceRGBColor e
         context.getGraphicsState().setStrokingColorSpace(PDDeviceRGB.INSTANCE);
         super.process(operator, arguments);
     }
+
+    @Override
+    public String getName()
+    {
+        return "RG";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java Thu Sep 18 20:14:17 2014
@@ -53,4 +53,10 @@ public final class AppendRectangleToPath
 
         context.appendRectangle(p0, p1, p2, p3);
     }
+
+    @Override
+    public String getName()
+    {
+        return "re";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java Thu Sep 18 20:14:17 2014
@@ -39,4 +39,10 @@ public final class BeginInlineImage exte
                                           context.getResources().getColorSpaces());
         context.drawImage(image);
     }
+
+    @Override
+    public String getName()
+    {
+        return "BI";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public final class ClipEvenOddRule exten
     {
         context.clip(GeneralPath.WIND_EVEN_ODD);
     }
+
+    @Override
+    public String getName()
+    {
+        return "W*";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public class ClipNonZeroRule extends Gra
     {
         context.clip(GeneralPath.WIND_NON_ZERO);
     }
+
+    @Override
+    public String getName()
+    {
+        return "W";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java Thu Sep 18 20:14:17 2014
@@ -36,4 +36,10 @@ public class CloseAndStrokePath extends 
         context.processOperator( "h", arguments );
         context.processOperator( "S", arguments );
     }
+
+    @Override
+    public String getName()
+    {
+        return "s";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java Thu Sep 18 20:14:17 2014
@@ -36,4 +36,10 @@ public final class CloseFillEvenOddAndSt
         context.processOperator("h", operands);  // ClosePath
         context.processOperator("B*", operands); // FillEvenOddAndStroke
     }
+
+    @Override
+    public String getName()
+    {
+        return "F";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public final class CloseFillNonZeroAndSt
         context.processOperator("h", operands);  // ClosePath
         context.processOperator("B", operands);  // FillNonZeroAndStroke
     }
+
+    @Override
+    public String getName()
+    {
+        return "b";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java Thu Sep 18 20:14:17 2014
@@ -34,4 +34,10 @@ public final class ClosePath extends Gra
     {
         context.closePath();
     }
+
+    @Override
+    public String getName()
+    {
+        return "h";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java Thu Sep 18 20:14:17 2014
@@ -49,4 +49,10 @@ public class CurveTo extends GraphicsOpe
                         (float) point2.getX(), (float) point2.getY(),
                         (float) point3.getX(), (float) point3.getY());
     }
+
+    @Override
+    public String getName()
+    {
+        return "c";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java Thu Sep 18 20:14:17 2014
@@ -46,4 +46,10 @@ public final class CurveToReplicateFinal
                         (float) point3.getX(), (float) point3.getY(),
                         (float) point3.getX(), (float) point3.getY());
     }
+
+    @Override
+    public String getName()
+    {
+        return "y";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java Thu Sep 18 20:14:17 2014
@@ -48,4 +48,10 @@ public class CurveToReplicateInitialPoin
                         (float) point2.getX(), (float) point2.getY(),
                         (float) point3.getX(), (float) point3.getY());
     }
+
+    @Override
+    public String getName()
+    {
+        return "v";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java Thu Sep 18 20:14:17 2014
@@ -108,4 +108,10 @@ public final class DrawObject extends Gr
             }
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "Do";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java Thu Sep 18 20:14:17 2014
@@ -34,4 +34,10 @@ public final class EndPath extends Graph
     {
         context.endPath();
     }
+
+    @Override
+    public String getName()
+    {
+        return "n";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java Thu Sep 18 20:14:17 2014
@@ -36,4 +36,10 @@ public final class FillEvenOddAndStrokeP
     {
         context.fillAndStrokePath(GeneralPath.WIND_EVEN_ODD);
     }
+
+    @Override
+    public String getName()
+    {
+        return "B*";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public final class FillEvenOddRule exten
     {
         context.fillPath(GeneralPath.WIND_EVEN_ODD);
     }
+
+    @Override
+    public String getName()
+    {
+        return "f*";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java Thu Sep 18 20:14:17 2014
@@ -37,4 +37,10 @@ public class FillNonZeroAndStrokePath ex
     {
         context.fillAndStrokePath(GeneralPath.WIND_NON_ZERO);
     }
+
+    @Override
+    public String getName()
+    {
+        return "B";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java Thu Sep 18 20:14:17 2014
@@ -24,15 +24,21 @@ import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.util.operator.Operator;
 
 /**
- * f,F Fill path using non zero winding rule.
+ * f Fill path using non zero winding rule.
  *
  * @author Ben Litchfield
  */
-public final class FillNonZeroRule extends GraphicsOperatorProcessor
+public class FillNonZeroRule extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(Operator operator, List<COSBase> operands) throws IOException
+    public final void process(Operator operator, List<COSBase> operands) throws IOException
     {
         context.fillPath(GeneralPath.WIND_NON_ZERO);
     }
+
+    @Override
+    public String getName()
+    {
+        return "f";
+    }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LegacyFillNonZeroRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LegacyFillNonZeroRule.java?rev=1626070&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LegacyFillNonZeroRule.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LegacyFillNonZeroRule.java Thu Sep 18 20:14:17 2014
@@ -0,0 +1,32 @@
+/*
+ * 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.util.operator.graphics;
+
+/**
+ * F Fill path using non zero winding rule. Included only for compatibility with Acrobat.
+ *
+ * @author John Hewson
+ */
+public final class LegacyFillNonZeroRule extends FillNonZeroRule
+{
+    @Override
+    public String getName()
+    {
+        return "F";
+    }
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java Thu Sep 18 20:14:17 2014
@@ -41,4 +41,10 @@ public class LineTo extends GraphicsOper
         Point2D pos = context.transformedPoint(x.doubleValue(), y.doubleValue());
         context.lineTo((float) pos.getX(), (float) pos.getY());
     }
+
+    @Override
+    public String getName()
+    {
+        return "l";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java Thu Sep 18 20:14:17 2014
@@ -39,4 +39,10 @@ public final class MoveTo extends Graphi
         Point2D pos = context.transformedPoint(x.doubleValue(), y.doubleValue());
         context.moveTo((float) pos.getX(), (float) pos.getY());
     }
+
+    @Override
+    public String getName()
+    {
+        return "m";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public final class ShadingFill extends G
     {
         context.shadingFill((COSName) operands.get(0));
     }
+
+    @Override
+    public String getName()
+    {
+        return "sh";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java Thu Sep 18 20:14:17 2014
@@ -35,4 +35,10 @@ public final class StrokePath extends Gr
     {
         context.strokePath();
     }
+
+    @Override
+    public String getName()
+    {
+        return "S";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java Thu Sep 18 20:14:17 2014
@@ -48,4 +48,10 @@ public class BeginMarkedContentSequence 
             ((PDFMarkedContentExtractor) this.context).beginMarkedContentSequence(tag, null);
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "BMC";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java Thu Sep 18 20:14:17 2014
@@ -54,4 +54,10 @@ public class BeginMarkedContentSequenceW
             ((PDFMarkedContentExtractor) this.context).beginMarkedContentSequence(tag, properties);
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "BDC";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java Thu Sep 18 20:14:17 2014
@@ -39,4 +39,10 @@ public class EndMarkedContentSequence ex
             ((PDFMarkedContentExtractor) this.context).endMarkedContentSequence();
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "EMC";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java Thu Sep 18 20:14:17 2014
@@ -55,4 +55,10 @@ public class Concatenate extends Operato
         context.getGraphicsState().setCurrentTransformationMatrix(
                 newMatrix.multiply(context.getGraphicsState().getCurrentTransformationMatrix()));
     }
+
+    @Override
+    public String getName()
+    {
+        return "cm";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java Thu Sep 18 20:14:17 2014
@@ -46,4 +46,10 @@ public class Restore extends OperatorPro
             LOG.error("GRestore: no graphics state left to be restored.");
         }
     }
+
+    @Override
+    public String getName()
+    {
+        return "Q";
+    }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java?rev=1626070&r1=1626069&r2=1626070&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java Thu Sep 18 20:14:17 2014
@@ -34,4 +34,10 @@ public class Save extends OperatorProces
     {
         context.saveGraphicsState();
     }
+
+    @Override
+    public String getName()
+    {
+        return "q";
+    }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetFlatness.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetFlatness.java?rev=1626070&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetFlatness.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetFlatness.java Thu Sep 18 20:14:17 2014
@@ -0,0 +1,46 @@
+/*
+ * 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.util.operator.state;
+
+import java.io.IOException;
+import java.util.List;
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
+
+/**
+ * i: Set the flatness tolerance.
+ *
+ * @author John Hewson
+ */
+public class SetFlatness extends OperatorProcessor
+{
+    @Override
+    public void process(Operator operator, List<COSBase> operands) throws IOException
+    {
+        COSNumber value = (COSNumber)operands.get(0);
+        context.getGraphicsState().setFlatness(value.floatValue());
+    }
+
+    @Override
+    public String getName()
+    {
+        return "i";
+    }
+}