src/Controller/PdfController.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Dompdf\Dompdf;
  4. use App\Entity\Properties;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. class PdfController extends AbstractController
  10. {
  11.     /**
  12.      * @Route("/pdf/{id}", name="app_pdf_generate")
  13.      */
  14.     public function generatePdf($idRequest $request): Response
  15.     {
  16.         // Récupérez vos données à partir de votre base de données ou d'autres sources
  17.         $property $this->getDoctrine()->getRepository(Properties::class)->find($id);
  18.         // Récupérer le logo de l'entreprise
  19.         $imagePath $request->getSchemeAndHttpHost() . '/coupdcoeurimmo/public/images/logo.png';
  20.         $imageContent file_get_contents($imagePath);
  21.         $imageBase64 base64_encode($imageContent);
  22.         // Récupérer la première image de la propriété
  23.         $images $property->getImages();
  24.         $encodedImage null;
  25.         if (!empty($images)) {
  26.             $firstImage $images[0]; // Supposons que getImages() renvoie un tableau ou un objet itérable
  27.             $imagePath $this->getParameter('kernel.project_dir') . '/public/images/properties/' $firstImage->getImageName();
  28.             if (file_exists($imagePath)) {
  29.                 $imageContent file_get_contents($imagePath);
  30.                 $encodedImage base64_encode($imageContent);
  31.             }
  32.         }
  33.         // Créez le contenu HTML que vous souhaitez afficher dans votre PDF
  34.         $html $this->renderView('pdf/property.html.twig', [
  35.             'imageBase64' => $imageBase64,
  36.             'property' => $property,
  37.             'encodedImage' => $encodedImage,
  38.         ]);
  39.         // Instanciez Dompdf et générez le PDF
  40.         $dompdf = new Dompdf();
  41.         $dompdf->loadHtml($html);
  42.         $dompdf->setPaper('A4''portrait');
  43.         $dompdf->render();
  44.         // Retournez une réponse qui affiche votre PDF dans le navigateur
  45.         return new Response(
  46.             $dompdf->output(),
  47.             200,
  48.             [
  49.                 'Content-Type' => 'application/pdf',
  50.                 'Content-Disposition' => sprintf('inline; filename="property_%s.pdf"'$id)
  51.             ]
  52.         );
  53.     }
  54. }