source: sourcecode/application/libraries/PHPExcel/Worksheet/HeaderFooter.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 12.2 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category   PHPExcel
22 * @package    PHPExcel_Worksheet
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_Worksheet_HeaderFooter
31 *
32 * <code>
33 * Header/Footer Formatting Syntax taken from Office Open XML Part 4 - Markup Language Reference, page 1970:
34 *
35 * There are a number of formatting codes that can be written inline with the actual header / footer text, which
36 * affect the formatting in the header or footer.
37 *
38 * Example: This example shows the text "Center Bold Header" on the first line (center section), and the date on
39 * the second line (center section).
40 *              &CCenter &"-,Bold"Bold&"-,Regular"Header_x000A_&D
41 *
42 * General Rules:
43 * There is no required order in which these codes must appear.
44 *
45 * The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again:
46 * - strikethrough
47 * - superscript
48 * - subscript
49 * Superscript and subscript cannot both be ON at same time. Whichever comes first wins and the other is ignored,
50 * while the first is ON.
51 * &L - code for "left section" (there are three header / footer locations, "left", "center", and "right"). When
52 * two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the
53 * order of appearance, and placed into the left section.
54 * &P - code for "current page #"
55 * &N - code for "total pages"
56 * &font size - code for "text font size", where font size is a font size in points.
57 * &K - code for "text font color"
58 * RGB Color is specified as RRGGBB
59 * Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade
60 * value, NN is the tint/shade value.
61 * &S - code for "text strikethrough" on / off
62 * &X - code for "text super script" on / off
63 * &Y - code for "text subscript" on / off
64 * &C - code for "center section". When two or more occurrences of this section marker exist, the contents
65 * from all markers are concatenated, in the order of appearance, and placed into the center section.
66 *
67 * &D - code for "date"
68 * &T - code for "time"
69 * &G - code for "picture as background"
70 * &U - code for "text single underline"
71 * &E - code for "double underline"
72 * &R - code for "right section". When two or more occurrences of this section marker exist, the contents
73 * from all markers are concatenated, in the order of appearance, and placed into the right section.
74 * &Z - code for "this workbook's file path"
75 * &F - code for "this workbook's file name"
76 * &A - code for "sheet tab name"
77 * &+ - code for add to page #.
78 * &- - code for subtract from page #.
79 * &"font name,font type" - code for "text font name" and "text font type", where font name and font type
80 * are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font
81 * name, it means "none specified". Both of font name and font type can be localized values.
82 * &"-,Bold" - code for "bold font style"
83 * &B - also means "bold font style".
84 * &"-,Regular" - code for "regular font style"
85 * &"-,Italic" - code for "italic font style"
86 * &I - also means "italic font style"
87 * &"-,Bold Italic" code for "bold italic font style"
88 * &O - code for "outline style"
89 * &H - code for "shadow style"
90 * </code>
91 *
92 * @category   PHPExcel
93 * @package    PHPExcel_Worksheet
94 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
95 */
96class PHPExcel_Worksheet_HeaderFooter
97{
98        /* Header/footer image location */
99        const IMAGE_HEADER_LEFT                                                 = 'LH';
100        const IMAGE_HEADER_CENTER                                               = 'CH';
101        const IMAGE_HEADER_RIGHT                                                = 'RH';
102        const IMAGE_FOOTER_LEFT                                                 = 'LF';
103        const IMAGE_FOOTER_CENTER                                               = 'CF';
104        const IMAGE_FOOTER_RIGHT                                                = 'RF';
105
106        /**
107         * OddHeader
108         *
109         * @var string
110         */
111        private $_oddHeader                     = '';
112
113        /**
114         * OddFooter
115         *
116         * @var string
117         */
118        private $_oddFooter                     = '';
119
120        /**
121         * EvenHeader
122         *
123         * @var string
124         */
125        private $_evenHeader            = '';
126
127        /**
128         * EvenFooter
129         *
130         * @var string
131         */
132        private $_evenFooter            = '';
133
134        /**
135         * FirstHeader
136         *
137         * @var string
138         */
139        private $_firstHeader           = '';
140
141        /**
142         * FirstFooter
143         *
144         * @var string
145         */
146        private $_firstFooter           = '';
147
148        /**
149         * Different header for Odd/Even, defaults to false
150         *
151         * @var boolean
152         */
153        private $_differentOddEven      = false;
154
155        /**
156         * Different header for first page, defaults to false
157         *
158         * @var boolean
159         */
160        private $_differentFirst        = false;
161
162        /**
163         * Scale with document, defaults to true
164         *
165         * @var boolean
166         */
167        private $_scaleWithDocument     = true;
168
169        /**
170         * Align with margins, defaults to true
171         *
172         * @var boolean
173         */
174        private $_alignWithMargins      = true;
175
176        /**
177         * Header/footer images
178         *
179         * @var PHPExcel_Worksheet_HeaderFooterDrawing[]
180         */
181        private $_headerFooterImages = array();
182
183    /**
184     * Create a new PHPExcel_Worksheet_HeaderFooter
185     */
186    public function __construct()
187    {
188    }
189
190    /**
191     * Get OddHeader
192     *
193     * @return string
194     */
195    public function getOddHeader() {
196        return $this->_oddHeader;
197    }
198
199    /**
200     * Set OddHeader
201     *
202     * @param string $pValue
203     * @return PHPExcel_Worksheet_HeaderFooter
204     */
205    public function setOddHeader($pValue) {
206        $this->_oddHeader = $pValue;
207        return $this;
208    }
209
210    /**
211     * Get OddFooter
212     *
213     * @return string
214     */
215    public function getOddFooter() {
216        return $this->_oddFooter;
217    }
218
219    /**
220     * Set OddFooter
221     *
222     * @param string $pValue
223     * @return PHPExcel_Worksheet_HeaderFooter
224     */
225    public function setOddFooter($pValue) {
226        $this->_oddFooter = $pValue;
227        return $this;
228    }
229
230    /**
231     * Get EvenHeader
232     *
233     * @return string
234     */
235    public function getEvenHeader() {
236        return $this->_evenHeader;
237    }
238
239    /**
240     * Set EvenHeader
241     *
242     * @param string $pValue
243     * @return PHPExcel_Worksheet_HeaderFooter
244     */
245    public function setEvenHeader($pValue) {
246        $this->_evenHeader = $pValue;
247        return $this;
248    }
249
250    /**
251     * Get EvenFooter
252     *
253     * @return string
254     */
255    public function getEvenFooter() {
256        return $this->_evenFooter;
257    }
258
259    /**
260     * Set EvenFooter
261     *
262     * @param string $pValue
263     * @return PHPExcel_Worksheet_HeaderFooter
264     */
265    public function setEvenFooter($pValue) {
266        $this->_evenFooter = $pValue;
267        return $this;
268    }
269
270    /**
271     * Get FirstHeader
272     *
273     * @return string
274     */
275    public function getFirstHeader() {
276        return $this->_firstHeader;
277    }
278
279    /**
280     * Set FirstHeader
281     *
282     * @param string $pValue
283     * @return PHPExcel_Worksheet_HeaderFooter
284     */
285    public function setFirstHeader($pValue) {
286        $this->_firstHeader = $pValue;
287        return $this;
288    }
289
290    /**
291     * Get FirstFooter
292     *
293     * @return string
294     */
295    public function getFirstFooter() {
296        return $this->_firstFooter;
297    }
298
299    /**
300     * Set FirstFooter
301     *
302     * @param string $pValue
303     * @return PHPExcel_Worksheet_HeaderFooter
304     */
305    public function setFirstFooter($pValue) {
306        $this->_firstFooter = $pValue;
307        return $this;
308    }
309
310    /**
311     * Get DifferentOddEven
312     *
313     * @return boolean
314     */
315    public function getDifferentOddEven() {
316        return $this->_differentOddEven;
317    }
318
319    /**
320     * Set DifferentOddEven
321     *
322     * @param boolean $pValue
323     * @return PHPExcel_Worksheet_HeaderFooter
324     */
325    public function setDifferentOddEven($pValue = false) {
326        $this->_differentOddEven = $pValue;
327        return $this;
328    }
329
330    /**
331     * Get DifferentFirst
332     *
333     * @return boolean
334     */
335    public function getDifferentFirst() {
336        return $this->_differentFirst;
337    }
338
339    /**
340     * Set DifferentFirst
341     *
342     * @param boolean $pValue
343     * @return PHPExcel_Worksheet_HeaderFooter
344     */
345    public function setDifferentFirst($pValue = false) {
346        $this->_differentFirst = $pValue;
347        return $this;
348    }
349
350    /**
351     * Get ScaleWithDocument
352     *
353     * @return boolean
354     */
355    public function getScaleWithDocument() {
356        return $this->_scaleWithDocument;
357    }
358
359    /**
360     * Set ScaleWithDocument
361     *
362     * @param boolean $pValue
363     * @return PHPExcel_Worksheet_HeaderFooter
364     */
365    public function setScaleWithDocument($pValue = true) {
366        $this->_scaleWithDocument = $pValue;
367        return $this;
368    }
369
370    /**
371     * Get AlignWithMargins
372     *
373     * @return boolean
374     */
375    public function getAlignWithMargins() {
376        return $this->_alignWithMargins;
377    }
378
379    /**
380     * Set AlignWithMargins
381     *
382     * @param boolean $pValue
383     * @return PHPExcel_Worksheet_HeaderFooter
384     */
385    public function setAlignWithMargins($pValue = true) {
386        $this->_alignWithMargins = $pValue;
387        return $this;
388    }
389
390    /**
391     * Add header/footer image
392     *
393     * @param PHPExcel_Worksheet_HeaderFooterDrawing $image
394     * @param string $location
395     * @throws PHPExcel_Exception
396     * @return PHPExcel_Worksheet_HeaderFooter
397     */
398    public function addImage(PHPExcel_Worksheet_HeaderFooterDrawing $image = null, $location = self::IMAGE_HEADER_LEFT) {
399        $this->_headerFooterImages[$location] = $image;
400        return $this;
401    }
402
403    /**
404     * Remove header/footer image
405     *
406     * @param string $location
407     * @throws PHPExcel_Exception
408     * @return PHPExcel_Worksheet_HeaderFooter
409     */
410    public function removeImage($location = self::IMAGE_HEADER_LEFT) {
411        if (isset($this->_headerFooterImages[$location])) {
412                unset($this->_headerFooterImages[$location]);
413        }
414        return $this;
415    }
416
417    /**
418     * Set header/footer images
419     *
420     * @param PHPExcel_Worksheet_HeaderFooterDrawing[] $images
421     * @throws PHPExcel_Exception
422     * @return PHPExcel_Worksheet_HeaderFooter
423     */
424    public function setImages($images) {
425        if (!is_array($images)) {
426                throw new PHPExcel_Exception('Invalid parameter!');
427        }
428
429        $this->_headerFooterImages = $images;
430        return $this;
431    }
432
433    /**
434     * Get header/footer images
435     *
436     * @return PHPExcel_Worksheet_HeaderFooterDrawing[]
437     */
438    public function getImages() {
439        // Sort array
440        $images = array();
441        if (isset($this->_headerFooterImages[self::IMAGE_HEADER_LEFT]))         $images[self::IMAGE_HEADER_LEFT] =              $this->_headerFooterImages[self::IMAGE_HEADER_LEFT];
442        if (isset($this->_headerFooterImages[self::IMAGE_HEADER_CENTER]))       $images[self::IMAGE_HEADER_CENTER] =    $this->_headerFooterImages[self::IMAGE_HEADER_CENTER];
443        if (isset($this->_headerFooterImages[self::IMAGE_HEADER_RIGHT]))        $images[self::IMAGE_HEADER_RIGHT] =     $this->_headerFooterImages[self::IMAGE_HEADER_RIGHT];
444        if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_LEFT]))         $images[self::IMAGE_FOOTER_LEFT] =              $this->_headerFooterImages[self::IMAGE_FOOTER_LEFT];
445        if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_CENTER]))       $images[self::IMAGE_FOOTER_CENTER] =    $this->_headerFooterImages[self::IMAGE_FOOTER_CENTER];
446        if (isset($this->_headerFooterImages[self::IMAGE_FOOTER_RIGHT]))        $images[self::IMAGE_FOOTER_RIGHT] =     $this->_headerFooterImages[self::IMAGE_FOOTER_RIGHT];
447        $this->_headerFooterImages = $images;
448
449        return $this->_headerFooterImages;
450    }
451
452        /**
453         * Implement PHP __clone to create a deep clone, not just a shallow copy.
454         */
455        public function __clone() {
456                $vars = get_object_vars($this);
457                foreach ($vars as $key => $value) {
458                        if (is_object($value)) {
459                                $this->$key = clone $value;
460                        } else {
461                                $this->$key = $value;
462                        }
463                }
464        }
465}
Note: See TracBrowser for help on using the repository browser.