twig = $twig; $this->dateTime = $dateTime; $this->converter = $converter; } protected function getTemplate(): string { return 'export/renderer/pdf.html.twig'; } /** * @param ExportItemInterface[] $timesheets * @param TimesheetQuery $query * @return Response * @throws \Twig\Error\LoaderError * @throws \Twig\Error\RuntimeError * @throws \Twig\Error\SyntaxError */ public function render(array $timesheets, TimesheetQuery $query): Response { $content = $this->twig->render($this->getTemplate(), [ 'entries' => $timesheets, 'query' => $query, 'now' => $this->dateTime->createDateTime(), 'summaries' => $this->calculateSummary($timesheets), ]); $content = $this->converter->convertToPdf($content); $response = new Response($content); $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'kimai-export.pdf'); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Content-Disposition', $disposition); return $response; } public function getId(): string { return 'pdf'; } }