KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > pdf > PDFPage


1 /*
2  * $Id: PDFPage.java,v 1.12.2.2 2003/02/25 14:29:37 jeremias Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.pdf;
52
53 import java.io.UnsupportedEncodingException JavaDoc;
54
55 /**
56  * class representing a /Page object.
57  *
58  * There is one of these for every page in a PDF document. The object
59  * specifies the dimensions of the page and references a /Resources
60  * object, a contents stream and the page's parent in the page
61  * hierarchy.
62  *
63  * Modified by Mark Lillywhite, mark-fop@inomial.com. The Parent
64  * object was being referred to by reference, but all that we
65  * ever used from the Parent was it's PDF object ID, and according
66  * to the memory profile this was causing OOM issues. So, we store
67  * only the object ID of the parent, rather than the parent itself.
68  */

69 public class PDFPage extends PDFObject {
70
71     /**
72      * the page's parent, a PDF reference object
73      */

74     protected String JavaDoc parent;
75
76     /**
77      * the page's /Resource object
78      */

79     protected PDFResources resources;
80
81     /**
82      * the contents stream
83      */

84     protected PDFStream contents;
85
86     /**
87      * the width of the page in points
88      */

89     protected int pagewidth;
90
91     /**
92      * the height of the page in points
93      */

94     protected int pageheight;
95
96     /**
97      * the list of annotation objects for this page
98      */

99     protected PDFAnnotList annotList;
100
101     /**
102      * create a /Page object
103      *
104      * @param number the object's number
105      * @param resources the /Resources object
106      * @param contents the content stream
107      * @param pagewidth the page's width in points
108      * @param pageheight the page's height in points
109      */

110     public PDFPage(int number, PDFResources resources, PDFStream contents,
111                    int pagewidth, int pageheight) {
112
113         /* generic creation of object */
114         super(number);
115
116         /* set fields using parameters */
117         this.resources = resources;
118         this.contents = contents;
119         this.pagewidth = pagewidth;
120         this.pageheight = pageheight;
121
122         this.annotList = null;
123     }
124
125     /**
126      * set this page's parent
127      *
128      * @param parent the /Pages object that is this page's parent
129      */

130     public void setParent(PDFPages parent) {
131         this.parent = parent.referencePDF();
132     }
133
134     /**
135      * set this page's annotation list
136      *
137      * @param annotList a PDFAnnotList list of annotations
138      */

139     public void setAnnotList(PDFAnnotList annotList) {
140         this.annotList = annotList;
141     }
142
143     /**
144      * get this page's annotation list
145      *
146      * @return annotList a PDFAnnotList list of annotations
147      */

148     public PDFAnnotList getAnnotList() {
149         return this.annotList;
150     }
151
152     public void addShading(PDFShading shading) {
153         this.resources.addShading(shading);
154     }
155
156     /**
157      * represent this object as PDF
158      *
159      * @return the PDF string
160      */

161     public byte[] toPDF() {
162         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
163
164         sb = sb.append(this.number + " " + this.generation + " obj\n"
165                        + "<< /Type /Page\n" + "/Parent "
166                        + this.parent + "\n"
167                        + "/MediaBox [ 0 0 " + this.pagewidth + " "
168                        + this.pageheight + " ]\n" + "/Resources "
169                        + this.resources.referencePDF() + "\n" + "/Contents "
170                        + this.contents.referencePDF() + "\n");
171         if (this.annotList != null) {
172             sb = sb.append("/Annots " + this.annotList.referencePDF() + "\n");
173         }
174
175         sb = sb.append(">>\nendobj\n");
176
177         try {
178             return sb.toString().getBytes(PDFDocument.ENCODING);
179         } catch (UnsupportedEncodingException JavaDoc ue) {
180             return sb.toString().getBytes();
181         }
182     }
183
184 }
185
Popular Tags