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