/* * $Id: PDFCatalog.java,v 1.2 2007/08/26 18:56:35 gil1 Exp $ * * $Date: 2007/08/26 18:56:35 $ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package gnu.jpdf; import java.io.*; /** * <p>This class implements the PDF Catalog, * also known as the root node</p> * * @author Peter T. Mount * @author Eric Z. Beard, ericzbeard@hotmail.com * @version $Revision: 1.2 $, $Date: 2007/08/26 18:56:35 $ */ public class PDFCatalog extends PDFObject { /** * The pages of the document */ private PDFPageList pdfPageList; /** * The outlines of the document */ private PDFOutline outlines; /** * The initial page mode */ private int pagemode; /** * This constructs a PDF Catalog object * * @param pdfPageList The PDFPageList object that's the root * of the documents page tree * @param pagemode How the document should appear when opened. * Allowed values are USENONE, USEOUTLINES, USETHUMBS or FULLSCREEN. */ public PDFCatalog(PDFPageList pdfPageList,int pagemode) { super("/Catalog"); this.pdfPageList = pdfPageList; this.pagemode = pagemode; } /** * This sets the root outline object * @param outline The root outline */ protected void setOutline(PDFOutline outline) { this.outlines = outline; } /** * @param os OutputStream to send the object to * @exception IOException on error */ public void write(OutputStream os) throws IOException { // Write the object header writeStart(os); // now the objects body // the /Pages object os.write("/Pages ".getBytes()); os.write(pdfPageList.toString().getBytes()); os.write("\n".getBytes()); // the Outlines object if(outlines!=null) { //if(outlines.getLast()>-1) { os.write("/Outlines ".getBytes()); os.write(outlines.toString().getBytes()); os.write("\n".getBytes()); //} } // the /PageMode setting os.write("/PageMode ".getBytes()); os.write(PDFDocument.PDF_PAGE_MODES[pagemode].getBytes()); os.write("\n".getBytes()); // finish off with its footer writeEnd(os); } } // end class PDFCatalog