DOMPDFModule
DOMPDFModule copied to clipboard
How To: Get DOMPDFModule working with ZF3
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 ...
-
Delete
modules/DOMPDFModule/Module.php -
Move files from
modules/DOMPDFModule/src/DOMPDFModule/tomodules/DOMPDFModule/src/(one directory up) -
Change the path in
getConfig()function inmodules/DOMPDFModule/src/Module.phpto__DIR__ . '/../config/module.config.php -
Remove
getAutoloaderConfigfunction frommodules/DOMPDFModule/src/Module.php -
Change from
use Zend\ServiceManager\FactoryInterface;touse Zend\ServiceManager\Factory\FactoryInterface;in:
modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.phpmodules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.phpmodules/DOMPDFModule/src/Service/DOMPDFFactory.php
- Change function
public function createService(ServiceLocatorInterface $serviceLocator)topublic function __invoke(ContainerInterface $container, $requestedName, array $options = null)in:
modules/DOMPDFModule/src/MVC/Service/ViewPdfRendererFactory.phpmodules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.phpmodules/DOMPDFModule/src/Service/DOMPDFFactory.php
- 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.phpmodules/DOMPDFModule/src/MVC/Service/ViewPdfStrategyFactory.phpmodules/DOMPDFModule/src/Service/DOMPDFFactory.php
-
Instead of
$serviceLocator->getuse$container->get(ServiceManager::class)->getin factories -
Change
defined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../../dompdf/dompdf');todefined('DOMPDF_DIR') || define("DOMPDF_DIR", __DIR__ . '/../../../../vendor/dompdf/dompdf');inmodules/DOMPDFModule/src/Service/DOMPDFFactory.php -
Change
require_once __DIR__ . '/../../../config/module.compat.php';torequire_once __DIR__ . '/../../config/module.compat.php';inmodules/DOMPDFModule/src/Service/DOMPDFFactory.php -
Change
$viewManager->getResolver()to$serviceLocator->get("ViewResolver")inmodules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php -
Change
$viewManager->getRenderer()to$serviceLocator->get("ViewRenderer")inmodules/DOMPDFModule/src/Mvc/Service/ViewPdfRendererFactory.php -
Add autoloader configuration to
composer.json:
"autoload": {
"psr-4": {
"DOMPDFModule\\": "module/DOMPDFModule/src/"
}
}
- Run
composercommanddump-autoloadto rebuild autoloading:
$ composer dump-autoload
This tutorial assumes that dompdf is installed in version 0.6.2 by composer in vendor directory.
Still not working!!! Well not for me
I made a migration version for ZF3 if you can view and test https://github.com/raykolbe/DOMPDFModule/pull/57
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.