twig = $twig; $this->converter = $converter; } public function supports(InvoiceDocument $document): bool { return stripos($document->getFilename(), '.pdf.twig') !== false; } public function render(InvoiceDocument $document, InvoiceModel $model): Response { $content = $this->twig->render('@invoice/' . basename($document->getFilename()), [ 'model' => $model ]); $content = $this->converter->convertToPdf($content); $filename = (string) new InvoiceFilename($model); $response = new Response($content); $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename . '.pdf'); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Content-Disposition', $disposition); return $response; } }