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 2014/04/12 22:50:52 UTC

svn commit: r1586898 - in /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools: PDFReader.java gui/PDFPagePanel.java gui/PageWrapper.java

Author: tilman
Date: Sat Apr 12 20:50:51 2014
New Revision: 1586898

URL: http://svn.apache.org/r1586898
Log:
PDFBOX-2024: use new renderPageToGraphics() method so that rotation is correct; fixed bug introduced in rev 1339076 that -nonSeq wouldn't work

Modified:
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PDFPagePanel.java
    pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PageWrapper.java

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java?rev=1586898&r1=1586897&r2=1586898&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java Sat Apr 12 20:50:51 2014
@@ -58,8 +58,8 @@ public class PDFReader extends JFrame
     private JMenu viewMenu;
     private JMenuItem nextPageItem;
     private JMenuItem previousPageItem;
-    private JPanel documentPanel = new JPanel();
-    private ReaderBottomPanel bottomStatusPanel = new ReaderBottomPanel();
+    private final JPanel documentPanel = new JPanel();
+    private final ReaderBottomPanel bottomStatusPanel = new ReaderBottomPanel();
 
     private PDFRenderer renderer;
     private PDDocument document = null;
@@ -97,6 +97,7 @@ public class PDFReader extends JFrame
         setTitle("PDFBox - PDF Reader");
         addWindowListener(new java.awt.event.WindowAdapter()
         {
+            @Override
             public void windowClosing(java.awt.event.WindowEvent evt)
             {
                 exitApplication();
@@ -114,6 +115,7 @@ public class PDFReader extends JFrame
         openMenuItem.setToolTipText("Open PDF file");
         openMenuItem.addActionListener(new java.awt.event.ActionListener()
         {
+            @Override
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
                 openMenuItemActionPerformed(evt);
@@ -125,6 +127,7 @@ public class PDFReader extends JFrame
         printMenuItem.setText("Print");
         printMenuItem.addActionListener(new java.awt.event.ActionListener()
         {
+            @Override
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
                 try
@@ -164,6 +167,7 @@ public class PDFReader extends JFrame
         exitMenuItem.setText("Exit");
         exitMenuItem.addActionListener(new java.awt.event.ActionListener()
         {
+            @Override
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
                 exitApplication();
@@ -179,6 +183,7 @@ public class PDFReader extends JFrame
         nextPageItem.setAccelerator(KeyStroke.getKeyStroke('+'));
         nextPageItem.addActionListener(new java.awt.event.ActionListener()
         {
+            @Override
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
                 nextPage();
@@ -190,6 +195,7 @@ public class PDFReader extends JFrame
         previousPageItem.setAccelerator(KeyStroke.getKeyStroke('-'));
         previousPageItem.addActionListener(new java.awt.event.ActionListener()
         {
+            @Override
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
                 previousPage();
@@ -331,7 +337,7 @@ public class PDFReader extends JFrame
         try
         {
             PageWrapper wrapper = new PageWrapper(this);
-            wrapper.displayPage(renderer, pages.get(pageNumber));
+            wrapper.displayPage(renderer, pages.get(pageNumber), pageNumber);
             if (documentPanel.getComponentCount() > 0)
             {
                 documentPanel.remove(0);
@@ -349,7 +355,6 @@ public class PDFReader extends JFrame
     {
         try
         {
-            PDFRenderer renderer = new PDFRenderer(document);
             BufferedImage pageAsImage = renderer.renderImage(currentPage);
             String imageFilename = currentFilename;
             if (imageFilename.toLowerCase().endsWith(".pdf"))
@@ -375,18 +380,18 @@ public class PDFReader extends JFrame
         else
         {
             document = PDDocument.load(file);
-            renderer = new PDFRenderer(document);
-            if (document.isEncrypted())
+        }
+        renderer = new PDFRenderer(document);
+        if (document.isEncrypted())
+        {
+            try
             {
-                try
-                {
-                    StandardDecryptionMaterial sdm = new StandardDecryptionMaterial(password);
-                    document.openProtection(sdm);
-                }
-                catch (InvalidPasswordException e)
-                {
-                    System.err.println("Error: The document is encrypted.");
-                }
+                StandardDecryptionMaterial sdm = new StandardDecryptionMaterial(password);
+                document.openProtection(sdm);
+            }
+            catch (InvalidPasswordException e)
+            {
+                System.err.println("Error: The document is encrypted.");
             }
         }
     }

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PDFPagePanel.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PDFPagePanel.java?rev=1586898&r1=1586897&r2=1586898&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PDFPagePanel.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PDFPagePanel.java Sat Apr 12 20:50:51 2014
@@ -25,7 +25,6 @@ import java.io.IOException;
 import javax.swing.JPanel;
 
 import org.apache.pdfbox.rendering.PDFRenderer;
-import org.apache.pdfbox.rendering.PageDrawer;
 import org.apache.pdfbox.pdmodel.PDPage;
 
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
@@ -42,18 +41,23 @@ public class PDFPagePanel extends JPanel
 
     private PDFRenderer renderer;
     private PDPage page;
+    private int pageNum;
     private Dimension pageDimension = null;
     private Dimension drawDimension = null;
 
     /**
      * This will set the page that should be displayed in this panel.
      *
-     * @param page The page to draw.
+     * @param renderer The renderer to render the page.
+     * @param page The PDF page to display.
+     * @param pageNum The number of the page.
+     * @throws IOException if something goes wrong.
      */
-    public void setPage( PDFRenderer renderer, PDPage page ) throws IOException
+    public void setPage(PDFRenderer renderer, PDPage page, int pageNum) throws IOException
     {
         this.renderer = renderer;
         this.page = page;
+        this.pageNum = pageNum;
 
         PDRectangle cropBox = page.findCropBox();
         drawDimension = cropBox.createDimension();
@@ -66,33 +70,23 @@ public class PDFPagePanel extends JPanel
         {
             pageDimension = drawDimension;
         }
-        setSize( pageDimension );
-        setBackground( java.awt.Color.white );
+        setSize(pageDimension);
+        setBackground(java.awt.Color.white);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void paint(Graphics g )
+    @Override
+    public void paint(Graphics g)
     {
         try
         {
-            PageDrawer drawer = new PageDrawer(renderer);
-
-            g.setColor( getBackground() );
-            g.fillRect( 0, 0, getWidth(), getHeight() );
-
-            int rotation = page.findRotation();
-            if (rotation == 90 || rotation == 270)
-            {
-                Graphics2D g2D = (Graphics2D)g;
-                g2D.translate(pageDimension.getWidth(), 0.0f);
-                g2D.rotate(Math.toRadians(rotation));
-            }
-            PDRectangle pageSize = new PDRectangle((float)drawDimension.getWidth(), (float)drawDimension.getHeight());
-            drawer.drawPage( g, page, pageSize );
+            g.setColor(getBackground());
+            g.fillRect(0, 0, getWidth(), getHeight());
+            renderer.renderPageToGraphics(pageNum, (Graphics2D) g);
         }
-        catch( IOException e )
+        catch (IOException e)
         {
             e.printStackTrace();
         }

Modified: pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PageWrapper.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PageWrapper.java?rev=1586898&r1=1586897&r2=1586898&view=diff
==============================================================================
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PageWrapper.java (original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/gui/PageWrapper.java Sat Apr 12 20:50:51 2014
@@ -35,7 +35,7 @@ import java.io.IOException;
  */
 public class PageWrapper implements MouseMotionListener
 {
-    private JPanel pageWrapper = new JPanel();
+    private final JPanel pageWrapper = new JPanel();
     private PDFPagePanel pagePanel = null;
     private PDFReader reader = null;
 
@@ -58,12 +58,16 @@ public class PageWrapper implements Mous
     }
 
     /**
+     * 
      * This will display the PDF page in this component.
+     * @param renderer The renderer to render the page.
      * @param page The PDF page to display.
+     * @param pageNum The number of the page.
+     * @throws IOException if something goes wrong.
      */
-    public void displayPage(PDFRenderer renderer,  PDPage page) throws IOException
+    public void displayPage(PDFRenderer renderer, PDPage page, int pageNum) throws IOException
     {
-        pagePanel.setPage(renderer, page);
+        pagePanel.setPage(renderer, page, pageNum);
         pagePanel.setPreferredSize(pagePanel.getSize());
         Dimension d = pagePanel.getSize();
         d.width+=(SPACE_AROUND_DOCUMENT*2);