1: <?php
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: $pdfRendererClassFile = PHPExcel_Settings::getPdfRendererPath() . '/dompdf_config.inc.php';
31: if (file_exists($pdfRendererClassFile)) {
32: require_once $pdfRendererClassFile;
33: } else {
34: throw new PHPExcel_Writer_Exception('Unable to load PDF Rendering library');
35: }
36:
37: 38: 39: 40: 41: 42: 43:
44: class PHPExcel_Writer_PDF_DomPDF extends PHPExcel_Writer_PDF_Core implements PHPExcel_Writer_IWriter
45: {
46: 47: 48: 49: 50:
51: public function __construct(PHPExcel $phpExcel)
52: {
53: parent::__construct($phpExcel);
54: }
55:
56: 57: 58: 59: 60: 61:
62: public function save($pFilename = NULL)
63: {
64: $fileHandle = parent::prepareForSave($pFilename);
65:
66:
67: $paperSize = 'LETTER';
68:
69:
70: if (is_null($this->getSheetIndex())) {
71: $orientation = ($this->_phpExcel->getSheet(0)->getPageSetup()->getOrientation()
72: == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)
73: ? 'L'
74: : 'P';
75: $printPaperSize = $this->_phpExcel->getSheet(0)->getPageSetup()->getPaperSize();
76: $printMargins = $this->_phpExcel->getSheet(0)->getPageMargins();
77: } else {
78: $orientation = ($this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()
79: == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE)
80: ? 'L'
81: : 'P';
82: $printPaperSize = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
83: $printMargins = $this->_phpExcel->getSheet($this->getSheetIndex())->getPageMargins();
84: }
85:
86:
87: if (!is_null($this->getOrientation())) {
88: $orientation = ($this->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT)
89: ? PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT
90: : $this->getOrientation();
91: }
92:
93: if (!is_null($this->getPaperSize())) {
94: $printPaperSize = $this->getPaperSize();
95: }
96:
97: if (isset(self::$_paperSizes[$printPaperSize])) {
98: $paperSize = self::$_paperSizes[$printPaperSize];
99: }
100:
101: $orientation = ($orientation == 'L') ? 'landscape' : 'portrait';
102:
103:
104: $pdf = new DOMPDF();
105: $pdf->set_paper(strtolower($paperSize), $orientation);
106:
107: $pdf->load_html(
108: $this->generateHTMLHeader(FALSE) .
109: $this->generateSheetData() .
110: $this->generateHTMLFooter()
111: );
112: $pdf->render();
113:
114:
115: fwrite($fileHandle, $pdf->output());
116:
117: parent::restoreStateAfterSave($fileHandle);
118: }
119:
120: }
121: