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