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/27 20:06:44 UTC

svn commit: r1692924 - in /pdfbox/trunk: pdfbox/src/main/java/org/apache/pdfbox/cos/ tools/src/main/java/org/apache/pdfbox/tools/ tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/

Author: tilman
Date: Mon Jul 27 18:06:43 2015
New Revision: 1692924

URL: http://svn.apache.org/r1692924
Log:
PDFBOX-2530: show page thumbnails, as done by Khyrul Bashar in GSoC2015

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/StreamPane.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1692924&r1=1692923&r2=1692924&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Mon Jul 27 18:06:43 2015
@@ -489,6 +489,7 @@ public final class COSName extends COSBa
     public static final COSName TARGET = new COSName("Target");
     public static final COSName TEMPLATES = new COSName("Templates");
     public static final COSName THREADS = new COSName("Threads");
+    public static final COSName THUMB = new COSName("Thumb");
     public static final COSName TI = new COSName("TI");
     public static final COSName TILING_TYPE = new COSName("TilingType");
     public static final COSName TIME_STAMP = new COSName("TimeStamp");

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java?rev=1692924&r1=1692923&r2=1692924&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java Mon Jul 27 18:06:43 2015
@@ -654,6 +654,7 @@ public class PDFDebugger extends javax.s
     private void showStream(COSStream stream, TreePath path)
     {
         boolean isContentStream = false;
+        boolean isThumb = false;
 
         COSName key = getNodeKey(path.getLastPathComponent());
         COSName parentKey = getNodeKey(path.getParentPath().getLastPathComponent());
@@ -687,7 +688,12 @@ public class PDFDebugger extends javax.s
             Object resourcesObj = path.getParentPath().getParentPath().getLastPathComponent();
             resourcesDic = (COSDictionary) getUnderneathObject(resourcesObj);
         }
-        StreamPane streamPane = new StreamPane(stream, isContentStream, resourcesDic);
+        else if (COSName.THUMB.equals(key))
+        {
+            resourcesDic = null;
+            isThumb = true;
+        }
+        StreamPane streamPane = new StreamPane(stream, isContentStream, isThumb, resourcesDic);
         jSplitPane1.setRightComponent(streamPane.getPanel());
     }
 

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java?rev=1692924&r1=1692923&r2=1692924&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/pdfdebugger/streampane/Stream.java Mon Jul 27 18:06:43 2015
@@ -44,17 +44,20 @@ class Stream
     public static final String IMAGE = "Image";
 
     private final COSStream stream;
+    private final boolean isThumb;
     private final boolean isImage;
     private final Map<String, List<String>> filters;
 
     /**
      * Constructor.
      * @param cosStream COSStream instance.
+     * @param isThumb boolean instance says if the stream is thumbnail image.
      */
-    Stream(COSStream cosStream)
+    Stream(COSStream cosStream, boolean isThumb)
     {
         this.stream = cosStream;
-        this.isImage = isImageStream(cosStream);
+        this.isThumb = isThumb;
+        this.isImage = isImageStream(cosStream, isThumb);
 
         filters = createFilterList(cosStream);
     }
@@ -150,7 +153,15 @@ class Stream
     {
         try
         {
-            PDImageXObject imageXObject = new PDImageXObject(new PDStream(stream), resources);
+            PDImageXObject imageXObject;
+            if (isThumb)
+            {
+                imageXObject = PDImageXObject.createThumbnail(stream);
+            }
+            else
+            {
+                imageXObject = new PDImageXObject(new PDStream(stream), resources);
+            }
             return imageXObject.getImage();
         }
         catch (IOException e)
@@ -209,8 +220,12 @@ class Stream
         return stopFilters;
     }
 
-    private boolean isImageStream(COSDictionary dic)
+    private boolean isImageStream(COSDictionary dic, boolean isThumb)
     {
+        if (isThumb)
+        {
+            return true;
+        }
         return dic.containsKey(COSName.SUBTYPE) && dic.getCOSName(COSName.SUBTYPE).equals(COSName.IMAGE);
     }
 }

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=1692924&r1=1692923&r2=1692924&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 27 18:06:43 2015
@@ -61,13 +61,14 @@ public class StreamPane implements Actio
      *
      * @param cosStream       COSStream instance.
      * @param isContentStream boolean instance. This says if a stream is content stream or not.
+     * @param isThumb boolean instance. This says if a stream is an thumbnail image or not.
      * @param resourcesDic    COSDictionary instance that holds the resource dictionary for the stream.
      */
-    public StreamPane(COSStream cosStream, boolean isContentStream, COSDictionary resourcesDic)
+    public StreamPane(COSStream cosStream, boolean isContentStream, boolean isThumb, COSDictionary resourcesDic)
     {
         this.isContentStream = isContentStream;
 
-        this.stream = new Stream(cosStream);
+        this.stream = new Stream(cosStream, isThumb);
         if (resourcesDic != null)
         {
             resources = new PDResources(resourcesDic);
@@ -110,7 +111,7 @@ public class StreamPane implements Actio
 
     private void requestImageShowing()
     {
-        if (stream.isImage() && resources != null)
+        if (stream.isImage())
         {
             view.showStreamImage(stream.getImage(resources));
         }