diff --git a/composer.json b/composer.json index 544726b..3d9f9a0 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "prefer-stable": true, "require": { "php": ">=8.0.0", + "knplabs/knp-snappy": "^1.4", "murph/murph-core": "^1.13,>=1.13.0", "sabre/dav": "^4.3" }, diff --git a/src/Controller/DebriefingController.php b/src/Controller/DebriefingController.php index 3d9b9f5..84b1188 100644 --- a/src/Controller/DebriefingController.php +++ b/src/Controller/DebriefingController.php @@ -4,11 +4,13 @@ namespace App\Controller; use App\Core\Controller\Site\PageController; use App\Entity\Debriefing; +use Knp\Snappy\Pdf; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\ResponseHeaderBag; class DebriefingController extends PageController { - public function debriefing(Debriefing $entity, \DateTime $date): Response + public function debriefing(Debriefing $entity, \DateTime $date, string $format): Response { if (!$this->siteRequest->getPage()) { throw $this->createNotFoundException(); @@ -18,8 +20,19 @@ class DebriefingController extends PageController throw $this->createNotFoundException(); } - return $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [ + $response = $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [ 'entity' => $entity, ]); + + if ('pdf' === $format) { + $snappy = new Pdf('/usr/bin/wkhtmltopdf', [ + 'enable-local-file-access' => true, + ]); + + $response->setContent($snappy->getOutputFromHtml($response->getContent())); + $response->headers->set('Content-Type', 'application/pdf'); + } + + return $response; } } diff --git a/templates/admin/debriefing/_show.html.twig b/templates/admin/debriefing/_show.html.twig index f345305..2f8ca5c 100644 --- a/templates/admin/debriefing/_show.html.twig +++ b/templates/admin/debriefing/_show.html.twig @@ -39,10 +39,24 @@