/*
 * 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.
 */

/* $Id: PDFPage.java 1760942 2016-09-15 14:37:18Z ssteiner $ */

package org.apache.fop.pdf;

import java.awt.geom.Rectangle2D;

Class representing a /Page object.

There is one of these for every page in a PDF document. The object specifies the dimensions of the page and references a /Resources object, a contents stream and the page's parent in the page hierarchy.

/** * Class representing a /Page object. * <p> * There is one of these for every page in a PDF document. The object * specifies the dimensions of the page and references a /Resources * object, a contents stream and the page's parent in the page * hierarchy. */
public class PDFPage extends PDFResourceContext {
the page index (zero-based)
/** the page index (zero-based) */
protected int pageIndex;
Create a /Page object
Params:
  • resources – the /Resources object
  • pageIndex – the page's zero-based index (or -1 if the page number is auto-determined)
  • mediaBox – the MediaBox
  • cropBox – the CropBox. If null, mediaBox is used.
  • bleedBox – the BleedBox. If null, cropBox is used.
  • trimBox – the TrimBox. If null, bleedBox is used.
/** * Create a /Page object * * @param resources the /Resources object * @param pageIndex the page's zero-based index (or -1 if the page number is auto-determined) * @param mediaBox the MediaBox * @param cropBox the CropBox. If null, mediaBox is used. * @param bleedBox the BleedBox. If null, cropBox is used. * @param trimBox the TrimBox. If null, bleedBox is used. */
public PDFPage(PDFResources resources, int pageIndex, Rectangle2D mediaBox, Rectangle2D cropBox, Rectangle2D bleedBox, Rectangle2D trimBox) { /* generic creation of object */ super(resources); put("Type", new PDFName("Page")); /* set fields using parameters */ setSimplePageSize(mediaBox, cropBox, bleedBox, trimBox); this.pageIndex = pageIndex; } private void setSimplePageSize(Rectangle2D mediaBox, Rectangle2D cropBox, Rectangle2D bleedBox, Rectangle2D trimBox) { setMediaBox(mediaBox); if (cropBox == null) { cropBox = mediaBox; } setCropBox(cropBox); if (bleedBox == null) { bleedBox = cropBox; } setBleedBox(bleedBox); //Recommended by PDF/X if (trimBox == null) { trimBox = bleedBox; } setTrimBox(trimBox); //Needed for PDF/X } private PDFArray toPDFArray(Rectangle2D box) { return new PDFArray(this, new double[] { box.getX(), box.getY(), box.getMaxX(), box.getMaxY()}); }
Sets the "MediaBox" entry
Params:
  • box – the media rectangle
/** * Sets the "MediaBox" entry * @param box the media rectangle */
public void setMediaBox(Rectangle2D box) { put("MediaBox", toPDFArray(box)); }
Sets the "CropBox" entry
Params:
  • box – the bleed rectangle
/** * Sets the "CropBox" entry * @param box the bleed rectangle */
public void setCropBox(Rectangle2D box) { put("CropBox", toPDFArray(box)); }
Sets the "BleedBox" entry
Params:
  • box – the bleed rectangle
/** * Sets the "BleedBox" entry * @param box the bleed rectangle */
public void setBleedBox(Rectangle2D box) { put("BleedBox", toPDFArray(box)); }
Sets the "TrimBox" entry
Params:
  • box – the trim rectangle
/** * Sets the "TrimBox" entry * @param box the trim rectangle */
public void setTrimBox(Rectangle2D box) { put("TrimBox", toPDFArray(box)); }
set this page contents
Params:
  • contents – the contents of the page
/** * set this page contents * * @param contents the contents of the page */
public void setContents(PDFReference contents) { if (contents != null) { put("Contents", contents); } }
set this page's parent
Params:
  • parent – the /Pages object that is this page's parent
/** * set this page's parent * * @param parent the /Pages object that is this page's parent */
public void setParent(PDFPages parent) { put("Parent", new PDFReference(parent)); }
Set the transition dictionary and duration. This sets the duration of the page and the transition dictionary used when going to the next page.
Params:
  • dur – the duration in seconds
  • tr – the transition dictionary
/** * Set the transition dictionary and duration. * This sets the duration of the page and the transition * dictionary used when going to the next page. * * @param dur the duration in seconds * @param tr the transition dictionary */
public void setTransition(int dur, TransitionDictionary tr) { put("Dur", Integer.valueOf(dur)); put("Trans", tr); }
Returns:the page Index of this page (zero-based), -1 if it the page index should automatically be determined.
/** * @return the page Index of this page (zero-based), -1 if it the page index should * automatically be determined. */
public int getPageIndex() { return this.pageIndex; }
Sets the "StructParents" value.
Params:
  • structParents – the integer key of this object's entry in the structural parent tree.
/** * Sets the "StructParents" value. * @param structParents the integer key of this object's entry in the structural parent tree. */
public void setStructParents(int structParents) { put("StructParents", structParents); //This is a PDF 1.5 feature. It is set as a work-around for a bug in Adobe Acrobat //which reports this missing even if the PDF file is PDF 1.4. setTabs(new PDFName("S")); }
Returns the value of the StructParents entry.
Returns:the StructParents value, null if the entry has not been set
/** * Returns the value of the StructParents entry. * * @return the StructParents value, <code>null</code> if the entry has not been set */
public Integer getStructParents() { return (Integer) get("StructParents"); }
Specifies the tab order for annotations on a page.
Params:
  • value – one of the allowed values (see PDF 1.5)
Since:PDF 1.5
/** * Specifies the tab order for annotations on a page. * @param value one of the allowed values (see PDF 1.5) * @since PDF 1.5 */
public void setTabs(PDFName value) { put("Tabs", value); } }