source: sourcecode/application/libraries/PHPExcel/Writer/PDF/DomPDF.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 4.3 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_Writer_PDF
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/**  Require DomPDF library */
30$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php';
31if (file_exists($pdfRendererClassFile)) {
32    require_once $pdfRendererClassFile;
33} else {
34    throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library');
35}
36
37/**
38 *  PHPExcel_Writer_PDF_DomPDF
39 *
40 *  @category    PHPExcel
41 *  @package     PHPExcel_Writer_PDF
42 *  @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
43 */
44class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter
45{
46    /**
47     *  Create a new PHPExcel_Writer_PDF
48     *
49     *  @param   PHPExcel    $phpExcel    PHPExcel object
50     */
51    public function __construct(PHPExcel $phpExcel)
52    {
53        parent::__construct($phpExcel);
54    }
55
56    /**
57     *  Save PHPExcel to file
58     *
59     *  @param   string     $pFilename   Name of the file to save as
60     *  @throws  PHPExcel_Writer_Exception
61     */
62    public function save($pFilename = NULL)
63    {
64        $fileHandle = parent::prepareForSave($pFilename);
65
66        //  Default PDF paper size
67        $paperSize = 'LETTER';    //    Letter    (8.5 in. by 11 in.)
68
69        //  Check for paper size and page orientation
70        if (is_null($this->getSheetIndex())) {
71            $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation()
72                == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)
73                    ? 'L'
74                    : 'P';
75            $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
76            $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
77        } else {
78            $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()
79                == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)
80                    ? 'L'
81                    : 'P';
82            $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
83            $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
84        }
85
86        //  Override Page Orientation
87        if (!is_null($this->getOrientation())) {
88            $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT)
89                ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT
90                : $this->getOrientation();
91        }
92        //  Override Paper Size
93        if (!is_null($this->getPaperSize())) {
94            $printPaperSize = $this->getPaperSize();
95        }
96
97        if (isset(self::$_paperSizes[$printPaperSize])) {
98            $paperSize = self::$_paperSizes[$printPaperSize];
99        }
100
101        $orientation = ($orientation == 'L') ? 'landscape' : 'portrait';
102
103        //  Create PDF
104        $pdf = new DOMPDF();
105        $pdf->set_paper(strtolower($paperSize), $orientation);
106
107        $pdf->load_html(
108            $this->generateHTMLHeader(FALSE) .
109            $this->generateSheetData() .
110            $this->generateHTMLFooter()
111        );
112        $pdf->render();
113
114        //  Write to file
115        fwrite($fileHandle, $pdf->output());
116
117                parent::restoreStateAfterSave($fileHandle);
118    }
119
120}
Note: See TracBrowser for help on using the repository browser.