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 2015/07/17 22:15:53 UTC

svn commit: r1691634 - /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java

Author: tilman
Date: Fri Jul 17 20:15:52 2015
New Revision: 1691634

URL: http://svn.apache.org/r1691634
Log:
PDFBOX-2530: recover from exception in comtent stream, as done by Khyrul Bashar in GSoC2015

Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java

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=1691634&r1=1691633&r2=1691634&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 Fri Jul 17 20:15:52 2015
@@ -125,22 +125,25 @@ public class StreamPane implements Actio
     {
 
         private final String filterKey;
-        private final InputStream inputStream;
 
         private DocumentCreator(String filterKey)
         {
             this.filterKey = filterKey;
-            this.inputStream = stream.getStream(filterKey);
         }
 
         @Override
         protected StyledDocument doInBackground()
         {
+            InputStream inputStream = stream.getStream(filterKey);
             if (isContentStream && Stream.UNFILTERED.equals(filterKey))
             {
-                return getContentStreamDocument(inputStream);
+                StyledDocument document = getContentStreamDocument(inputStream);
+                if (document != null)
+                {
+                    return document;
+                }
+                return getDocument(stream.getStream(filterKey));
             }
-
             return getDocument(inputStream);
         }
 
@@ -213,6 +216,14 @@ public class StreamPane implements Actio
             {
                 parser = new PDFStreamParser(new RandomAccessBuffer(inputStream));
                 parser.parse();
+            }
+            catch (IOException e)
+            {
+                return null;
+            }
+
+            try
+            {
                 for (Object obj : parser.getTokens())
                 {
                     if (obj instanceof Operator)
@@ -249,10 +260,6 @@ public class StreamPane implements Actio
                     }
                 }
             }
-            catch (IOException e)
-            {
-                e.printStackTrace();
-            }
             catch (BadLocationException e1)
             {
                 e1.printStackTrace();
@@ -271,5 +278,5 @@ public class StreamPane implements Actio
             return str;
         }
 
-        }
     }
+}