Created
September 7, 2016 06:41
-
-
Save Madawar/722525a9e2a0a3e295fbc237c77cc36f to your computer and use it in GitHub Desktop.
DOmPDF for PHPExcel Fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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 DomPDF library */ | |
$pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/autoload.inc.php'; | |
if (file_exists($pdfRendererClassFile)) { | |
require_once $pdfRendererClassFile; | |
} else { | |
throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library'); | |
} | |
use Dompdf\Dompdf; | |
/** | |
* 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(); | |
} | |
$orientation = ($orientation == 'L') ? 'landscape' : 'portrait'; | |
// 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]; | |
} | |
// 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); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment