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 2020/01/11 10:47:10 UTC
svn commit: r1872619 - in
/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger:
PDFDebugger.java pagepane/PagePane.java ui/ImageTypeMenu.java
ui/RenderDestinationMenu.java
Author: tilman
Date: Sat Jan 11 10:47:10 2020
New Revision: 1872619
URL: http://svn.apache.org/viewvc?rev=1872619&view=rev
Log:
PDFBOX-4731, PDFBOX-4732: support RenderDestination and ImageType
Added:
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/ImageTypeMenu.java
- copied unchanged from r1872617, pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/ImageTypeMenu.java
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/ui/RenderDestinationMenu.java
- copied unchanged from r1872617, pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/ui/RenderDestinationMenu.java
Modified:
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
Modified: pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java?rev=1872619&r1=1872618&r2=1872619&view=diff
==============================================================================
--- pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java (original)
+++ pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/PDFDebugger.java Sat Jan 11 10:47:10 2020
@@ -96,6 +96,7 @@ import org.apache.pdfbox.debugger.ui.Doc
import org.apache.pdfbox.debugger.ui.ErrorDialog;
import org.apache.pdfbox.debugger.ui.ExtensionFileFilter;
import org.apache.pdfbox.debugger.ui.FileOpenSaveDialog;
+import org.apache.pdfbox.debugger.ui.ImageTypeMenu;
import org.apache.pdfbox.debugger.ui.LogDialog;
import org.apache.pdfbox.debugger.ui.MapEntry;
import org.apache.pdfbox.debugger.ui.OSXAdapter;
@@ -104,6 +105,7 @@ import org.apache.pdfbox.debugger.ui.PDF
import org.apache.pdfbox.debugger.ui.PageEntry;
import org.apache.pdfbox.debugger.ui.ReaderBottomPanel;
import org.apache.pdfbox.debugger.ui.RecentFiles;
+import org.apache.pdfbox.debugger.ui.RenderDestinationMenu;
import org.apache.pdfbox.debugger.ui.RotationMenu;
import org.apache.pdfbox.debugger.ui.Tree;
import org.apache.pdfbox.debugger.ui.WindowPrefs;
@@ -523,6 +525,14 @@ public class PDFDebugger extends JFrame
RotationMenu rotationMenu = RotationMenu.getInstance();
rotationMenu.setEnableMenu(false);
viewMenu.add(rotationMenu.getMenu());
+
+ ImageTypeMenu imageTypeMenu = ImageTypeMenu.getInstance();
+ imageTypeMenu.setEnableMenu(false);
+ viewMenu.add(imageTypeMenu.getMenu());
+
+ RenderDestinationMenu renderDestinationMenu = RenderDestinationMenu.getInstance();
+ renderDestinationMenu.setEnableMenu(false);
+ viewMenu.add(renderDestinationMenu.getMenu());
viewMenu.addSeparator();
@@ -1355,6 +1365,8 @@ public class PDFDebugger extends JFrame
DocumentEntry documentEntry = new DocumentEntry(document, file.getName());
ZoomMenu.getInstance().resetZoom();
RotationMenu.getInstance().setRotationSelection(RotationMenu.ROTATE_0_DEGREES);
+ ImageTypeMenu.getInstance().setImageTypeSelection(ImageTypeMenu.IMAGETYPE_RGB);
+ RenderDestinationMenu.getInstance().setRenderDestinationSelection(RenderDestinationMenu.RENDER_DESTINATION_EXPORT);
tree.setModel(new PDFTreeModel(documentEntry));
// Root/Pages/Kids/[0] is not always the first page, so use the first row instead:
tree.setSelectionPath(tree.getPathForRow(1));
Modified: pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java?rev=1872619&r1=1872618&r2=1872619&view=diff
==============================================================================
--- pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java (original)
+++ pdfbox/branches/2.0/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java Sat Jan 11 10:47:10 2020
@@ -50,6 +50,8 @@ import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.pdfbox.debugger.PDFDebugger;
import org.apache.pdfbox.debugger.ui.HighResolutionImageIcon;
+import org.apache.pdfbox.debugger.ui.ImageTypeMenu;
+import org.apache.pdfbox.debugger.ui.RenderDestinationMenu;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.interactive.action.PDAction;
import org.apache.pdfbox.pdmodel.interactive.action.PDActionGoTo;
@@ -62,6 +64,8 @@ import org.apache.pdfbox.pdmodel.interac
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
+import org.apache.pdfbox.rendering.ImageType;
+import org.apache.pdfbox.rendering.RenderDestination;
/**
* Display the page number and a page rendering.
@@ -78,6 +82,8 @@ public class PagePane implements ActionL
private JLabel label;
private ZoomMenu zoomMenu;
private RotationMenu rotationMenu;
+ private ImageTypeMenu imageTypeMenu;
+ private RenderDestinationMenu renderDestinationMenu;
private final JLabel statuslabel;
private final PDPage page;
private String labelText = "";
@@ -229,6 +235,8 @@ public class PagePane implements ActionL
String actionCommand = actionEvent.getActionCommand();
if (ZoomMenu.isZoomMenu(actionCommand) ||
RotationMenu.isRotationMenu(actionCommand) ||
+ ImageTypeMenu.isImageTypeMenu(actionCommand) ||
+ RenderDestinationMenu.isRenderDestinationMenu(actionCommand) ||
actionEvent.getSource() == PDFDebugger.allowSubsampling)
{
startRendering();
@@ -242,7 +250,9 @@ public class PagePane implements ActionL
// the fact that PDDocument is not officially thread safe
new RenderWorker(ZoomMenu.getZoomScale(),
RotationMenu.getRotationDegrees(),
- PDFDebugger.allowSubsampling.isSelected()
+ PDFDebugger.allowSubsampling.isSelected(),
+ ImageTypeMenu.getImageType(),
+ RenderDestinationMenu.getRenderDestination()
).execute();
zoomMenu.setPageZoomScale(ZoomMenu.getZoomScale());
}
@@ -256,6 +266,14 @@ public class PagePane implements ActionL
rotationMenu = RotationMenu.getInstance();
rotationMenu.addMenuListeners(this);
rotationMenu.setEnableMenu(true);
+
+ imageTypeMenu = ImageTypeMenu.getInstance();
+ imageTypeMenu.addMenuListeners(this);
+ imageTypeMenu.setEnableMenu(true);
+
+ renderDestinationMenu = RenderDestinationMenu.getInstance();
+ renderDestinationMenu.addMenuListeners(this);
+ renderDestinationMenu.setEnableMenu(true);
PDFDebugger.allowSubsampling.setEnabled(true);
PDFDebugger.allowSubsampling.addActionListener(this);
@@ -266,6 +284,8 @@ public class PagePane implements ActionL
{
zoomMenu.setEnableMenu(false);
rotationMenu.setEnableMenu(false);
+ imageTypeMenu.setEnableMenu(false);
+ renderDestinationMenu.setEnableMenu(false);
PDFDebugger.allowSubsampling.setEnabled(false);
PDFDebugger.allowSubsampling.removeActionListener(this);
@@ -373,12 +393,17 @@ public class PagePane implements ActionL
private final float scale;
private final int rotation;
private final boolean allowSubsampling;
+ private final ImageType imageType;
+ private final RenderDestination renderDestination;
- private RenderWorker(float scale, int rotation, boolean allowSubsampling)
+ private RenderWorker(float scale, int rotation, boolean allowSubsampling,
+ ImageType imageType, RenderDestination renderDestination)
{
this.scale = scale;
this.rotation = rotation;
this.allowSubsampling = allowSubsampling;
+ this.imageType = imageType;
+ this.renderDestination = renderDestination;
}
@Override
@@ -391,7 +416,7 @@ public class PagePane implements ActionL
renderer.setSubsamplingAllowed(allowSubsampling);
long t0 = System.currentTimeMillis();
statuslabel.setText(labelText);
- BufferedImage bim = renderer.renderImage(pageIndex, scale);
+ BufferedImage bim = renderer.renderImage(pageIndex, scale, imageType, renderDestination);
float t = (System.currentTimeMillis() - t0) / 1000f;
labelText = "Rendered in " + t + " second" + (t > 1 ? "s" : "");
statuslabel.setText(labelText);