Blame view

src/lib/PHPExcel/Writer/PDF/DomPDF.php 4.37 KB
1ea3b987   Administrator   maby first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  <?php

  /**

   *  PHPExcel

   *

   *  Copyright (c) 2006 - 2014 PHPExcel

   *

   *  This library is free software; you can redistribute it and/or

   *  modify it under the terms of the GNU Lesser General Public

   *  License as published by the Free Software Foundation; either

   *  version 2.1 of the License, or (at your option) any later version.

   *

   *  This library is distributed in the hope that it will be useful,

   *  but WITHOUT ANY WARRANTY; without even the implied warranty of

   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

   *  Lesser General Public License for more details.

   *

   *  You should have received a copy of the GNU Lesser General Public

   *  License along with this library; if not, write to the Free Software

   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

   *

   *  @category    PHPExcel

   *  @package     PHPExcel_Writer_PDF

   *  @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)

   *  @license     http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL

   *  @version     1.8.0, 2014-03-02

   */

  

  

  /**  Require DomPDF library */

  $pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php';

  if (file_exists($pdfRendererClassFile)) {

      require_once $pdfRendererClassFile;

  } else {

      throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library');

  }

  

  /**

   *  PHPExcel_Writer_PDF_DomPDF

   *

   *  @category    PHPExcel

   *  @package     PHPExcel_Writer_PDF

   *  @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)

   */

  class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter

  {

      /**

       *  Create a new PHPExcel_Writer_PDF

       *

       *  @param   PHPExcel    $phpExcel    PHPExcel object

       */

      public function __construct(PHPExcel $phpExcel)

      {

          parent::__construct($phpExcel);

      }

  

      /**

       *  Save PHPExcel to file

       *

       *  @param   string     $pFilename   Name of the file to save as

       *  @throws  PHPExcel_Writer_Exception

       */

      public function save($pFilename = NULL)

      {

          $fileHandle = parent::prepareForSave($pFilename);

  

          //  Default PDF paper size

          $paperSize = 'LETTER';    //    Letter    (8.5 in. by 11 in.)

  

          //  Check for paper size and page orientation

          if (is_null($this->getSheetIndex())) {

              $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation()

                  == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)

                      ? 'L'

                      : 'P';

              $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();

              $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();

          } else {

              $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()

                  == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)

                      ? 'L'

                      : 'P';

              $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();

              $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();

          }

  

          //  Override Page Orientation

          if (!is_null($this->getOrientation())) {

              $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT)

                  ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT

                  : $this->getOrientation();

          }

          //  Override Paper Size

          if (!is_null($this->getPaperSize())) {

              $printPaperSize = $this->getPaperSize();

          }

  

          if (isset(self::$_paperSizes[$printPaperSize])) {

              $paperSize = self::$_paperSizes[$printPaperSize];

          }

  

          $orientation = ($orientation == 'L') ? 'landscape' : 'portrait';

  

          //  Create PDF

          $pdf = new DOMPDF();

          $pdf->set_paper(strtolower($paperSize), $orientation);

  

          $pdf->load_html(

              $this->generateHTMLHeader(FALSE) .

              $this->generateSheetData() .

              $this->generateHTMLFooter()

          );

          $pdf->render();

  

          //  Write to file

          fwrite($fileHandle, $pdf->output());

  

  		parent::restoreStateAfterSave($fileHandle);

      }

  

  }