add pdf export
This commit is contained in:
parent
e1c4dc6ebc
commit
cb1001fa0e
|
@ -7,6 +7,7 @@
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.0.0",
|
"php": ">=8.0.0",
|
||||||
|
"knplabs/knp-snappy": "^1.4",
|
||||||
"murph/murph-core": "^1.13,>=1.13.0",
|
"murph/murph-core": "^1.13,>=1.13.0",
|
||||||
"sabre/dav": "^4.3"
|
"sabre/dav": "^4.3"
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,11 +4,13 @@ namespace App\Controller;
|
||||||
|
|
||||||
use App\Core\Controller\Site\PageController;
|
use App\Core\Controller\Site\PageController;
|
||||||
use App\Entity\Debriefing;
|
use App\Entity\Debriefing;
|
||||||
|
use Knp\Snappy\Pdf;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||||
|
|
||||||
class DebriefingController extends PageController
|
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()) {
|
if (!$this->siteRequest->getPage()) {
|
||||||
throw $this->createNotFoundException();
|
throw $this->createNotFoundException();
|
||||||
|
@ -18,8 +20,19 @@ class DebriefingController extends PageController
|
||||||
throw $this->createNotFoundException();
|
throw $this->createNotFoundException();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [
|
$response = $this->defaultRender($this->siteRequest->getPage()->getTemplate(), [
|
||||||
'entity' => $entity,
|
'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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,10 +39,24 @@
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<span class="font-weight-bold pb-2 d-block">Partager</span>
|
<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 }}">
|
{% set urlPdf = safe_path('main_fr_menu_debriefing', {
|
||||||
Partager
|
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>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -12,11 +12,11 @@
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
|
||||||
{%- block stylesheets -%}
|
{%- block stylesheets -%}
|
||||||
{{ encore_entry_link_tags('cr') }}
|
{{ encore_entry_link_tags('cr')|replace({'href="/': 'href="' ~ absolute_url('/')})|raw }}
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
|
||||||
{%- block javascripts -%}
|
{%- block javascripts -%}
|
||||||
{{ encore_entry_script_tags('cr') }}
|
{{ encore_entry_script_tags('cr')|replace({'src="/': 'src="' ~ absolute_url('/')})|raw }}
|
||||||
{%- endblock -%}
|
{%- endblock -%}
|
||||||
|
|
||||||
{%- block title -%}
|
{%- block title -%}
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mt-3 mb-3">
|
<div class="row mt-3 mb-3">
|
||||||
<div class="col-md-3 text-center">
|
<div class="col-md-3 text-center">
|
||||||
<img src="{{ asset('build/images/tinternet.png') }}" alt="Tinternet & Cie" width="120">
|
<img src="{{ absolute_url(asset('build/images/tinternet.png')) }}" alt="Tinternet & Cie" width="120">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-9">
|
<div class="col-md-9">
|
||||||
<h1 class="h2">{{ entity.topic }}</h1>
|
<h1 class="h2">{{ entity.topic }}</h1>
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if entity.files %}
|
{% 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>
|
<span class="font-weight-bold pb-2 d-block">Fichiers</span>
|
||||||
|
|
||||||
{% for item in entity.files %}
|
{% for item in entity.files %}
|
||||||
|
|
Loading…
Reference in a new issue