You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ju...@apache.org on 2010/09/03 15:03:50 UTC

svn commit: r992284 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: PDPage.java PDPageable.java

Author: jukka
Date: Fri Sep  3 13:03:50 2010
New Revision: 992284

URL: http://svn.apache.org/viewvc?rev=992284&view=rev
Log:
PDFBOX-788: PrintPDF does not take the windows default printer orientation into account

Make the PDPageable adapter implement also the Printable interface.

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java?rev=992284&r1=992283&r2=992284&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java Fri Sep  3 13:03:50 2010
@@ -54,6 +54,10 @@ import java.util.List;
 
 /**
  * This represents a single page in a PDF document.
+ * <p>
+ * This class implements the {@link Printable} interface, but since PDFBox
+ * version 1.3.0 you should be using the {@link PDPageable} adapter instead
+ * (see <a href="https://issues.apache.org/jira/browse/PDFBOX-788">PDFBOX-788</a>).
  *
  * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
  * @version $Revision: 1.29 $
@@ -808,23 +812,22 @@ public class PDPage implements COSObject
     }
 
     /**
-     * {@inheritDoc}
+     * @deprecated Use the {@link PDPageable} adapter class
      */
     public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
         throws PrinterException
     {
-        int retval = Printable.PAGE_EXISTS;
         try
         {
             PageDrawer drawer = new PageDrawer();
             PDRectangle cropBox = findCropBox();
             drawer.drawPage( graphics, this, cropBox.createDimension() );
+            return PAGE_EXISTS;
         }
         catch( IOException io )
         {
             throw new PrinterIOException( io );
         }
-        return retval;
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java?rev=992284&r1=992283&r2=992284&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java Fri Sep  3 13:03:50 2010
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel;
 import static javax.print.attribute.standard.OrientationRequested.LANDSCAPE;
 
 import java.awt.Dimension;
+import java.awt.Graphics;
 import java.awt.print.PageFormat;
 import java.awt.print.Pageable;
 import java.awt.print.Paper;
@@ -32,15 +33,15 @@ import javax.print.PrintService;
 import javax.print.attribute.standard.OrientationRequested;
 
 /**
- * Adapter class that implements the {@link Pageable} interface for
- * printing a given PDF document. Note that the given PDF document should
- * not be modified (pages added, removed, etc.) while an instance of this
- * class is being used.
+ * Adapter class that implements the {@link Pageable} and {@link Printable}
+ * interfaces for printing a given PDF document. Note that the given PDF
+ * document should not be modified (pages added, removed, etc.) while an
+ * instance of this class is being used.
  *
  * @since Apache PDFBox 1.3.0
  * @see <a href="https://issues.apache.org/jira/browse/PDFBOX-788">PDFBOX-788</a>
  */
-public class PDPageable implements Pageable {
+public class PDPageable implements Pageable, Printable {
 
     /**
      * List of all pages in the given PDF document.
@@ -164,4 +165,26 @@ public class PDPageable implements Pagea
         return pages.get(i);
     }
 
+    //-----------------------------------------------------------< Printable >
+
+    /**
+     * Prints the page at the given index.
+     *
+     * @param graphics printing target
+     * @param format page format
+     * @param i page index, zero-based
+     * @return {@link Printable#PAGE_EXISTS} if the page was printed,
+     *         or {@link Printable#NO_SUCH_PAGE} if page index was invalid
+     * @throws PrinterException if printing failed
+     */
+    @SuppressWarnings("deprecation")
+    public int print(Graphics graphics, PageFormat format, int i)
+            throws PrinterException {
+        if (0 <= i && i < pages.size()) {
+            return pages.get(i).print(graphics, format, i);
+        } else {
+            return NO_SUCH_PAGE;
+        }
+    }
+
 }