Author: lehmi
Date: Wed Sep 21 17:51:13 2011
New Revision: 1173773

URL: http://svn.apache.org/viewvc?rev=1173773&view=rev
Log:
PDFBOX-1111: added support for duplex and print scaling based on the proposal 
of Andrea Vacondio

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/viewerpreferences/PDViewerPreferences.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1173773&r1=1173772&r2=1173773&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Wed 
Sep 21 17:51:13 2011
@@ -243,6 +243,10 @@ public final class COSName extends COSBa
     /**
      * A common COSName value.
      */
+    public static final COSName CENTER_WINDOW = new COSName( "CenterWindow" );
+    /**
+     * A common COSName value.
+     */
     public static final COSName CF = new COSName( "CF" );
     /**
      * A common COSName value.
@@ -388,6 +392,14 @@ public final class COSName extends COSBa
      * A common COSName value.
      */
     public static final COSName DIFFERENCES = new COSName( "Differences" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName DIRECTION = new COSName( "Direction" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName DISPLAY_DOC_TITLE = new COSName( 
"DisplayDocTitle" );
 
     /**
      * A common COSName value.
@@ -411,6 +423,10 @@ public final class COSName extends COSBa
     /**
      * A common COSName value.
      */
+    public static final COSName DUPLEX = new COSName( "Duplex" );
+    /**
+     * A common COSName value.
+     */
     public static final COSName DV = new COSName( "DV" );
     /**
      * A common COSName value.
@@ -509,6 +525,10 @@ public final class COSName extends COSBa
     */
     public static final COSName FIRST_CHAR = new COSName( "FirstChar" );
     /**
+     * A common COSName value.
+     */
+    public static final COSName FIT_WINDOW = new COSName( "FitWindow" );
+    /**
     * A common COSName value.
     */
     public static final COSName FL = new COSName( "FL" );
@@ -609,6 +629,18 @@ public final class COSName extends COSBa
     */
     public static final COSName HEIGHT = new COSName( "Height" );
     /**
+     * A common COSName value.
+     */
+    public static final COSName HIDE_MENUBAR = new COSName( "HideMenubar" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName HIDE_TOOLBAR = new COSName( "HideToolbar" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName HIDE_WINDOWUI = new COSName( "HideWindowUI" );
+    /**
     * A common COSName value.
     */
     public static final COSName ICCBASED = new COSName( "ICCBased" );
@@ -817,6 +849,10 @@ public final class COSName extends COSBa
     /**
      * A common COSName value.
      */
+    public static final COSName NON_FULL_SCREEN_PAGE_MODE = new COSName( 
"NonFullScreenPageMode" );
+    /**
+     * A common COSName value.
+     */
     public static final COSName NUMS = new COSName( "Nums" );
 
     /**
@@ -945,6 +981,19 @@ public final class COSName extends COSBa
      */
     public static final COSName PREV = new COSName( "Prev" );
 
+    /**
+     * A common COSName value.
+     */
+    public static final COSName PRINT_AREA = new COSName( "PrintArea" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName PRINT_CLIP = new COSName( "PrintClip" );
+    /**
+     * A common COSName value.
+     */
+    public static final COSName PRINT_SCALING = new COSName( "PrintScaling" );
+    
     /** The COSName value for "ProcSet". */
     public static final COSName PROC_SET = new COSName( "ProcSet" );
 
@@ -1195,6 +1244,14 @@ public final class COSName extends COSBa
     /**
      * A common COSName value.
      */
+    public static final COSName VIEW_AREA = new COSName("ViewArea");
+    /**
+     * A common COSName value.
+     */
+    public static final COSName VIEW_CLIP = new COSName("ViewClip");
+    /**
+     * A common COSName value.
+     */
     public static final COSName VIEWER_PREFERENCES = new 
COSName("ViewerPreferences");
 
     /**

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/viewerpreferences/PDViewerPreferences.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/viewerpreferences/PDViewerPreferences.java?rev=1173773&r1=1173772&r2=1173773&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/viewerpreferences/PDViewerPreferences.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/viewerpreferences/PDViewerPreferences.java
 Wed Sep 21 17:51:13 2011
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel.intera
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
@@ -29,53 +30,172 @@ import org.apache.pdfbox.pdmodel.common.
  */
 public class PDViewerPreferences implements COSObjectable
 {
+    
     /**
      * From PDF Reference: "Neither document outline nor thumbnail images 
visible".
+     * 
+     * @deprecated use {@link NON_FULL_SCREEN_PAGE_MODE} instead
      */
     public static final String NON_FULL_SCREEN_PAGE_MODE_USE_NONE = "UseNone";
     /**
      * From PDF Reference: "Document outline visible".
+     * 
+     * @deprecated use {@link NON_FULL_SCREEN_PAGE_MODE} instead
      */
     public static final String NON_FULL_SCREEN_PAGE_MODE_USE_OUTLINES = 
"UseOutlines";
     /**
      * From PDF Reference: "Thumbnail images visible".
+     * 
+     * @deprecated use {@link NON_FULL_SCREEN_PAGE_MODE} instead
      */
     public static final String NON_FULL_SCREEN_PAGE_MODE_USE_THUMBS = 
"UseThumbs";
     /**
      * From PDF Reference: "Optional content group panel visible".
+     * 
+     * @deprecated use {@link NON_FULL_SCREEN_PAGE_MODE} instead
      */
     public static final String NON_FULL_SCREEN_PAGE_MODE_USE_OPTIONAL_CONTENT 
= "UseOC";
 
     /**
+     * Enumeration containing all valid values for NonFullScreenPageMode.
+     */
+    public static enum NON_FULL_SCREEN_PAGE_MODE
+    {
+        /**
+         *  From PDF Reference: "Neither document outline nor thumbnail images 
visible".
+         */
+        UseNone,
+        /**
+         * From PDF Reference: "Document outline visible".
+         */
+        UseOutlines, 
+        /**
+         * From PDF Reference: "Thumbnail images visible".
+         */
+        UseThumbs, 
+        /**
+         * From PDF Reference: "Optional content group panel visible".
+         */
+        UseOC
+    }
+
+    /**
      * Reading direction.
+     * 
+     * @deprecated use {@link READING_DIRECTION} instead
      */
     public static final String READING_DIRECTION_L2R = "L2R";
     /**
      * Reading direction.
+     * 
+     * @deprecated use {@link READING_DIRECTION} instead
      */
     public static final String READING_DIRECTION_R2L = "R2L";
+    /**
+     * Enumeration containing all valid values for ReadingDirection.
+     */
+    public static enum READING_DIRECTION
+    {
+        /**
+         * left to right.
+         */
+        L2R,
+        /**
+         * right to left.
+         */
+        R2L
+    }
 
     /**
      * Boundary constant.
+     * 
+     * @deprecated use {@link BOUNDARY} instead
      */
     public static final String BOUNDARY_MEDIA_BOX = "MediaBox";
     /**
      * Boundary constant.
+     * 
+     * @deprecated use {@link BOUNDARY} instead
      */
     public static final String BOUNDARY_CROP_BOX = "CropBox";
     /**
      * Boundary constant.
+     * 
+     * @deprecated use {@link BOUNDARY} instead
      */
     public static final String BOUNDARY_BLEED_BOX = "BleedBox";
     /**
      * Boundary constant.
+     * 
+     * @deprecated use {@link BOUNDARY} instead
      */
     public static final String BOUNDARY_TRIM_BOX = "TrimBox";
     /**
      * Boundary constant.
+     * 
+     * @deprecated use {@link BOUNDARY} instead
      */
     public static final String BOUNDARY_ART_BOX = "ArtBox";
+    /**
+     * Enumeration containing all valid values for boundaries.
+     */
+    public static enum BOUNDARY
+    {
+        /**
+         * use media box as boundary.
+         */
+        MediaBox, 
+        /**
+         * use crop box as boundary.
+         */
+        CropBox, 
+        /**
+         * use bleed box as boundary.
+         */
+        BleedBox, 
+        /**
+         * use trim box as boundary.
+         */
+        TrimBox, 
+        /**
+         * use art box as boundary.
+         */
+        ArtBox
+    }
+
+    /**
+     * Enumeration containing all valid values for duplex.
+     */
+    public static enum DUPLEX
+    {
+        /**
+         * simplex printing.
+         */
+        Simplex,
+        /**
+         * duplex printing, flip at short edge.
+         */
+        DuplexFlipShortEdge, 
+        /**
+         * duplex printing, flip at long edge.
+         */
+        DuplexFlipLongEdge
+    }
 
+    /**
+     * Enumeration containing all valid values for printscaling.
+     */
+    public static enum PRINT_SCALING
+    {
+        /**
+         * no scaling.
+         */
+        None, 
+        /**
+         * use app default.
+         */
+        AppDefault
+    }
 
     private COSDictionary prefs;
 
@@ -116,7 +236,7 @@ public class PDViewerPreferences impleme
      */
     public boolean hideToolbar()
     {
-        return prefs.getBoolean( "HideToolbar", false );
+        return prefs.getBoolean( COSName.HIDE_TOOLBAR, false );
     }
 
     /**
@@ -126,7 +246,7 @@ public class PDViewerPreferences impleme
      */
     public void setHideToolbar( boolean value )
     {
-        prefs.setBoolean( "HideToolbar", value );
+        prefs.setBoolean( COSName.HIDE_TOOLBAR, value );
     }
 
     /**
@@ -136,7 +256,7 @@ public class PDViewerPreferences impleme
      */
     public boolean hideMenubar()
     {
-        return prefs.getBoolean( "HideMenubar", false );
+        return prefs.getBoolean( COSName.HIDE_MENUBAR, false );
     }
 
     /**
@@ -146,7 +266,7 @@ public class PDViewerPreferences impleme
      */
     public void setHideMenubar( boolean value )
     {
-        prefs.setBoolean( "HideMenubar", value );
+        prefs.setBoolean( COSName.HIDE_MENUBAR, value );
     }
 
     /**
@@ -156,7 +276,7 @@ public class PDViewerPreferences impleme
      */
     public boolean hideWindowUI()
     {
-        return prefs.getBoolean( "HideWindowUI", false );
+        return prefs.getBoolean( COSName.HIDE_WINDOWUI, false );
     }
 
     /**
@@ -166,7 +286,7 @@ public class PDViewerPreferences impleme
      */
     public void setHideWindowUI( boolean value )
     {
-        prefs.setBoolean( "HideWindowUI", value );
+        prefs.setBoolean( COSName.HIDE_WINDOWUI, value );
     }
 
     /**
@@ -176,7 +296,7 @@ public class PDViewerPreferences impleme
      */
     public boolean fitWindow()
     {
-        return prefs.getBoolean( "FitWindow", false );
+        return prefs.getBoolean( COSName.FIT_WINDOW, false );
     }
 
     /**
@@ -186,7 +306,7 @@ public class PDViewerPreferences impleme
      */
     public void setFitWindow( boolean value )
     {
-        prefs.setBoolean( "FitWindow", value );
+        prefs.setBoolean( COSName.FIT_WINDOW, value );
     }
 
     /**
@@ -196,7 +316,7 @@ public class PDViewerPreferences impleme
      */
     public boolean centerWindow()
     {
-        return prefs.getBoolean( "CenterWindow", false );
+        return prefs.getBoolean( COSName.CENTER_WINDOW, false );
     }
 
     /**
@@ -206,7 +326,7 @@ public class PDViewerPreferences impleme
      */
     public void setCenterWindow( boolean value )
     {
-        prefs.setBoolean( "CenterWindow", value );
+        prefs.setBoolean( COSName.CENTER_WINDOW, value );
     }
 
     /**
@@ -216,7 +336,7 @@ public class PDViewerPreferences impleme
      */
     public boolean displayDocTitle()
     {
-        return prefs.getBoolean( "DisplayDocTitle", false );
+        return prefs.getBoolean( COSName.DISPLAY_DOC_TITLE, false );
     }
 
     /**
@@ -226,7 +346,7 @@ public class PDViewerPreferences impleme
      */
     public void setDisplayDocTitle( boolean value )
     {
-        prefs.setBoolean( "DisplayDocTitle", value );
+        prefs.setBoolean( COSName.DISPLAY_DOC_TITLE, value );
     }
 
     /**
@@ -236,17 +356,30 @@ public class PDViewerPreferences impleme
      */
     public String getNonFullScreenPageMode()
     {
-        return prefs.getNameAsString( "NonFullScreenPageMode", 
NON_FULL_SCREEN_PAGE_MODE_USE_NONE);
+        return prefs.getNameAsString( COSName.NON_FULL_SCREEN_PAGE_MODE, 
+                NON_FULL_SCREEN_PAGE_MODE.UseNone.toString());
+    }
+
+    /**
+     * Set the non full screen page mode preference.
+     *
+     * @param value Set the non full screen page mode preference.
+     */
+    public void setNonFullScreenPageMode( NON_FULL_SCREEN_PAGE_MODE value )
+    {
+        prefs.setName( COSName.NON_FULL_SCREEN_PAGE_MODE, value.toString() );
     }
 
     /**
      * Set the non full screen page mode preference.
      *
      * @param value Set the non full screen page mode preference.
+     * 
+     * @deprecated
      */
     public void setNonFullScreenPageMode( String value )
     {
-        prefs.setName( "NonFullScreenPageMode", value );
+        prefs.setName( COSName.NON_FULL_SCREEN_PAGE_MODE, value );
     }
 
     /**
@@ -256,7 +389,7 @@ public class PDViewerPreferences impleme
      */
     public String getReadingDirection()
     {
-        return prefs.getNameAsString( "Direction", READING_DIRECTION_L2R);
+        return prefs.getNameAsString( COSName.DIRECTION, 
READING_DIRECTION.L2R.toString());
     }
 
     /**
@@ -264,88 +397,188 @@ public class PDViewerPreferences impleme
      *
      * @param value Set the reading direction preference.
      */
+    public void setReadingDirection( READING_DIRECTION value )
+    {
+        prefs.setName( COSName.DIRECTION, value.toString() );
+    }
+
+    /**
+     * Set the reading direction preference.
+     *
+     * @param value Set the reading direction preference.
+     * 
+     * @deprecated
+     */
     public void setReadingDirection( String value )
     {
-        prefs.setName( "Direction", value );
+        prefs.setName( COSName.DIRECTION, value.toString() );
     }
 
     /**
-     * Get the ViewArea preference.  See BOUNDARY_XXX constants.
+     * Get the ViewArea preference.  See BOUNDARY enumeration.
      *
      * @return the ViewArea preference.
      */
     public String getViewArea()
     {
-        return prefs.getNameAsString( "ViewArea", BOUNDARY_CROP_BOX);
+        return prefs.getNameAsString( COSName.VIEW_AREA, 
BOUNDARY.CropBox.toString());
     }
 
     /**
      * Set the ViewArea preference.  See BOUNDARY_XXX constants.
      *
      * @param value Set the ViewArea preference.
+     * 
+     * @deprecated
      */
     public void setViewArea( String value )
     {
-        prefs.setName( "ViewArea", value );
+        prefs.setName( COSName.VIEW_AREA, value );
+    }
+
+    /**
+     * Set the ViewArea preference.  See BOUNDARY enumeration.
+     *
+     * @param value Set the ViewArea preference.
+     */
+    public void setViewArea( BOUNDARY value )
+    {
+        prefs.setName( COSName.VIEW_AREA, value.toString() );
     }
 
     /**
-     * Get the ViewClip preference.  See BOUNDARY_XXX constants.
+     * Get the ViewClip preference.  See BOUNDARY enumeration.
      *
      * @return the ViewClip preference.
      */
     public String getViewClip()
     {
-        return prefs.getNameAsString( "ViewClip", BOUNDARY_CROP_BOX);
+        return prefs.getNameAsString( COSName.VIEW_CLIP, 
BOUNDARY.CropBox.toString());
+    }
+
+    /**
+     * Set the ViewClip preference.  See BOUNDARY enumeration.
+     *
+     * @param value Set the ViewClip preference.
+     */
+    public void setViewClip( BOUNDARY value )
+    {
+        prefs.setName( COSName.VIEW_CLIP, value.toString() );
     }
 
     /**
      * Set the ViewClip preference.  See BOUNDARY_XXX constants.
      *
      * @param value Set the ViewClip preference.
+     * 
+     * @deprecated
      */
     public void setViewClip( String value )
     {
-        prefs.setName( "ViewClip", value );
+        prefs.setName( COSName.VIEW_CLIP, value );
     }
 
     /**
-     * Get the PrintArea preference.  See BOUNDARY_XXX constants.
+     * Get the PrintArea preference.  See BOUNDARY enumeration.
      *
      * @return the PrintArea preference.
      */
     public String getPrintArea()
     {
-        return prefs.getNameAsString( "PrintArea", BOUNDARY_CROP_BOX);
+        return prefs.getNameAsString( COSName.PRINT_AREA, 
BOUNDARY.CropBox.toString());
     }
 
     /**
      * Set the PrintArea preference.  See BOUNDARY_XXX constants.
      *
      * @param value Set the PrintArea preference.
+     * 
+     * @deprecated
      */
     public void setPrintArea( String value )
     {
-        prefs.setName( "PrintArea", value );
+        prefs.setName( COSName.PRINT_AREA, value );
     }
 
     /**
-     * Get the PrintClip preference.  See BOUNDARY_XXX constants.
+     * Set the PrintArea preference.  See BOUNDARY enumeration.
+     *
+     * @param value Set the PrintArea preference.
+     */
+    public void setPrintArea( BOUNDARY value )
+    {
+        prefs.setName( COSName.PRINT_AREA, value.toString() );
+    }
+
+    /**
+     * Get the PrintClip preference.  See BOUNDARY enumeration.
      *
      * @return the PrintClip preference.
      */
     public String getPrintClip()
     {
-        return prefs.getNameAsString( "PrintClip", BOUNDARY_CROP_BOX);
+        return prefs.getNameAsString( COSName.PRINT_CLIP, 
BOUNDARY.CropBox.toString());
     }
 
     /**
      * Set the PrintClip preference.  See BOUNDARY_XXX constants.
      *
      * @param value Set the PrintClip preference.
+     * 
+     * @deprecated
      */
     public void setPrintClip( String value )
     {
-        prefs.setName( "PrintClip", value );
+        prefs.setName( COSName.PRINT_CLIP, value );
+    }
+    
+    /**
+     * Set the PrintClip preference.  See BOUNDARY enumeration.
+     *
+     * @param value Set the PrintClip preference.
+     */
+    public void setPrintClip( BOUNDARY value )
+    {
+        prefs.setName( COSName.PRINT_CLIP, value.toString() );
+    }
+    
+    /**
+     * Get the Duplex preference.  See DUPLEX enumeration.
+     *
+     * @return the Duplex preference.
+     */
+    public String getDuplex()
+    {
+        return prefs.getNameAsString( COSName.DUPLEX );
+    }
+
+    /**
+     * Set the Duplex preference.  See DUPLEX enumeration.
+     *
+     * @param value Set the Duplex preference.
+     */
+    public void setDuplex( DUPLEX value )
+    {
+        prefs.setName( COSName.DUPLEX, value.toString() );
+    }
+    
+    /**
+     * Get the PrintScaling preference.  See PRINT_SCALING enumeration.
+     *
+     * @return the PrintScaling preference.
+     */
+    public String getPrintScaling()
+    {
+        return prefs.getNameAsString( COSName.PRINT_SCALING , 
PRINT_SCALING.AppDefault.toString());
+    }
+
+    /**
+     * Set the PrintScaling preference.  See PRINT_SCALING enumeration.
+     *
+     * @param value Set the PrintScaling preference.
+     */
+    public void setPrintScaling( PRINT_SCALING value )
+    {
+        prefs.setName( COSName.PRINT_SCALING, value.toString() );
     }
 }


Reply via email to