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