1 | /* | |
2 | * $Id: PdfPage.java 3373 2008-05-12 16:21:24Z xlv $ | |
3 | * | |
4 | * Copyright 1999, 2000, 2001, 2002 Bruno Lowagie | |
5 | * | |
6 | * The contents of this file are subject to the Mozilla Public License Version 1.1 | |
7 | * (the "License"); you may not use this file except in compliance with the License. | |
8 | * You may obtain a copy of the License at http://www.mozilla.org/MPL/ | |
9 | * | |
10 | * Software distributed under the License is distributed on an "AS IS" basis, | |
11 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
12 | * for the specific language governing rights and limitations under the License. | |
13 | * | |
14 | * The Original Code is 'iText, a free JAVA-PDF library'. | |
15 | * | |
16 | * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by | |
17 | * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie. | |
18 | * All Rights Reserved. | |
19 | * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer | |
20 | * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved. | |
21 | * | |
22 | * Contributor(s): all the names of the contributors are added in the source code | |
23 | * where applicable. | |
24 | * | |
25 | * Alternatively, the contents of this file may be used under the terms of the | |
26 | * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the | |
27 | * provisions of LGPL are applicable instead of those above. If you wish to | |
28 | * allow use of your version of this file only under the terms of the LGPL | |
29 | * License and not to allow others to use your version of this file under | |
30 | * the MPL, indicate your decision by deleting the provisions above and | |
31 | * replace them with the notice and other provisions required by the LGPL. | |
32 | * If you do not delete the provisions above, a recipient may use your version | |
33 | * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE. | |
34 | * | |
35 | * This library is free software; you can redistribute it and/or modify it | |
36 | * under the terms of the MPL as stated above or under the terms of the GNU | |
37 | * Library General Public License as published by the Free Software Foundation; | |
38 | * either version 2 of the License, or any later version. | |
39 | * | |
40 | * This library is distributed in the hope that it will be useful, but WITHOUT | |
41 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
42 | * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more | |
43 | * details. | |
44 | * | |
45 | * If you didn't download this code from the following link, you should check if | |
46 | * you aren't using an obsolete version: | |
47 | * http://www.lowagie.com/iText/ | |
48 | */ | |
49 | ||
50 | package com.lowagie.text.pdf; | |
51 | ||
52 | import java.util.HashMap; | |
53 | ||
54 | /** | |
55 | * <CODE>PdfPage</CODE> is the PDF Page-object. | |
56 | * <P> | |
57 | * A Page object is a dictionary whose keys describe a single page containing text, graphics, and images. A Page object is a leaf of the | |
58 | * Pages tree.<BR> This object is described in the 'Portable Document Format Reference Manual version 1.3' section 6.4 (page 73-81) | |
59 | * | |
60 | * @see PdfPages | |
61 | */ | |
62 | ||
63 | public class PdfPage extends PdfDictionary { | |
64 | ||
65 | private static final String[] boxStrings = {"crop", "trim", "art", "bleed"}; | |
66 | private static final PdfName[] boxNames = {PdfName.CROPBOX, PdfName.TRIMBOX, PdfName.ARTBOX, PdfName.BLEEDBOX}; | |
67 | // membervariables | |
68 | ||
69 | /** | |
70 | * value of the <B>Rotate</B> key for a page in PORTRAIT | |
71 | */ | |
72 | public static final PdfNumber PORTRAIT = new PdfNumber(0); | |
73 | ||
74 | /** | |
75 | * value of the <B>Rotate</B> key for a page in LANDSCAPE | |
76 | */ | |
77 | public static final PdfNumber LANDSCAPE = new PdfNumber(90); | |
78 | ||
79 | /** | |
80 | * value of the <B>Rotate</B> key for a page in INVERTEDPORTRAIT | |
81 | */ | |
82 | public static final PdfNumber INVERTEDPORTRAIT = new PdfNumber(180); | |
83 | ||
84 | /** | |
85 | * value of the <B>Rotate</B> key for a page in SEASCAPE | |
86 | */ | |
87 | public static final PdfNumber SEASCAPE = new PdfNumber(270); | |
88 | ||
89 | /** | |
90 | * value of the <B>MediaBox</B> key | |
91 | */ | |
92 | PdfRectangle mediaBox; | |
93 | ||
94 | // constructors | |
95 | ||
96 | /** | |
97 | * Constructs a <CODE>PdfPage</CODE>. | |
98 | * | |
99 | * @param mediaBox a value for the <B>MediaBox</B> key | |
100 | * @param resources an indirect reference to a <CODE>PdfResources</CODE>-object | |
101 | * @param rotate a value for the <B>Rotate</B> key | |
102 | */ | |
103 | ||
104 | PdfPage(PdfRectangle mediaBox, HashMap<String, ? extends PdfObject> boxSize, PdfDictionary resources, int rotate) { | |
105 | super(PAGE); | |
106 | this.mediaBox = mediaBox; | |
107 |
1
1. |
put(PdfName.MEDIABOX, mediaBox); |
108 |
1
1. |
put(PdfName.RESOURCES, resources); |
109 |
1
1. |
if (rotate != 0) { |
110 |
1
1. |
put(PdfName.ROTATE, new PdfNumber(rotate)); |
111 | } | |
112 |
3
1. 2. 3. |
for (int k = 0; k < boxStrings.length; ++k) { |
113 | PdfObject rect = boxSize.get(boxStrings[k]); | |
114 |
1
1. |
if (rect != null) { |
115 |
1
1. |
put(boxNames[k], rect); |
116 | } | |
117 | } | |
118 | } | |
119 | ||
120 | /** | |
121 | * Constructs a <CODE>PdfPage</CODE>. | |
122 | * | |
123 | * @param mediaBox a value for the <B>MediaBox</B> key | |
124 | * @param resources an indirect reference to a <CODE>PdfResources</CODE>-object | |
125 | */ | |
126 | ||
127 | PdfPage(PdfRectangle mediaBox, HashMap<String, ? extends PdfObject> boxSize, PdfDictionary resources) { | |
128 | this(mediaBox, boxSize, resources, 0); | |
129 | } | |
130 | ||
131 | /** | |
132 | * Checks if this page element is a tree of pages. | |
133 | * <P> | |
134 | * This method always returns <CODE>false</CODE>. | |
135 | * | |
136 | * @return <CODE>false</CODE> because this is a single page | |
137 | */ | |
138 | ||
139 | public boolean isParent() { | |
140 | return false; | |
141 | } | |
142 | ||
143 | // methods | |
144 | ||
145 | /** | |
146 | * Adds an indirect reference pointing to a <CODE>PdfContents</CODE>-object. | |
147 | * | |
148 | * @param contents an indirect reference to a <CODE>PdfContents</CODE>-object | |
149 | */ | |
150 | ||
151 | void add(PdfIndirectReference contents) { | |
152 |
1
1. add : removed call to com/lowagie/text/pdf/PdfPage::put → NO_COVERAGE |
put(PdfName.CONTENTS, contents); |
153 | } | |
154 | ||
155 | /** | |
156 | * Rotates the mediabox, but not the text in it. | |
157 | * | |
158 | * @return a <CODE>PdfRectangle</CODE> | |
159 | */ | |
160 | ||
161 | PdfRectangle rotateMediaBox() { | |
162 | this.mediaBox = mediaBox.rotate(); | |
163 |
1
1. rotateMediaBox : removed call to com/lowagie/text/pdf/PdfPage::put → NO_COVERAGE |
put(PdfName.MEDIABOX, this.mediaBox); |
164 |
1
1. rotateMediaBox : mutated return of Object value for com/lowagie/text/pdf/PdfPage::rotateMediaBox to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return this.mediaBox; |
165 | } | |
166 | ||
167 | /** | |
168 | * Returns the MediaBox of this Page. | |
169 | * | |
170 | * @return a <CODE>PdfRectangle</CODE> | |
171 | */ | |
172 | ||
173 | PdfRectangle getMediaBox() { | |
174 | return mediaBox; | |
175 | } | |
176 | } | |
Mutations | ||
107 |
1.1 |
|
108 |
1.1 |
|
109 |
1.1 |
|
110 |
1.1 |
|
112 |
1.1 2.2 3.3 |
|
114 |
1.1 |
|
115 |
1.1 |
|
152 |
1.1 |
|
163 |
1.1 |
|
164 |
1.1 |