vendor/mpdf/mpdf/src/ServiceFactory.php line 43

Open in your IDE?
  1. <?php
  2. namespace Mpdf;
  3. use Mpdf\Color\ColorConverter;
  4. use Mpdf\Color\ColorModeConverter;
  5. use Mpdf\Color\ColorSpaceRestrictor;
  6. use Mpdf\File\LocalContentLoader;
  7. use Mpdf\Fonts\FontCache;
  8. use Mpdf\Fonts\FontFileFinder;
  9. use Mpdf\Http\CurlHttpClient;
  10. use Mpdf\Http\SocketHttpClient;
  11. use Mpdf\Image\ImageProcessor;
  12. use Mpdf\Pdf\Protection;
  13. use Mpdf\Pdf\Protection\UniqidGenerator;
  14. use Mpdf\Writer\BaseWriter;
  15. use Mpdf\Writer\BackgroundWriter;
  16. use Mpdf\Writer\ColorWriter;
  17. use Mpdf\Writer\BookmarkWriter;
  18. use Mpdf\Writer\FontWriter;
  19. use Mpdf\Writer\FormWriter;
  20. use Mpdf\Writer\ImageWriter;
  21. use Mpdf\Writer\JavaScriptWriter;
  22. use Mpdf\Writer\MetadataWriter;
  23. use Mpdf\Writer\OptionalContentWriter;
  24. use Mpdf\Writer\PageWriter;
  25. use Mpdf\Writer\ResourceWriter;
  26. use Psr\Log\LoggerInterface;
  27. class ServiceFactory
  28. {
  29. /**
  30. * @var \Mpdf\Container\ContainerInterface|null
  31. */
  32. private $container;
  33. public function __construct($container = null)
  34. {
  35. $this->container = $container;
  36. }
  37. public function getServices(
  38. Mpdf $mpdf,
  39. LoggerInterface $logger,
  40. $config,
  41. $languageToFont,
  42. $scriptToLanguage,
  43. $fontDescriptor,
  44. $bmp,
  45. $directWrite,
  46. $wmf
  47. ) {
  48. $sizeConverter = new SizeConverter($mpdf->dpi, $mpdf->default_font_size, $mpdf, $logger);
  49. $colorModeConverter = new ColorModeConverter();
  50. $colorSpaceRestrictor = new ColorSpaceRestrictor(
  51. $mpdf,
  52. $colorModeConverter
  53. );
  54. $colorConverter = new ColorConverter($mpdf, $colorModeConverter, $colorSpaceRestrictor);
  55. $tableOfContents = new TableOfContents($mpdf, $sizeConverter);
  56. $cacheBasePath = $config['tempDir'] . '/mpdf';
  57. $cache = new Cache($cacheBasePath, $config['cacheCleanupInterval']);
  58. $fontCache = new FontCache(new Cache($cacheBasePath . '/ttfontdata', $config['cacheCleanupInterval']));
  59. $fontFileFinder = new FontFileFinder($config['fontDir']);
  60. if ($this->container && $this->container->has('httpClient')) {
  61. $httpClient = $this->container->get('httpClient');
  62. } elseif (\function_exists('curl_init')) {
  63. $httpClient = new CurlHttpClient($mpdf, $logger);
  64. } else {
  65. $httpClient = new SocketHttpClient($logger);
  66. }
  67. $localContentLoader = $this->container && $this->container->has('localContentLoader')
  68. ? $this->container->get('localContentLoader')
  69. : new LocalContentLoader();
  70. $assetFetcher = new AssetFetcher($mpdf, $localContentLoader, $httpClient, $logger);
  71. $cssManager = new CssManager($mpdf, $cache, $sizeConverter, $colorConverter, $assetFetcher);
  72. $otl = new Otl($mpdf, $fontCache);
  73. $protection = new Protection(new UniqidGenerator());
  74. $writer = new BaseWriter($mpdf, $protection);
  75. $gradient = new Gradient($mpdf, $sizeConverter, $colorConverter, $writer);
  76. $formWriter = new FormWriter($mpdf, $writer);
  77. $form = new Form($mpdf, $otl, $colorConverter, $writer, $formWriter);
  78. $hyphenator = new Hyphenator($mpdf);
  79. $imageProcessor = new ImageProcessor(
  80. $mpdf,
  81. $otl,
  82. $cssManager,
  83. $sizeConverter,
  84. $colorConverter,
  85. $colorModeConverter,
  86. $cache,
  87. $languageToFont,
  88. $scriptToLanguage,
  89. $assetFetcher,
  90. $logger
  91. );
  92. $tag = new Tag(
  93. $mpdf,
  94. $cache,
  95. $cssManager,
  96. $form,
  97. $otl,
  98. $tableOfContents,
  99. $sizeConverter,
  100. $colorConverter,
  101. $imageProcessor,
  102. $languageToFont
  103. );
  104. $fontWriter = new FontWriter($mpdf, $writer, $fontCache, $fontDescriptor);
  105. $metadataWriter = new MetadataWriter($mpdf, $writer, $form, $protection, $logger);
  106. $imageWriter = new ImageWriter($mpdf, $writer);
  107. $pageWriter = new PageWriter($mpdf, $form, $writer, $metadataWriter);
  108. $bookmarkWriter = new BookmarkWriter($mpdf, $writer);
  109. $optionalContentWriter = new OptionalContentWriter($mpdf, $writer);
  110. $colorWriter = new ColorWriter($mpdf, $writer);
  111. $backgroundWriter = new BackgroundWriter($mpdf, $writer);
  112. $javaScriptWriter = new JavaScriptWriter($mpdf, $writer);
  113. $resourceWriter = new ResourceWriter(
  114. $mpdf,
  115. $writer,
  116. $colorWriter,
  117. $fontWriter,
  118. $imageWriter,
  119. $formWriter,
  120. $optionalContentWriter,
  121. $backgroundWriter,
  122. $bookmarkWriter,
  123. $metadataWriter,
  124. $javaScriptWriter,
  125. $logger
  126. );
  127. return [
  128. 'otl' => $otl,
  129. 'bmp' => $bmp,
  130. 'cache' => $cache,
  131. 'cssManager' => $cssManager,
  132. 'directWrite' => $directWrite,
  133. 'fontCache' => $fontCache,
  134. 'fontFileFinder' => $fontFileFinder,
  135. 'form' => $form,
  136. 'gradient' => $gradient,
  137. 'tableOfContents' => $tableOfContents,
  138. 'tag' => $tag,
  139. 'wmf' => $wmf,
  140. 'sizeConverter' => $sizeConverter,
  141. 'colorConverter' => $colorConverter,
  142. 'hyphenator' => $hyphenator,
  143. 'localContentLoader' => $localContentLoader,
  144. 'httpClient' => $httpClient,
  145. 'assetFetcher' => $assetFetcher,
  146. 'imageProcessor' => $imageProcessor,
  147. 'protection' => $protection,
  148. 'languageToFont' => $languageToFont,
  149. 'scriptToLanguage' => $scriptToLanguage,
  150. 'writer' => $writer,
  151. 'fontWriter' => $fontWriter,
  152. 'metadataWriter' => $metadataWriter,
  153. 'imageWriter' => $imageWriter,
  154. 'formWriter' => $formWriter,
  155. 'pageWriter' => $pageWriter,
  156. 'bookmarkWriter' => $bookmarkWriter,
  157. 'optionalContentWriter' => $optionalContentWriter,
  158. 'colorWriter' => $colorWriter,
  159. 'backgroundWriter' => $backgroundWriter,
  160. 'javaScriptWriter' => $javaScriptWriter,
  161. 'resourceWriter' => $resourceWriter
  162. ];
  163. }
  164. public function getServiceIds()
  165. {
  166. return [
  167. 'otl',
  168. 'bmp',
  169. 'cache',
  170. 'cssManager',
  171. 'directWrite',
  172. 'fontCache',
  173. 'fontFileFinder',
  174. 'form',
  175. 'gradient',
  176. 'tableOfContents',
  177. 'tag',
  178. 'wmf',
  179. 'sizeConverter',
  180. 'colorConverter',
  181. 'hyphenator',
  182. 'localContentLoader',
  183. 'httpClient',
  184. 'assetFetcher',
  185. 'imageProcessor',
  186. 'protection',
  187. 'languageToFont',
  188. 'scriptToLanguage',
  189. 'writer',
  190. 'fontWriter',
  191. 'metadataWriter',
  192. 'imageWriter',
  193. 'formWriter',
  194. 'pageWriter',
  195. 'bookmarkWriter',
  196. 'optionalContentWriter',
  197. 'colorWriter',
  198. 'backgroundWriter',
  199. 'javaScriptWriter',
  200. 'resourceWriter',
  201. ];
  202. }
  203. }