1<?php
2
3namespace Mpdf;
4
5use Mpdf\Color\ColorConverter;
6use Mpdf\Color\ColorModeConverter;
7use Mpdf\Color\ColorSpaceRestrictor;
8
9use Mpdf\Fonts\FontCache;
10use Mpdf\Fonts\FontFileFinder;
11
12use \dokuwiki\plugin\dw2pdf\DokuImageProcessorDecorator as ImageProcessor;
13
14use Mpdf\Pdf\Protection;
15use Mpdf\Pdf\Protection\UniqidGenerator;
16
17use Mpdf\Writer\BaseWriter;
18use Mpdf\Writer\BackgroundWriter;
19use Mpdf\Writer\ColorWriter;
20use Mpdf\Writer\BookmarkWriter;
21use Mpdf\Writer\FontWriter;
22use Mpdf\Writer\FormWriter;
23use Mpdf\Writer\ImageWriter;
24use Mpdf\Writer\JavaScriptWriter;
25use Mpdf\Writer\MetadataWriter;
26use Mpdf\Writer\OptionalContentWriter;
27use Mpdf\Writer\PageWriter;
28
29use Mpdf\Writer\ResourceWriter;
30use Psr\Log\LoggerInterface;
31
32class ServiceFactory
33{
34
35	public function getServices(
36		Mpdf $mpdf,
37		LoggerInterface $logger,
38		$config,
39		$restrictColorSpace,
40		$languageToFont,
41		$scriptToLanguage,
42		$fontDescriptor,
43		$bmp,
44		$directWrite,
45		$wmf
46	) {
47		$sizeConverter = new SizeConverter($mpdf->dpi, $mpdf->default_font_size, $mpdf, $logger);
48
49		$colorModeConverter = new ColorModeConverter();
50		$colorSpaceRestrictor = new ColorSpaceRestrictor(
51			$mpdf,
52			$colorModeConverter,
53			$restrictColorSpace
54		);
55		$colorConverter = new ColorConverter($mpdf, $colorModeConverter, $colorSpaceRestrictor);
56
57		$tableOfContents = new TableOfContents($mpdf, $sizeConverter);
58
59		$cache = new Cache($config['tempDir']);
60		$fontCache = new FontCache(new Cache($config['tempDir'] . '/ttfontdata'));
61
62		$fontFileFinder = new FontFileFinder($config['fontDir']);
63
64		$cssManager = new CssManager($mpdf, $cache, $sizeConverter, $colorConverter);
65
66		$otl = new Otl($mpdf, $fontCache);
67
68		$protection = new Protection(new UniqidGenerator());
69
70		$writer = new BaseWriter($mpdf, $protection);
71
72		$gradient = new Gradient($mpdf, $sizeConverter, $colorConverter, $writer);
73
74		$formWriter = new FormWriter($mpdf, $writer);
75
76		$form = new Form($mpdf, $otl, $colorConverter, $writer, $formWriter);
77
78		$hyphenator = new Hyphenator($mpdf);
79
80		$remoteContentFetcher = new RemoteContentFetcher($mpdf, $logger);
81
82		$imageProcessor = new ImageProcessor(
83			$mpdf,
84			$otl,
85			$cssManager,
86			$sizeConverter,
87			$colorConverter,
88			$colorModeConverter,
89			$cache,
90			$languageToFont,
91			$scriptToLanguage,
92			$remoteContentFetcher,
93			$logger
94		);
95
96		$tag = new Tag(
97			$mpdf,
98			$cache,
99			$cssManager,
100			$form,
101			$otl,
102			$tableOfContents,
103			$sizeConverter,
104			$colorConverter,
105			$imageProcessor,
106			$languageToFont
107		);
108
109		$fontWriter = new FontWriter($mpdf, $writer, $fontCache, $fontDescriptor);
110		$metadataWriter = new MetadataWriter($mpdf, $writer, $form, $protection, $logger);
111		$imageWriter = new ImageWriter($mpdf, $writer);
112		$pageWriter = new PageWriter($mpdf, $form, $writer, $metadataWriter);
113		$bookmarkWriter = new BookmarkWriter($mpdf, $writer);
114		$optionalContentWriter = new OptionalContentWriter($mpdf, $writer);
115		$colorWriter = new ColorWriter($mpdf, $writer);
116		$backgroundWriter = new BackgroundWriter($mpdf, $writer);
117		$javaScriptWriter = new JavaScriptWriter($mpdf, $writer);
118
119		$resourceWriter = new ResourceWriter(
120			$mpdf,
121			$writer,
122			$colorWriter,
123			$fontWriter,
124			$imageWriter,
125			$formWriter,
126			$optionalContentWriter,
127			$backgroundWriter,
128			$bookmarkWriter,
129			$metadataWriter,
130			$javaScriptWriter,
131			$logger
132		);
133
134		return [
135			'otl' => $otl,
136			'bmp' => $bmp,
137			'cache' => $cache,
138			'cssManager' => $cssManager,
139			'directWrite' => $directWrite,
140			'fontCache' => $fontCache,
141			'fontFileFinder' => $fontFileFinder,
142			'form' => $form,
143			'gradient' => $gradient,
144			'tableOfContents' => $tableOfContents,
145			'tag' => $tag,
146			'wmf' => $wmf,
147			'sizeConverter' => $sizeConverter,
148			'colorConverter' => $colorConverter,
149			'hyphenator' => $hyphenator,
150			'remoteContentFetcher' => $remoteContentFetcher,
151			'imageProcessor' => $imageProcessor,
152			'protection' => $protection,
153
154			'languageToFont' => $languageToFont,
155			'scriptToLanguage' => $scriptToLanguage,
156
157			'writer' => $writer,
158			'fontWriter' => $fontWriter,
159			'metadataWriter' => $metadataWriter,
160			'imageWriter' => $imageWriter,
161			'formWriter' => $formWriter,
162			'pageWriter' => $pageWriter,
163			'bookmarkWriter' => $bookmarkWriter,
164			'optionalContentWriter' => $optionalContentWriter,
165			'colorWriter' => $colorWriter,
166			'backgroundWriter' => $backgroundWriter,
167			'javaScriptWriter' => $javaScriptWriter,
168
169			'resourceWriter' => $resourceWriter
170		];
171	}
172
173}
174