accents FR et « ° » corrects). */ public function render(WeighingTicket $ticket): string { $html = $this->twig->render('logistique/weighing_ticket_print.html.twig', [ 'ticket' => $ticket, 'logoSrc' => $this->logoDataUri(), ]); $options = new Options(); $options->set('isRemoteEnabled', false); $options->set('defaultFont', 'DejaVu Sans'); $dompdf = new Dompdf($options); $dompdf->loadHtml($html, 'UTF-8'); $dompdf->setPaper('A4', 'portrait'); $dompdf->render(); return (string) $dompdf->output(); } /** * Logo societe encode en data-URI base64, ou null s'il est introuvable (le * template degrade alors sans bloquer la generation du PDF). */ private function logoDataUri(): ?string { $binary = @file_get_contents(self::LOGO_PATH); if (false === $binary) { return null; } return 'data:image/png;base64,'.base64_encode($binary); } }