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. }