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/08/09 15:07:27 UTC

svn commit: r983627 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java

Author: jukka
Date: Mon Aug  9 13:07:27 2010
New Revision: 983627

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

Patch by Christophe Borivant

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=983627&r1=983626&r2=983627&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Mon Aug  9 13:07:27 2010
@@ -23,6 +23,11 @@ import java.awt.print.Paper;
 import java.awt.print.Printable;
 import java.awt.print.PrinterException;
 import java.awt.print.PrinterJob;
+
+import javax.print.PrintService;
+import javax.print.attribute.standard.Media;
+import javax.print.attribute.standard.OrientationRequested;
+
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -116,6 +121,8 @@ public class PDDocument implements Pagea
      */
     private boolean allSecurityToBeRemoved = false;
 
+    private PrinterJob currentPrinterJob = null;
+
     /**
      * Constructor, creates a new PDF Document with no pages.  You need to add
      * at least one page for the document to be valid.
@@ -951,6 +958,9 @@ public class PDDocument implements Pagea
         PDPage page = (PDPage)getDocumentCatalog().getAllPages().get( pageIndex );
         Dimension mediaBox = page.findMediaBox().createDimension();
         Dimension cropBox = page.findCropBox().createDimension();
+        PrintService printService = currentPrinterJob.getPrintService();
+        Object ob = printService.getDefaultAttributeValue(OrientationRequested.class);
+
         double diffWidth = 0;
         double diffHeight = 0;
         double mediaWidth = mediaBox.getWidth();
@@ -963,13 +973,25 @@ public class PDDocument implements Pagea
             diffWidth = (mediaWidth - cropWidth)/2;
             diffHeight = (mediaHeight - cropHeight)/2;
         }
-        Paper paper = new Paper();
-        paper.setImageableArea( diffWidth, diffHeight, cropWidth, cropHeight);
-        paper.setSize( mediaWidth, mediaHeight );
-        PageFormat format = new PageFormat();
+        PageFormat format = currentPrinterJob.defaultPage();
+        Paper paper = format.getPaper();
+
+        if ( "landscape" == ob.toString() )
+        {
+           format.setOrientation(PageFormat.LANDSCAPE);
+           paper.setImageableArea( diffHeight, diffWidth, cropHeight, cropWidth);
+           paper.setSize( mediaHeight, mediaWidth );
+        }
+        else
+        {
+           format.setOrientation(PageFormat.PORTRAIT);
+           paper.setImageableArea( diffWidth, diffHeight, cropWidth, cropHeight);
+           paper.setSize( mediaWidth, mediaHeight );
+        }
+
         format.setPaper( paper );
         return format;
-    }
+    } 
 
     /**
      * {@inheritDoc}
@@ -1000,6 +1022,7 @@ public class PDDocument implements Pagea
             throw new PrinterException( "You do not have permission to print this document." );
         }
         printJob.setPageable(this);
+	currentPrinterJob=printJob;
         if( printJob.printDialog() )
         {
             printJob.print();
@@ -1058,6 +1081,7 @@ public class PDDocument implements Pagea
             throw new PrinterException( "You do not have permission to print this document." );
         }
         printJob.setPageable(this);
+	currentPrinterJob=printJob;
         printJob.print();
     }