You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/09/08 12:57:55 UTC

svn commit: r1623355 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Author: tilman
Date: Mon Sep  8 10:57:55 2014
New Revision: 1623355

URL: http://svn.apache.org/r1623355
Log:
PDFBOX-2332: allow missing space characters after endstream in non sequential parser, e.g. "entstream8 0 obj"

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java?rev=1623355&r1=1623354&r2=1623355&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/NonSequentialPDFParser.java Mon Sep  8 10:57:55 2014
@@ -1014,7 +1014,7 @@ public class NonSequentialPDFParser exte
      * Adds newObject to toBeParsedList if it is not an COSObject or we didn't add this COSObject already (checked via
      * addedObjects).
      */
-    private final void addNewToList(final Queue<COSBase> toBeParsedList, final COSBase newObject,
+    private void addNewToList(final Queue<COSBase> toBeParsedList, final COSBase newObject,
             final Set<Long> addedObjects)
     {
         if (newObject instanceof COSObject)
@@ -1571,6 +1571,13 @@ public class NonSequentialPDFParser exte
                 // avoid follow-up warning about missing endobj
                 pdfSource.unread("endobj".getBytes("ISO-8859-1"));
             }
+            else if (endStream.length() > 9 && isLenient && endStream.substring(0,9).equals("endstream"))
+            {
+                LOG.warn("stream ends with '" + endStream + "' instead of 'endstream' at offset "
+                        + pdfSource.getOffset());
+                // unread the "extra" bytes
+                pdfSource.unread(endStream.substring(9).getBytes("ISO-8859-1"));
+            }
             else if (!endStream.equals("endstream"))
             {
                 throw new IOException(