fix pdf export cache directory (#650)

This commit is contained in:
Kevin Papst
2019-03-22 14:37:25 +01:00
committed by GitHub
parent 50318a8fc5
commit cfc19dca25
6 changed files with 116 additions and 11 deletions

View File

@@ -13,8 +13,7 @@ use App\Entity\Timesheet;
use App\Export\RendererInterface;
use App\Repository\Query\TimesheetQuery;
use App\Timesheet\UserDateTimeFactory;
use Mpdf\Mpdf;
use Mpdf\Output\Destination;
use App\Utils\HtmlToPdfConverter;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
@@ -26,20 +25,24 @@ class PDFRenderer implements RendererInterface
* @var \Twig_Environment
*/
protected $twig;
/**
* @var UserDateTimeFactory
*/
protected $dateTime;
/**
* @var HtmlToPdfConverter
*/
protected $converter;
/**
* @param \Twig_Environment $twig
* @param UserDateTimeFactory $dateTime
*/
public function __construct(\Twig_Environment $twig, UserDateTimeFactory $dateTime)
public function __construct(\Twig_Environment $twig, UserDateTimeFactory $dateTime, HtmlToPdfConverter $converter)
{
$this->twig = $twig;
$this->dateTime = $dateTime;
$this->converter = $converter;
}
/**
@@ -60,11 +63,7 @@ class PDFRenderer implements RendererInterface
'summaries' => $this->calculateSummary($timesheets),
]);
//return new Response($content);
$mpdf = new Mpdf();
$mpdf->WriteHTML($content);
$content = $mpdf->Output('test', Destination::STRING_RETURN);
$content = $this->converter->convertToPdf($content);
$response = new Response($content);

View File

@@ -0,0 +1,20 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Utils;
interface HtmlToPdfConverter
{
/**
* Returns the binary content of the PDF, which can be saved as file or send via Reponse.
* @param string $html
* @return mixed
*/
public function convertToPdf(string $html);
}

View File

@@ -0,0 +1,41 @@
<?php
/*
* This file is part of the Kimai time-tracking app.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace App\Utils;
use App\Constants;
use Mpdf\Mpdf;
use Mpdf\Output\Destination;
class MPdfConverter implements HtmlToPdfConverter
{
/**
* @var string
*/
private $cacheDirectory;
public function __construct(string $cacheDirectory)
{
$this->cacheDirectory = $cacheDirectory;
}
/**
* @param string $html
* @return mixed|string
* @throws \Mpdf\MpdfException
*/
public function convertToPdf(string $html)
{
$mpdf = new Mpdf([['tempDir' => $this->cacheDirectory]]);
$mpdf->creator = Constants::SOFTWARE;
$mpdf->WriteHTML($html);
return $mpdf->Output('', Destination::STRING_RETURN);
}
}