| /* |
| * Copyright 1999-2004 The Apache Software Foundation. |
| * |
| * Licensed 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. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.pdf; |
| |
| /** |
| * class representing a Root (/Catalog) object |
| */ |
| public class PDFRoot extends PDFObject { |
| |
| /** |
| * Use no page mode setting, default |
| */ |
| public static final int PAGEMODE_USENONE = 0; |
| |
| /** |
| * Use outlines page mode to show bookmarks |
| */ |
| public static final int PAGEMODE_USEOUTLINES = 1; |
| |
| /** |
| * Use thumbs page mode to show thumbnail images |
| */ |
| public static final int PAGEMODE_USETHUMBS = 2; |
| |
| /** |
| * Full screen page mode |
| */ |
| public static final int PAGEMODE_FULLSCREEN = 3; |
| |
| /** |
| * the /Pages object that is root of the Pages hierarchy |
| */ |
| protected PDFPages rootPages; |
| |
| /** |
| * Root outline object |
| */ |
| private PDFOutline outline; |
| |
| private int pageMode = PAGEMODE_USENONE; |
| |
| /** |
| * create a Root (/Catalog) object. NOTE: The PDFRoot |
| * object must be created before the PDF document is |
| * generated, but it is not assigned an object ID until |
| * it is about to be written (immediately before the xref |
| * table as part of the trsailer). (mark-fop@inomial.com) |
| * |
| * @param objnum the object's number |
| * @param pages the PDFPages object |
| */ |
| public PDFRoot(int objnum, PDFPages pages) { |
| super(); |
| setObjectNumber(objnum); |
| setRootPages(pages); |
| } |
| |
| /** |
| * Set the page mode for the PDF document. |
| * |
| * @param mode the page mode |
| */ |
| public void setPageMode(int mode) { |
| pageMode = mode; |
| } |
| |
| /** |
| * add a /Page object to the root /Pages object |
| * |
| * @param page the /Page object to add |
| */ |
| public void addPage(PDFPage page) { |
| this.rootPages.addPage(page); |
| } |
| |
| /** |
| * set the root /Pages object |
| * |
| * @param pages the /Pages object to set as root |
| */ |
| public void setRootPages(PDFPages pages) { |
| this.rootPages = pages; |
| } |
| |
| /** |
| * Set the root outline for the PDF document. |
| * |
| * @param out the root PDF Outline |
| */ |
| public void setRootOutline(PDFOutline out) { |
| outline = out; |
| } |
| |
| /** |
| * Get the root PDF outline for the document. |
| * |
| * @return the root PDF Outline |
| */ |
| public PDFOutline getRootOutline() { |
| return outline; |
| } |
| |
| /** |
| * @see org.apache.fop.pdf.PDFObject#toPDFString() |
| */ |
| public String toPDFString() { |
| StringBuffer p = new StringBuffer(128); |
| p.append(getObjectID()); |
| p.append("<< /Type /Catalog\n/Pages " |
| + this.rootPages.referencePDF() |
| + "\n"); |
| if (outline != null) { |
| p.append(" /Outlines " + outline.referencePDF() + "\n"); |
| p.append(" /PageMode /UseOutlines\n"); |
| } else { |
| switch (pageMode) { |
| case PAGEMODE_USEOUTLINES: |
| p.append(" /PageMode /UseOutlines\n"); |
| break; |
| case PAGEMODE_USETHUMBS: |
| p.append(" /PageMode /UseThumbs\n"); |
| break; |
| case PAGEMODE_FULLSCREEN: |
| p.append(" /PageMode /FullScreen\n"); |
| break; |
| case PAGEMODE_USENONE: |
| default: |
| break; |
| } |
| } |
| p.append(">>\nendobj\n"); |
| return p.toString(); |
| } |
| |
| } |