You are here

tcPDF.php in Loft Data Grids 7.2

Same filename and directory in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/PDF/tcPDF.php

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/PDF/tcPDF.php
View source
<?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     ##VERSION##, ##DATE##
 */

/**  Require tcPDF library */
$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/tcpdf.php';
if (file_exists($pdfRendererClassFile)) {
  $k_path_url = PHPExcel_Settings::getPdfRendererPath();
  require_once $pdfRendererClassFile;
}
else {
  throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library');
}

/**
 *  PHPExcel_Writer_PDF_tcPDF
 *
 *  @category    PHPExcel
 *  @package     PHPExcel_Writer_PDF
 *  @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 */
class PHPExcel_Writer_PDF_tcPDF 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_LANDSCAPE ? 'L' : 'P';
    }

    //  Override Paper Size
    if (!is_null($this
      ->getPaperSize())) {
      $printPaperSize = $this
        ->getPaperSize();
    }
    if (isset(self::$_paperSizes[$printPaperSize])) {
      $paperSize = self::$_paperSizes[$printPaperSize];
    }

    //  Create PDF
    $pdf = new TCPDF($orientation, 'pt', $paperSize);
    $pdf
      ->setFontSubsetting(FALSE);

    //    Set margins, converting inches to points (using 72 dpi)
    $pdf
      ->SetMargins($printMargins
      ->getLeft() * 72, $printMargins
      ->getTop() * 72, $printMargins
      ->getRight() * 72);
    $pdf
      ->SetAutoPageBreak(TRUE, $printMargins
      ->getBottom() * 72);
    $pdf
      ->setPrintHeader(FALSE);
    $pdf
      ->setPrintFooter(FALSE);
    $pdf
      ->AddPage();

    //  Set the appropriate font
    $pdf
      ->SetFont($this
      ->getFont());
    $pdf
      ->writeHTML($this
      ->generateHTMLHeader(FALSE) . $this
      ->generateSheetData() . $this
      ->generateHTMLFooter());

    //  Document info
    $pdf
      ->SetTitle($this->_phpExcel
      ->getProperties()
      ->getTitle());
    $pdf
      ->SetAuthor($this->_phpExcel
      ->getProperties()
      ->getCreator());
    $pdf
      ->SetSubject($this->_phpExcel
      ->getProperties()
      ->getSubject());
    $pdf
      ->SetKeywords($this->_phpExcel
      ->getProperties()
      ->getKeywords());
    $pdf
      ->SetCreator($this->_phpExcel
      ->getProperties()
      ->getCreator());

    //  Write to file
    fwrite($fileHandle, $pdf
      ->output($pFilename, 'S'));
    parent::restoreStateAfterSave($fileHandle);
  }

}

Classes

Namesort descending Description
PHPExcel_Writer_PDF_tcPDF PHPExcel_Writer_PDF_tcPDF