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 2015/07/21 00:18:01 UTC

svn commit: r1692033 [2/2] - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/pdfparser/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/ pdfbox/src/test/java/org/ap...

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/SampledImageReader.java Mon Jul 20 22:18:00 2015
@@ -27,23 +27,17 @@ import java.awt.image.WritableRaster;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
-
+import javax.imageio.stream.ImageInputStream;
+import javax.imageio.stream.MemoryCacheImageInputStream;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.io.IOUtils;
-import org.apache.pdfbox.io.RandomAccessBuffer;
-import org.apache.pdfbox.io.RandomAccessRead;
+import org.apache.pdfbox.pdmodel.common.PDMemoryStream;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.color.PDIndexed;
 
-import javax.imageio.stream.ImageInputStream;
-import javax.imageio.stream.MemoryCacheImageInputStream;
-
-import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.pdmodel.common.PDMemoryStream;
-import org.apache.pdfbox.pdmodel.common.PDStream;
-
 /**
  * Reads a sampled image from a PDF file.
  * @author John Hewson
@@ -245,16 +239,7 @@ final class SampledImageReader
     private static BufferedImage from8bit(PDImage pdImage, WritableRaster raster)
             throws IOException
     {
-        RandomAccessRead input;
-        PDStream stream = pdImage.getStream();
-        if (stream instanceof PDMemoryStream)
-        {
-            input = new RandomAccessBuffer(stream.getByteArray());
-        }
-        else
-        {
-            input = stream.getStream().getUnfilteredRandomAccess();
-        }
+        InputStream input = pdImage.getStream().createInputStream();
         try
         {
             // get the raster's underlying byte buffer

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/AppearanceGeneratorHelper.java Mon Jul 20 22:18:00 2015
@@ -23,7 +23,6 @@ import java.io.OutputStream;
 import java.util.List;
 import org.apache.pdfbox.contentstream.operator.Operator;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.pdfparser.PDFStreamParser;
 import org.apache.pdfbox.pdfwriter.ContentStreamWriter;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -134,8 +133,7 @@ class AppearanceGeneratorHelper
      */
     private List<Object> tokenize(PDAppearanceStream appearanceStream) throws IOException
     {
-        COSStream stream = appearanceStream.getCOSStream();
-        PDFStreamParser parser = new PDFStreamParser(stream);
+        PDFStreamParser parser = new PDFStreamParser(appearanceStream);
         parser.parse();
         return parser.getTokens();
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAppearanceString.java Mon Jul 20 22:18:00 2015
@@ -18,12 +18,10 @@ package org.apache.pdfbox.pdmodel.intera
 
 import java.io.IOException;
 import java.util.List;
-
 import org.apache.pdfbox.contentstream.operator.Operator;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSString;
-import org.apache.pdfbox.io.RandomAccessBuffer;
 import org.apache.pdfbox.pdfparser.PDFStreamParser;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.PDResources;
@@ -64,7 +62,7 @@ class PDAppearanceString
             throw new IllegalArgumentException("/DR is a required entry");
         }
         
-        PDFStreamParser parser = new PDFStreamParser(new RandomAccessBuffer(defaultAppearance.getBytes()));
+        PDFStreamParser parser = new PDFStreamParser(defaultAppearance.getBytes());
         parser.parse();
         tokens = parser.getTokens();
         

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/PDFStreamParserTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/PDFStreamParserTest.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/PDFStreamParserTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfparser/PDFStreamParserTest.java Mon Jul 20 22:18:00 2015
@@ -17,11 +17,9 @@ package org.apache.pdfbox.pdfparser;
 
 import java.io.IOException;
 import java.util.List;
-
 import junit.framework.TestCase;
-
 import org.apache.pdfbox.contentstream.operator.Operator;
-import org.apache.pdfbox.io.RandomAccessBuffer;
+
 
 import static org.junit.Assert.assertArrayEquals;
 
@@ -116,7 +114,7 @@ public class PDFStreamParserTest extends
     // parse string and return list of tokens
     private List<Object> parseTokenString(String s) throws IOException
     {
-        PDFStreamParser pdfStreamParser = new PDFStreamParser(new RandomAccessBuffer(s.getBytes()));
+        PDFStreamParser pdfStreamParser = new PDFStreamParser(s.getBytes());
         pdfStreamParser.parse();
         return pdfStreamParser.getTokens();
     }

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestFDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestFDF.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestFDF.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestFDF.java Mon Jul 20 22:18:00 2015
@@ -19,15 +19,12 @@ package org.apache.pdfbox.pdmodel;
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
-
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
-
+import org.apache.pdfbox.contentstream.PDContentStream;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.cos.COSString;
-import org.apache.pdfbox.io.RandomAccessBuffer;
 import org.apache.pdfbox.pdfparser.PDFStreamParser;
 import org.apache.pdfbox.pdmodel.fdf.FDFDocument;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget;
@@ -246,9 +243,8 @@ public class TestFDF extends TestCase
     {
         PDAppearanceEntry normalAppearance = widget.getAppearance().getNormalAppearance();
         PDAppearanceStream appearanceStream = normalAppearance.getAppearanceStream();
-        COSStream actual = appearanceStream.getCOSStream();
 
-        List<Object> actualTokens = getStreamTokens( doc, actual );
+        List<Object> actualTokens = getStreamTokens( doc, appearanceStream );
         assertTrue( actualTokens.contains( new COSString( expected ) ) );
     }
 
@@ -257,9 +253,8 @@ public class TestFDF extends TestCase
         PDAnnotationWidget widget = field.getWidgets().get(0);
         PDAppearanceEntry normalAppearance = widget.getAppearance().getNormalAppearance();
         PDAppearanceStream appearanceStream = normalAppearance.getAppearanceStream();
-        COSStream actual = appearanceStream.getCOSStream();
 
-        List<Object> actualTokens = getStreamTokens( doc, actual );
+        List<Object> actualTokens = getStreamTokens( doc, appearanceStream );
         List<Object> expectedTokens = getStreamTokens( doc, expected );
         assertEquals( actualTokens.size(), expectedTokens.size() );
         for( int i=0; i<actualTokens.size(); i++ )
@@ -277,14 +272,14 @@ public class TestFDF extends TestCase
         List<Object> tokens = null;
         if( string != null )
         {
-            parser = new PDFStreamParser( new RandomAccessBuffer( string.getBytes() ) );
+            parser = new PDFStreamParser( string.getBytes() );
             parser.parse();
             tokens = parser.getTokens();
         }
         return tokens;
     }
 
-    private List<Object> getStreamTokens( PDDocument doc, COSStream stream ) throws IOException
+    private List<Object> getStreamTokens( PDDocument doc, PDContentStream stream ) throws IOException
     {
         PDFStreamParser parser;
 

Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/parser/PreflightParser.java Mon Jul 20 22:18:00 2015
@@ -21,26 +21,6 @@
 
 package org.apache.pdfbox.preflight.parser;
 
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_ARRAY_TOO_LONG;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CROSS_REF;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_EVEN_NUMBER;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_INVALID;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_TOO_LONG;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_INVALID_OFFSET;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_MISSING_OFFSET;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NAME_TOO_LONG;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NUMERIC_RANGE;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_DELIMITER;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TOO_MANY_ENTRIES;
-import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TRAILER_EOF;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_ARRAY_ELEMENTS;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_DICT_ENTRIES;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_NAME_SIZE;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_NEGATIVE_FLOAT;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_POSITIVE_FLOAT;
-import static org.apache.pdfbox.preflight.PreflightConstants.MAX_STRING_LENGTH;
-
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.Charset;
@@ -51,10 +31,8 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import javax.activation.DataSource;
 import javax.activation.FileDataSource;
-
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
@@ -81,6 +59,27 @@ import org.apache.pdfbox.preflight.Valid
 import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
 import org.apache.pdfbox.preflight.exception.SyntaxValidationException;
 
+
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_ARRAY_TOO_LONG;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_CROSS_REF;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_EVEN_NUMBER;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_INVALID;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_HEXA_STRING_TOO_LONG;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_INVALID_OFFSET;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_MISSING_OFFSET;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NAME_TOO_LONG;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_NUMERIC_RANGE;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_STREAM_DELIMITER;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TOO_MANY_ENTRIES;
+import static org.apache.pdfbox.preflight.PreflightConstants.ERROR_SYNTAX_TRAILER_EOF;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_ARRAY_ELEMENTS;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_DICT_ENTRIES;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_NAME_SIZE;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_NEGATIVE_FLOAT;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_POSITIVE_FLOAT;
+import static org.apache.pdfbox.preflight.PreflightConstants.MAX_STRING_LENGTH;
+
 public class PreflightParser extends PDFParser
 {
     /**
@@ -263,7 +262,7 @@ public class PreflightParser extends PDF
     {
         try
         {
-            pdfSource.seek(0);
+            source.seek(0);
             String firstLine = readLine();
             if (firstLine == null || !firstLine.matches("%PDF-1\\.[1-9]"))
             {
@@ -301,7 +300,7 @@ public class PreflightParser extends PDF
                             "Second line must begin with '%' followed by at least 4 bytes greater than 127"));
                 }
             }
-            pdfSource.seek(0);
+            source.seek(0);
         }
         catch (IOException e)
         {
@@ -322,7 +321,7 @@ public class PreflightParser extends PDF
     @Override
     protected boolean parseXrefTable(long startByteOffset) throws IOException
     {
-        if (pdfSource.peek() != 'x')
+        if (source.peek() != 'x')
         {
             return false;
         }
@@ -351,7 +350,7 @@ public class PreflightParser extends PDF
             // the number of objects in the xref table
             int count; 
 
-            long offset = pdfSource.getPosition();
+            long offset = source.getPosition();
             String line = readLine();
             Pattern pattern = Pattern.compile("(\\d+)\\s(\\d+)(\\s*)");
             Matcher matcher = pattern.matcher(line);
@@ -364,9 +363,9 @@ public class PreflightParser extends PDF
             {
                 addValidationError(new ValidationError(ERROR_SYNTAX_CROSS_REF,
                         "Cross reference subsection header is invalid: '" + line + "' at position "
-                                + pdfSource.getPosition()));
-                // reset pdfSource cursor to read xref information
-                pdfSource.seek(offset);
+                                + source.getPosition()));
+                // reset source cursor to read xref information
+                source.seek(offset);
                 // first obj id
                 currObjID = readObjectNumber();
                 // the number of objects in the xref table
@@ -376,11 +375,11 @@ public class PreflightParser extends PDF
             skipSpaces();
             for (int i = 0; i < count; i++)
             {
-                if (pdfSource.isEOF() || isEndOfName((char) pdfSource.peek()))
+                if (source.isEOF() || isEndOfName((char) source.peek()))
                 {
                     break;
                 }
-                if (pdfSource.peek() == 't')
+                if (source.peek() == 't')
                 {
                     addValidationError(new ValidationError(PreflightConstants.ERROR_SYNTAX_CROSS_REF,
                             "Expected xref line but 't' found"));
@@ -459,16 +458,16 @@ public class PreflightParser extends PDF
         if (!streamV.equals("stream"))
         {
             addValidationError(new ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
-                    "Expected 'stream' keyword but found '" + streamV + "' at offset "+pdfSource.getPosition()));
+                    "Expected 'stream' keyword but found '" + streamV + "' at offset "+source.getPosition()));
         }
-        int nextChar = pdfSource.read();
-        if (!((nextChar == 13 && pdfSource.peek() == 10) || nextChar == 10))
+        int nextChar = source.read();
+        if (!((nextChar == 13 && source.peek() == 10) || nextChar == 10))
         {
             addValidationError(new ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
-                    "Expected 'EOL' after the stream keyword at offset "+pdfSource.getPosition()));
+                    "Expected 'EOL' after the stream keyword at offset "+source.getPosition()));
         }
         // set the offset before stream
-        pdfSource.seek(pdfSource.getPosition() - 7);
+        source.seek(source.getPosition() - 7);
     }
 
     /**
@@ -478,27 +477,27 @@ public class PreflightParser extends PDF
      */
     protected void checkEndstreamKeyWord() throws IOException
     {
-        pdfSource.seek(pdfSource.getPosition() - 10);
+        source.seek(source.getPosition() - 10);
         if (!nextIsEOL())
         {
             addValidationError(new ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
-                    "Expected 'EOL' before the endstream keyword at offset "+pdfSource.getPosition()+" but found '"+pdfSource.peek()+"'"));
+                    "Expected 'EOL' before the endstream keyword at offset "+source.getPosition()+" but found '"+source.peek()+"'"));
         }
         String endstreamV = readString();
         if (!endstreamV.equals("endstream"))
         {
             addValidationError(new ValidationError(ERROR_SYNTAX_STREAM_DELIMITER,
-                    "Expected 'endstream' keyword at offset "+pdfSource.getPosition()+" but found '" + endstreamV + "'"));
+                    "Expected 'endstream' keyword at offset "+source.getPosition()+" but found '" + endstreamV + "'"));
         }
     }
 
     private boolean nextIsEOL() throws IOException
     {
         boolean succeed = false;
-        int nextChar = pdfSource.read();
-        if (ASCII_CR == nextChar && ASCII_LF == pdfSource.peek())
+        int nextChar = source.read();
+        if (ASCII_CR == nextChar && ASCII_LF == source.peek())
         {
-            pdfSource.read();
+            source.read();
             succeed = true;
         }
         else if (ASCII_CR == nextChar || ASCII_LF == nextChar)
@@ -549,14 +548,14 @@ public class PreflightParser extends PDF
     protected COSString parseCOSString() throws IOException
     {
         // offset reminder
-        long offset = pdfSource.getPosition();
-        char nextChar = (char) pdfSource.read();
+        long offset = source.getPosition();
+        char nextChar = (char) source.read();
         int count = 0;
         if (nextChar == '<')
         {
             do
             {
-                nextChar = (char) pdfSource.read();
+                nextChar = (char) source.read();
                 if (nextChar != '>')
                 {
                     if (isWhitespace(nextChar))
@@ -571,7 +570,7 @@ public class PreflightParser extends PDF
                     else
                     {
                         addValidationError(new ValidationError(ERROR_SYNTAX_HEXA_STRING_INVALID,
-                                "Hexa String must have only Hexadecimal Characters (found '" + nextChar + "') at offset " + pdfSource.getPosition()));
+                                "Hexa String must have only Hexadecimal Characters (found '" + nextChar + "') at offset " + source.getPosition()));
                         break;
                     }
                 }
@@ -582,16 +581,16 @@ public class PreflightParser extends PDF
         if (count % 2 != 0)
         {
             addValidationError(new ValidationError(ERROR_SYNTAX_HEXA_STRING_EVEN_NUMBER,
-                    "Hexa string shall contain even number of non white space char at offset " + pdfSource.getPosition()));
+                    "Hexa string shall contain even number of non white space char at offset " + source.getPosition()));
         }
 
         // reset the offset to parse the COSString
-        pdfSource.seek(offset);
+        source.seek(offset);
         COSString result = super.parseCOSString();
 
         if (result.getString().length() > MAX_STRING_LENGTH)
         {
-            addValidationError(new ValidationError(ERROR_SYNTAX_HEXA_STRING_TOO_LONG, "Hexa string is too long at offset "+pdfSource.getPosition()));
+            addValidationError(new ValidationError(ERROR_SYNTAX_HEXA_STRING_TOO_LONG, "Hexa string is too long at offset "+source.getPosition()));
         }
         return result;
     }
@@ -617,7 +616,7 @@ public class PreflightParser extends PDF
                 if (real > MAX_POSITIVE_FLOAT || real < MAX_NEGATIVE_FLOAT)
                 {
                     addValidationError(new ValidationError(ERROR_SYNTAX_NUMERIC_RANGE,
-                            "Float is too long or too small: " + real+"  at offset "+pdfSource.getPosition()));
+                            "Float is too long or too small: " + real+"  at offset "+source.getPosition()));
                 }
             }
             else
@@ -626,7 +625,7 @@ public class PreflightParser extends PDF
                 if (numAsLong > Integer.MAX_VALUE || numAsLong < Integer.MIN_VALUE)
                 {
                     addValidationError(new ValidationError(ERROR_SYNTAX_NUMERIC_RANGE,
-                            "Numeric is too long or too small: " + numAsLong+"  at offset "+pdfSource.getPosition()));
+                            "Numeric is too long or too small: " + numAsLong+"  at offset "+source.getPosition()));
                 }
             }
         }
@@ -636,7 +635,7 @@ public class PreflightParser extends PDF
             COSDictionary dic = (COSDictionary) result;
             if (dic.size() > MAX_DICT_ENTRIES)
             {
-                addValidationError(new ValidationError(ERROR_SYNTAX_TOO_MANY_ENTRIES, "Too Many Entries In Dictionary at offset "+pdfSource.getPosition()));
+                addValidationError(new ValidationError(ERROR_SYNTAX_TOO_MANY_ENTRIES, "Too Many Entries In Dictionary at offset "+source.getPosition()));
             }
         }
         return result;
@@ -680,12 +679,12 @@ public class PreflightParser extends PDF
             {
                 // offset of indirect object in file
                 // ---- go to object start
-                pdfSource.seek(offsetOrObjstmObNr);
+                source.seek(offsetOrObjstmObNr);
                 // ---- we must have an indirect object
                 long readObjNr;
                 int readObjGen;
 
-                long offset = pdfSource.getPosition();
+                long offset = source.getPosition();
                 String line = readLine();
                 Pattern pattern = Pattern.compile("(\\d+)\\s(\\d+)\\sobj");
                 Matcher matcher = pattern.matcher(line);
@@ -699,14 +698,14 @@ public class PreflightParser extends PDF
 
                     addValidationError(new ValidationError(ERROR_SYNTAX_OBJ_DELIMITER, "Single space expected [offset="+offset+"; key="+offsetOrObjstmObNr.toString()+"; line="+line+"; object="+pdfObject.toString()+"]"));
 
-                    // reset pdfSource cursor to read object information
-                    pdfSource.seek(offset);
+                    // reset source cursor to read object information
+                    source.seek(offset);
                     readObjNr = readObjectNumber();
                     readObjGen = readGenerationNumber();
                     skipSpaces(); // skip spaces between Object Generation number and the 'obj' keyword 
                     for (char c : OBJ_MARKER)
                     {
-                        if (pdfSource.read() != c)
+                        if (source.read() != c)
                         {
                             addValidationError(new ValidationError(ERROR_SYNTAX_OBJ_DELIMITER, "Expected pattern '"
                                     + new String(OBJ_MARKER) + " but missed at character '" + c + "'"));
@@ -726,12 +725,12 @@ public class PreflightParser extends PDF
                 skipSpaces();
                 COSBase pb = parseDirObject();
                 skipSpaces();
-                long endObjectOffset = pdfSource.getPosition();
+                long endObjectOffset = source.getPosition();
                 String endObjectKey = readString();
 
                 if (endObjectKey.equals("stream"))
                 {
-                    pdfSource.seek(endObjectOffset);
+                    source.seek(endObjectOffset);
                     if (pb instanceof COSDictionary)
                     {
                         COSStream stream = parseCOSStream((COSDictionary) pb);
@@ -748,7 +747,7 @@ public class PreflightParser extends PDF
                         throw new IOException("Stream not preceded by dictionary (offset: " + offsetOrObjstmObNr + ").");
                     }
                     skipSpaces();
-                    endObjectOffset = pdfSource.getPosition();
+                    endObjectOffset = source.getPosition();
                     endObjectKey = readString();
 
                     // we have case with a second 'endstream' before endobj
@@ -779,20 +778,20 @@ public class PreflightParser extends PDF
                 }
                 else
                 {
-                    offset = pdfSource.getPosition();
-                    pdfSource.seek(endObjectOffset - 1);
+                    offset = source.getPosition();
+                    source.seek(endObjectOffset - 1);
                     if (!nextIsEOL())
                     {
                         addValidationError(new ValidationError(PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER,
-                                "EOL expected before the 'endobj' keyword at offset "+pdfSource.getPosition()));
+                                "EOL expected before the 'endobj' keyword at offset "+source.getPosition()));
                     }
-                    pdfSource.seek(offset);
+                    source.seek(offset);
                 }
 
                 if (!nextIsEOL())
                 {
                     addValidationError(new ValidationError(PreflightConstants.ERROR_SYNTAX_OBJ_DELIMITER,
-                            "EOL expected after the 'endobj' keyword at offset "+pdfSource.getPosition()));
+                            "EOL expected after the 'endobj' keyword at offset "+source.getPosition()));
                 }
             }
             else
@@ -845,7 +844,7 @@ public class PreflightParser extends PDF
                     long position = 0;
                     try
                     {
-                        position = pdfSource.getPosition();
+                        position = source.getPosition();
                     }
                     catch(IOException excpetion)
                     {

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java?rev=1692033&r1=1692032&r2=1692033&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java Mon Jul 20 22:18:00 2015
@@ -37,7 +37,7 @@ import org.apache.pdfbox.cos.COSDictiona
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.cos.COSString;
-import org.apache.pdfbox.io.RandomAccessBuffer;
+import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdfparser.PDFStreamParser;
 import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.tools.pdfdebugger.streampane.tooltip.ToolTipController;
@@ -214,7 +214,7 @@ public class StreamPane implements Actio
             PDFStreamParser parser;
             try
             {
-                parser = new PDFStreamParser(new RandomAccessBuffer(inputStream));
+                parser = new PDFStreamParser(IOUtils.toByteArray(inputStream));
                 parser.parse();
             }
             catch (IOException e)