| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * PHPExcel | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  |  * Copyright (c) 2006 - 2012 PHPExcel | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  |  * @copyright	Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  |  * @license		http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL | 
					
						
							|  |  |  |  * @version		##VERSION##, ##DATE##
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** Require DomPDF library */ | 
					
						
							| 
									
										
										
										
											2012-06-10 22:05:00 +00:00
										 |  |  | $pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php'; | 
					
						
							|  |  |  | if (file_exists($pdfRendererClassFile)) { | 
					
						
							|  |  |  | 	require_once $pdfRendererClassFile; | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  | 	throw new Exception('Unable to load PDF Rendering library'); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * PHPExcel_Writer_PDF_DomPDF | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category	PHPExcel | 
					
						
							|  |  |  |  * @package		PHPExcel_Writer | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  |  * @copyright	Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel) | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  | class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter { | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | 	/** | 
					
						
							|  |  |  | 	 * 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 | 
					
						
							|  |  |  | 	 * @throws 	Exception | 
					
						
							|  |  |  | 	 */ | 
					
						
							|  |  |  | 	public function save($pFilename = null) { | 
					
						
							|  |  |  | 		// garbage collect
 | 
					
						
							|  |  |  | 		$this->_phpExcel->garbageCollect(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		$saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType(); | 
					
						
							|  |  |  | 		PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Open file
 | 
					
						
							|  |  |  | 		$fileHandle = fopen($pFilename, 'w'); | 
					
						
							|  |  |  | 		if ($fileHandle === false) { | 
					
						
							|  |  |  | 			throw new Exception("Could not open file $pFilename for writing."); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Set PDF
 | 
					
						
							|  |  |  | 		$this->_isPdf = true; | 
					
						
							|  |  |  | 		// Build CSS
 | 
					
						
							|  |  |  | 		$this->buildCSS(true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// 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
 | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  | 		if (!is_null($this->getOrientation())) { | 
					
						
							|  |  |  | 			$orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT) ? | 
					
						
							|  |  |  | 				PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT : $this->getOrientation(); | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		//	Override Paper Size
 | 
					
						
							| 
									
										
										
										
											2012-06-04 16:20:43 +00:00
										 |  |  | 		if (!is_null($this->getPaperSize())) { | 
					
						
							|  |  |  | 			$printPaperSize = $this->getPaperSize(); | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if (isset(self::$_paperSizes[$printPaperSize])) { | 
					
						
							|  |  |  | 			$paperSize = self::$_paperSizes[$printPaperSize]; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Create PDF
 | 
					
						
							|  |  |  | 		$pdf = new DOMPDF(); | 
					
						
							|  |  |  | 		$pdf->set_paper(strtolower($paperSize), strtolower($orientation)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-04 21:34:16 +00:00
										 |  |  | 		$pdf->load_html( | 
					
						
							|  |  |  | 			$this->generateHTMLHeader(false) . | 
					
						
							|  |  |  | 			$this->generateSheetData() . | 
					
						
							|  |  |  | 			$this->generateHTMLFooter() | 
					
						
							|  |  |  | 		); | 
					
						
							| 
									
										
										
										
											2012-06-03 21:20:05 +00:00
										 |  |  | 		$pdf->render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Write to file
 | 
					
						
							|  |  |  | 		fwrite($fileHandle, $pdf->output()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// Close file
 | 
					
						
							|  |  |  | 		fclose($fileHandle); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		PHPExcel_Calculation::setArrayReturnType($saveArrayReturnType); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |