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));
}