DOMPDFModule icon indicating copy to clipboard operation
DOMPDFModule copied to clipboard

How To: Get DOMPDFModule working with ZF3

Open dkern opened this issue 8 years ago • 3 comments

I've made the module working on ZF3. But actually only with dompdf version 0.6.2. You should totally upgrade to newer version of it!

But so far, just to give you an hint what to do to make this module working on ZF3, I made an change list while updateing it. It works pretty well then. Maybe helpful for others too, so I will let this here.

It really easy to do, just follow this easy steps ...


  1. Delete modules/DOMPDFModule/Module.php

  2. Move files from modules/DOMPDFModule/src/DOMPDFModule/ to modules/DOMPDFModule/src/ (one directory up)

  3. Change the path in getConfig() function in modules/DOMPDFModule/src/Module.php to __DIR__ . '/../config/module.config.php

  4. Remove getAutoloaderConfig function from modules/DOMPDFModule/src/Module.php

  5. Change from use Zend\ServiceManager\FactoryInterface; to use Zend\ServiceManager\Factory\FactoryInterface; in:

  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Change function public function createService(ServiceLocatorInterface $serviceLocator) to public function __invoke(ContainerInterface $container, $requestedName, array $options = null) in:
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Add new imports:
  • use Interop\Container\ContainerInterface;
  • use Interop\Container\Exception\ContainerException;
  • use Zend\ServiceManager\Exception\ServiceNotCreatedException;
  • use Zend\ServiceManager\Exception\ServiceNotFoundException;
  • use Zend\ServiceManager\ServiceManager;

to the following file headers:

  • modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.php
  • modules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.php
  • modules/DOMPDFModule/src/Service/DOMPDFFactory.php
  1. Instead of $serviceLocator->get use $container->get(ServiceManager::class)->get in factories

  2. Change defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf'); to defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../vendor/dompdf/dompdf'); in modules/DOMPDFModule/src/Service/DOMPDFFactory.php

  3. Change require_once __DIR__ . '/../../../config/module.compat.php'; to require_once __DIR__ . '/../../config/module.compat.php'; in modules/DOMPDFModule/src/Service/DOMPDFFactory.php

  4. Change $viewManager->getResolver() to $serviceLocator->get("ViewResolver") in modules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php

  5. Change $viewManager->getRenderer() to $serviceLocator->get("ViewRenderer") in modules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php

  6. Add autoloader configuration to composer.json:

"autoload": {
  "psr-4": {
    "DOMPDFModule\\": "module/DOMPDFModule/src/"
  }
}
  1. Run composer command dump-autoload to rebuild autoloading:
$ composer dump-autoload

This tutorial assumes that dompdf is installed in version 0.6.2 by composer in vendor directory.

dkern avatar Jun 29 '17 08:06 dkern

Still not working!!! Well not for me

andytechcastro avatar Jul 14 '17 22:07 andytechcastro

I made a migration version for ZF3 if you can view and test https://github.com/raykolbe/DOMPDFModule/pull/57

juizmill avatar Aug 03 '17 14:08 juizmill

In addition to @juizmill's work in #57, I took an initial stab at a ZF3 upgrade path in https://github.com/raykolbe/DOMPDFModule/pull/73. Take note that the minimum Dompdf version supported here is ^0.8.0.

raykolbe avatar Nov 25 '17 14:11 raykolbe