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)