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