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