Author: jahewson Date: Wed Oct 22 00:48:01 2014 New Revision: 1633501 URL: http://svn.apache.org/r1633501 Log: PDFBOX-2423: Made page mode and layout constants in PDDocumentCatalog into enums
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageLayout.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageMode.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java?rev=1633501&r1=1633500&r2=1633501&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocumentCatalog.java Wed Oct 22 00:48:01 2014 @@ -50,56 +50,6 @@ import org.apache.pdfbox.pdmodel.interac */ public class PDDocumentCatalog implements COSObjectable { - /** - * Page mode where neither the outline nor the thumbnails are displayed. - */ - public static final String PAGE_MODE_USE_NONE = "UseNone"; - /** - * Show bookmarks when pdf is opened. - */ - public static final String PAGE_MODE_USE_OUTLINES = "UseOutlines"; - /** - * Show thumbnails when pdf is opened. - */ - public static final String PAGE_MODE_USE_THUMBS = "UseThumbs"; - /** - * Full screen mode with no menu bar, window controls. - */ - public static final String PAGE_MODE_FULL_SCREEN = "FullScreen"; - /** - * Optional content group panel is visible when opened. - */ - public static final String PAGE_MODE_USE_OPTIONAL_CONTENT = "UseOC"; - /** - * Attachments panel is visible. - */ - public static final String PAGE_MODE_USE_ATTACHMENTS = "UseAttachments"; - - /** - * Display one page at a time. - */ - public static final String PAGE_LAYOUT_SINGLE_PAGE = "SinglePage"; - /** - * Display the pages in one column. - */ - public static final String PAGE_LAYOUT_ONE_COLUMN = "OneColumn"; - /** - * Display the pages in two columns, with odd numbered pagse on the left. - */ - public static final String PAGE_LAYOUT_TWO_COLUMN_LEFT = "TwoColumnLeft"; - /** - * Display the pages in two columns, with odd numbered pagse on the right. - */ - public static final String PAGE_LAYOUT_TWO_COLUMN_RIGHT ="TwoColumnRight"; - /** - * Display the pages two at a time, with odd-numbered pages on the left. - */ - public static final String PAGE_LAYOUT_TWO_PAGE_LEFT = "TwoPageLeft"; - /** - * Display the pages two at a time, with odd-numbered pages on the right. - */ - public static final String PAGE_LAYOUT_TWO_PAGE_RIGHT = "TwoPageRight"; - private final COSDictionary root; private final PDDocument document; private PDAcroForm cachedAcroForm; @@ -483,43 +433,59 @@ public class PDDocumentCatalog implement } /** - * Sets the page display mode, see the PAGE_MODE_XXX constants. + * Returns the page display mode. * - * @return A string representing the page mode. + * @return the new page mode. */ - public String getPageMode() + public PageMode getPageMode() { - return root.getNameAsString(COSName.PAGE_MODE, PAGE_MODE_USE_NONE); + String mode = root.getNameAsString(COSName.PAGE_MODE); + if (mode != null) + { + return PageMode.fromString(mode); + } + else + { + return PageMode.USE_NONE; + } } /** - * Sets the page mode. See the PAGE_MODE_XXX constants for valid values. + * Sets the page mode. * * @param mode The new page mode. */ - public void setPageMode(String mode) + public void setPageMode(PageMode mode) { - root.setName(COSName.PAGE_MODE, mode); + root.setName(COSName.PAGE_MODE, mode.stringValue()); } /** - * Sets the page layout, see the PAGE_LAYOUT_XXX constants. + * Gets the page layout. * - * @return A string representing the page layout. + * @return the page layout. */ - public String getPageLayout() + public PageLayout getPageLayout() { - return root.getNameAsString(COSName.PAGE_LAYOUT, PAGE_LAYOUT_SINGLE_PAGE); + String mode = root.getNameAsString(COSName.PAGE_LAYOUT); + if (mode != null) + { + return PageLayout.fromString(mode); + } + else + { + return PageLayout.SINGLE_PAGE; + } } /** - * Sets the page layout. See the PAGE_LAYOUT_XXX constants for valid values. + * Sets the page layout. * * @param layout The new page layout. */ - public void setPageLayout(String layout) + public void setPageLayout(PageLayout layout) { - root.setName(COSName.PAGE_LAYOUT, layout); + root.setName(COSName.PAGE_LAYOUT, layout.stringValue()); } /** Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageLayout.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageLayout.java?rev=1633501&view=auto ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageLayout.java (added) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageLayout.java Wed Oct 22 00:48:01 2014 @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License), Version 2.0 + * (the "License")), you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing), software + * distributed under the License is distributed on an "AS IS" BASIS), + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND), either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.pdfbox.pdmodel; + +/** + * A name object specifying the page layout shall be used when the document is opened. + * + * @author John Hewson + */ +public enum PageLayout +{ + /** Display one page at a time. */ + SINGLE_PAGE("SinglePage"), + + /** Display the pages in one column. */ + ONE_COLUMN("OneColumn"), + + /** Display the pages in two columns), with odd numbered pages on the left. */ + TWO_COLUMN_LEFT("TwoColumnLeft"), + + /** Display the pages in two columns), with odd numbered pages on the right. */ + TWO_COLUMN_RIGHT("TwoColumnRight"), + + /** Display the pages two at a time), with odd-numbered pages on the left. */ + TWO_PAGE_LEFT("TwoPageLeft"), + + /** Display the pages two at a time), with odd-numbered pages on the right. */ + TWO_PAGE_RIGHT("TwoPageRight"); + + public static PageLayout fromString(String value) + { + if (value.equals("SinglePage")) + { + return SINGLE_PAGE; + } + else if (value.equals("OneColumn")) + { + return ONE_COLUMN; + } + else if (value.equals("TwoColumnLeft")) + { + return TWO_COLUMN_LEFT; + } + else if (value.equals("TwoPageLeft")) + { + return TWO_PAGE_LEFT; + } + else if (value.equals("TwoPageRight")) + { + return TWO_PAGE_RIGHT; + } + throw new IllegalArgumentException(value); + } + + private final String value; + + PageLayout(String value) + { + this.value = value; + } + + /** + * Returns the string value, as used in a PDF file. + */ + public String stringValue() + { + return value; + } +} Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageMode.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageMode.java?rev=1633501&view=auto ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageMode.java (added) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PageMode.java Wed Oct 22 00:48:01 2014 @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.pdfbox.pdmodel; + +/** + * A name object specifying how the document shall be displayed when opened. + * + * @author John Hewson + */ +public enum PageMode +{ + /** Neither the outline nor the thumbnails are displayed. */ + USE_NONE("UseNone"), + + /** Show bookmarks when pdf is opened. */ + USE_OUTLINES("UseOutlines"), + + /** Show thumbnails when pdf is opened. */ + USE_THUMBS("UseThumbs"), + + /** Full screen mode with no menu bar, window controls. */ + FULL_SCREEN("FullScreen"), + + /** Optional content group panel is visible when opened. */ + USE_OPTIONAL_CONTENT("UseOC"), + + /** Attachments panel is visible. */ + USE_ATTACHMENTS("UseAttachments"); + + public static PageMode fromString(String value) + { + if (value.equals("UseNone")) + { + return USE_NONE; + } + else if (value.equals("UseOutlines")) + { + return USE_OUTLINES; + } + else if (value.equals("UseThumbs")) + { + return USE_THUMBS; + } + else if (value.equals("FullScreen")) + { + return FULL_SCREEN; + } + else if (value.equals("UseOC")) + { + return USE_OPTIONAL_CONTENT; + } + else if (value.equals("UseAttachments")) + { + return USE_ATTACHMENTS; + } + throw new IllegalArgumentException(value); + } + + private final String value; + + PageMode(String value) + { + this.value = value; + } + + /** + * Returns the string value, as used in a PDF file. + */ + public String stringValue() + { + return value; + } +} Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java?rev=1633501&r1=1633500&r2=1633501&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java Wed Oct 22 00:48:01 2014 @@ -42,6 +42,7 @@ import org.apache.pdfbox.pdmodel.PDDocum import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.PageMode; import org.apache.pdfbox.pdmodel.common.COSArrayList; import org.apache.pdfbox.pdmodel.common.PDNumberTreeNode; import org.apache.pdfbox.pdmodel.common.PDStream; @@ -352,8 +353,8 @@ public class PDFMergerUtility } } - String destPageMode = destCatalog.getPageMode(); - String srcPageMode = srcCatalog.getPageMode(); + PageMode destPageMode = destCatalog.getPageMode(); + PageMode srcPageMode = srcCatalog.getPageMode(); if (destPageMode == null) { destCatalog.setPageMode(srcPageMode);