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