<?php
namespace App\Controller;
use Dompdf\Dompdf;
use App\Entity\Properties;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
class PdfController extends AbstractController
{
/**
* @Route("/pdf/{id}", name="app_pdf_generate")
*/
public function generatePdf($id, Request $request): Response
{
// Récupérez vos données à partir de votre base de données ou d'autres sources
$property = $this->getDoctrine()->getRepository(Properties::class)->find($id);
// Récupérer le logo de l'entreprise
$imagePath = $request->getSchemeAndHttpHost() . '/coupdcoeurimmo/public/images/logo.png';
$imageContent = file_get_contents($imagePath);
$imageBase64 = base64_encode($imageContent);
// Récupérer la première image de la propriété
$images = $property->getImages();
$encodedImage = null;
if (!empty($images)) {
$firstImage = $images[0]; // Supposons que getImages() renvoie un tableau ou un objet itérable
$imagePath = $this->getParameter('kernel.project_dir') . '/public/images/properties/' . $firstImage->getImageName();
if (file_exists($imagePath)) {
$imageContent = file_get_contents($imagePath);
$encodedImage = base64_encode($imageContent);
}
}
// Créez le contenu HTML que vous souhaitez afficher dans votre PDF
$html = $this->renderView('pdf/property.html.twig', [
'imageBase64' => $imageBase64,
'property' => $property,
'encodedImage' => $encodedImage,
]);
// Instanciez Dompdf et générez le PDF
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
// Retournez une réponse qui affiche votre PDF dans le navigateur
return new Response(
$dompdf->output(),
200,
[
'Content-Type' => 'application/pdf',
'Content-Disposition' => sprintf('inline; filename="property_%s.pdf"', $id)
]
);
}
}