Blame view

src/lib/PHPExcel/Writer/PDF/DomPDF.php 4.25 KB
ef60cd4d   Administrator   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);
      }
  
  }