1<?php 2 3namespace Mpdf\Writer; 4 5use Mpdf\Strict; 6use Mpdf\Mpdf; 7use pdf_parser; 8 9final class ObjectWriter 10{ 11 12 use Strict; 13 14 /** 15 * @var \Mpdf\Mpdf 16 */ 17 private $mpdf; 18 19 /** 20 * @var \Mpdf\Writer\BaseWriter 21 */ 22 private $writer; 23 24 public function __construct(Mpdf $mpdf, BaseWriter $writer) 25 { 26 $this->mpdf = $mpdf; 27 $this->writer = $writer; 28 } 29 30 public function writeImportedObjects() 31 { 32 if (is_array($this->mpdf->parsers) && count($this->mpdf->parsers) > 0) { 33 34 foreach ($this->mpdf->parsers as $filename => $p) { 35 36 $this->mpdf->current_parser = $this->mpdf->parsers[$filename]; 37 38 if (is_array($this->mpdf->_obj_stack[$filename])) { 39 40 while ($n = key($this->mpdf->_obj_stack[$filename])) { 41 42 $nObj = $this->mpdf->current_parser->resolveObject($this->mpdf->_obj_stack[$filename][$n][1]); 43 $this->writer->object($this->mpdf->_obj_stack[$filename][$n][0]); 44 45 if ($nObj[0] == pdf_parser::TYPE_STREAM) { 46 $this->mpdf->pdf_write_value($nObj); 47 } else { 48 $this->mpdf->pdf_write_value($nObj[1]); 49 } 50 51 $this->writer->write('endobj'); 52 53 $this->mpdf->_obj_stack[$filename][$n] = null; // free memory 54 55 unset($this->mpdf->_obj_stack[$filename][$n]); 56 57 reset($this->mpdf->_obj_stack[$filename]); 58 } 59 } 60 } 61 } 62 } 63 64} 65