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: 31: 32: 33: 34: 35:
36: abstract class PHPExcel_Writer_PDF_Core extends PHPExcel_Writer_HTML
37: {
38: 39: 40: 41: 42:
43: protected $_tempDir = '';
44:
45: 46: 47: 48: 49:
50: protected $_font = 'freesans';
51:
52: 53: 54: 55: 56:
57: protected $_orientation = NULL;
58:
59: 60: 61: 62: 63:
64: protected $_paperSize = NULL;
65:
66:
67: 68: 69: 70: 71:
72: private $_saveArrayReturnType;
73:
74: 75: 76: 77: 78:
79: protected static $_paperSizes = array(
80: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER
81: => 'LETTER',
82: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_SMALL
83: => 'LETTER',
84: PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID
85: => array(792.00, 1224.00),
86: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEDGER
87: => array(1224.00, 792.00),
88: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL
89: => 'LEGAL',
90: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STATEMENT
91: => array(396.00, 612.00),
92: PHPExcel_Worksheet_PageSetup::PAPERSIZE_EXECUTIVE
93: => 'EXECUTIVE',
94: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3
95: => 'A3',
96: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4
97: => 'A4',
98: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_SMALL
99: => 'A4',
100: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5
101: => 'A5',
102: PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4
103: => 'B4',
104: PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5
105: => 'B5',
106: PHPExcel_Worksheet_PageSetup::PAPERSIZE_FOLIO
107: => 'FOLIO',
108: PHPExcel_Worksheet_PageSetup::PAPERSIZE_QUARTO
109: => array(609.45, 779.53),
110: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_1
111: => array(720.00, 1008.00),
112: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_2
113: => array(792.00, 1224.00),
114: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NOTE
115: => 'LETTER',
116: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO9_ENVELOPE
117: => array(279.00, 639.00),
118: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO10_ENVELOPE
119: => array(297.00, 684.00),
120: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO11_ENVELOPE
121: => array(324.00, 747.00),
122: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO12_ENVELOPE
123: => array(342.00, 792.00),
124: PHPExcel_Worksheet_PageSetup::PAPERSIZE_NO14_ENVELOPE
125: => array(360.00, 828.00),
126: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C
127: => array(1224.00, 1584.00),
128: PHPExcel_Worksheet_PageSetup::PAPERSIZE_D
129: => array(1584.00, 2448.00),
130: PHPExcel_Worksheet_PageSetup::PAPERSIZE_E
131: => array(2448.00, 3168.00),
132: PHPExcel_Worksheet_PageSetup::PAPERSIZE_DL_ENVELOPE
133: => array(311.81, 623.62),
134: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C5_ENVELOPE
135: => 'C5',
136: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C3_ENVELOPE
137: => 'C3',
138: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C4_ENVELOPE
139: => 'C4',
140: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C6_ENVELOPE
141: => 'C6',
142: PHPExcel_Worksheet_PageSetup::PAPERSIZE_C65_ENVELOPE
143: => array(323.15, 649.13),
144: PHPExcel_Worksheet_PageSetup::PAPERSIZE_B4_ENVELOPE
145: => 'B4',
146: PHPExcel_Worksheet_PageSetup::PAPERSIZE_B5_ENVELOPE
147: => 'B5',
148: PHPExcel_Worksheet_PageSetup::PAPERSIZE_B6_ENVELOPE
149: => array(498.90, 354.33),
150: PHPExcel_Worksheet_PageSetup::PAPERSIZE_ITALY_ENVELOPE
151: => array(311.81, 651.97),
152: PHPExcel_Worksheet_PageSetup::PAPERSIZE_MONARCH_ENVELOPE
153: => array(279.00, 540.00),
154: PHPExcel_Worksheet_PageSetup::PAPERSIZE_6_3_4_ENVELOPE
155: => array(261.00, 468.00),
156: PHPExcel_Worksheet_PageSetup::PAPERSIZE_US_STANDARD_FANFOLD
157: => array(1071.00, 792.00),
158: PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_STANDARD_FANFOLD
159: => array(612.00, 864.00),
160: PHPExcel_Worksheet_PageSetup::PAPERSIZE_GERMAN_LEGAL_FANFOLD
161: => 'FOLIO',
162: PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B4
163: => 'B4',
164: PHPExcel_Worksheet_PageSetup::PAPERSIZE_JAPANESE_DOUBLE_POSTCARD
165: => array(566.93, 419.53),
166: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_1
167: => array(648.00, 792.00),
168: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_2
169: => array(720.00, 792.00),
170: PHPExcel_Worksheet_PageSetup::PAPERSIZE_STANDARD_PAPER_3
171: => array(1080.00, 792.00),
172: PHPExcel_Worksheet_PageSetup::PAPERSIZE_INVITE_ENVELOPE
173: => array(623.62, 623.62),
174: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_PAPER
175: => array(667.80, 864.00),
176: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LEGAL_EXTRA_PAPER
177: => array(667.80, 1080.00),
178: PHPExcel_Worksheet_PageSetup::PAPERSIZE_TABLOID_EXTRA_PAPER
179: => array(841.68, 1296.00),
180: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_EXTRA_PAPER
181: => array(668.98, 912.76),
182: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_TRANSVERSE_PAPER
183: => array(595.80, 792.00),
184: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_TRANSVERSE_PAPER
185: => 'A4',
186: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_EXTRA_TRANSVERSE_PAPER
187: => array(667.80, 864.00),
188: PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERA_SUPERA_A4_PAPER
189: => array(643.46, 1009.13),
190: PHPExcel_Worksheet_PageSetup::PAPERSIZE_SUPERB_SUPERB_A3_PAPER
191: => array(864.57, 1380.47),
192: PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER_PLUS_PAPER
193: => array(612.00, 913.68),
194: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4_PLUS_PAPER
195: => array(595.28, 935.43),
196: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_TRANSVERSE_PAPER
197: => 'A5',
198: PHPExcel_Worksheet_PageSetup::PAPERSIZE_JIS_B5_TRANSVERSE_PAPER
199: => array(515.91, 728.50),
200: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_PAPER
201: => array(912.76, 1261.42),
202: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A5_EXTRA_PAPER
203: => array(493.23, 666.14),
204: PHPExcel_Worksheet_PageSetup::PAPERSIZE_ISO_B5_EXTRA_PAPER
205: => array(569.76, 782.36),
206: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER
207: => 'A2',
208: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_TRANSVERSE_PAPER
209: => 'A3',
210: PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER
211: => array(912.76, 1261.42)
212: );
213:
214: 215: 216: 217: 218:
219: public function __construct(PHPExcel $phpExcel)
220: {
221: parent::__construct($phpExcel);
222: $this->setUseInlineCss(TRUE);
223: $this->_tempDir = PHPExcel_Shared_File::sys_get_temp_dir();
224: }
225:
226: 227: 228: 229: 230:
231: public function getFont()
232: {
233: return $this->_font;
234: }
235:
236: 237: 238: 239: 240: 241: 242: 243: 244:
245: public function setFont($fontName)
246: {
247: $this->_font = $fontName;
248: return $this;
249: }
250:
251: 252: 253: 254: 255:
256: public function getPaperSize()
257: {
258: return $this->_paperSize;
259: }
260:
261: 262: 263: 264: 265: 266:
267: public function setPaperSize($pValue = PHPExcel_Worksheet_PageSetup::PAPERSIZE_LETTER)
268: {
269: $this->_paperSize = $pValue;
270: return $this;
271: }
272:
273: 274: 275: 276: 277:
278: public function getOrientation()
279: {
280: return $this->_orientation;
281: }
282:
283: 284: 285: 286: 287: 288:
289: public function setOrientation($pValue = PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT)
290: {
291: $this->_orientation = $pValue;
292: return $this;
293: }
294:
295: 296: 297: 298: 299:
300: public function getTempDir()
301: {
302: return $this->_tempDir;
303: }
304:
305: 306: 307: 308: 309: 310: 311:
312: public function setTempDir($pValue = '')
313: {
314: if (is_dir($pValue)) {
315: $this->_tempDir = $pValue;
316: } else {
317: throw new PHPExcel_Writer_Exception("Directory does not exist: $pValue");
318: }
319: return $this;
320: }
321:
322: 323: 324: 325: 326: 327:
328: protected function prepareForSave($pFilename = NULL)
329: {
330:
331: $this->_phpExcel->garbageCollect();
332:
333: $this->_saveArrayReturnType = PHPExcel_Calculation::getArrayReturnType();
334: PHPExcel_Calculation::setArrayReturnType(PHPExcel_Calculation::RETURN_ARRAY_AS_VALUE);
335:
336:
337: $fileHandle = fopen($pFilename, 'w');
338: if ($fileHandle === FALSE) {
339: throw new PHPExcel_Writer_Exception("Could not open file $pFilename for writing.");
340: }
341:
342:
343: $this->_isPdf = TRUE;
344:
345: $this->buildCSS(TRUE);
346:
347: return $fileHandle;
348: }
349:
350: 351: 352: 353: 354: 355:
356: protected function restoreStateAfterSave($fileHandle)
357: {
358:
359: fclose($fileHandle);
360:
361: PHPExcel_Calculation::setArrayReturnType($this->_saveArrayReturnType);
362: }
363:
364: }
365: