add pdf export

This commit is contained in:
Simon Vieille 2022-04-18 15:32:20 +02:00
parent e1c4dc6ebc
commit cb1001fa0e
Signed by: deblan
GPG key ID: 579388D585F70417
4 changed files with 37 additions and 9 deletions

View file

@ -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"
},

View file

@ -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;
}
}

View file

@ -39,10 +39,24 @@
<li class="list-group-item">
<span class="font-weight-bold pb-2 d-block">Partager</span>
{% set url = safe_path('main_fr_menu_debriefing', {entity: entity.id, date: entity.date|date('d-m-Y')}) %}
{% set urlHtml = safe_path('main_fr_menu_debriefing', {
entity: entity.id,
date: entity.date|date('d-m-Y'),
format: 'html'
}) %}
<a class="btn btn-success border btn-sm mb-2 d-block" href="{{ url }}">
Partager
{% set urlPdf = safe_path('main_fr_menu_debriefing', {
entity: entity.id,
date: entity.date|date('d-m-Y'),
format: 'pdf'
}) %}
<a class="btn btn-success border btn-sm mb-2 d-block" href="{{ urlHtml }}" target="_blank">
Partager en ligne
</a>
<a class="btn btn-danger border btn-sm mb-2 d-block" href="{{ urlPdf }}" target="_blank">
<span class="fa fa-file-pdf"></span>
Voir en PDF
</a>
</li>
</ul>

View file

@ -12,11 +12,11 @@
{%- endblock -%}
{%- block stylesheets -%}
{{ encore_entry_link_tags('cr') }}
{{ encore_entry_link_tags('cr')|replace({'href="/': 'href="' ~ absolute_url('/')})|raw }}
{%- endblock -%}
{%- block javascripts -%}
{{ encore_entry_script_tags('cr') }}
{{ encore_entry_script_tags('cr')|replace({'src="/': 'src="' ~ absolute_url('/')})|raw }}
{%- endblock -%}
{%- block title -%}
@ -27,7 +27,7 @@
<div class="container">
<div class="row mt-3 mb-3">
<div class="col-md-3 text-center">
<img src="{{ asset('build/images/tinternet.png') }}" alt="Tinternet &amp; Cie" width="120">
<img src="{{ absolute_url(asset('build/images/tinternet.png')) }}" alt="Tinternet &amp; Cie" width="120">
</div>
<div class="col-md-9">
<h1 class="h2">{{ entity.topic }}</h1>
@ -65,7 +65,7 @@
</li>
{% endif %}
{% if entity.files %}
<li class="list-group-item">
<li class="list-group-item d-print-none">
<span class="font-weight-bold pb-2 d-block">Fichiers</span>
{% for item in entity.files %}