Bonjour à tous,
je travaille sur une appli MVC avec réécriture d'url en Controller/Function/paramètres.
comme je dois convertir une vue en pdf, j'ai intégré dompdf de la façon suivante
- une classe PDF\dompdf
- un PDFController avec une fonction telecharger($html)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php namespace App\Controllers; require_once ('...dompdf/autoload.inc.php'); use Dompdf\Dompdf; use Dompdf\Options; class PDFController extends Controller { public function telecharger($html) { $options=new Options(); $options->set('defaultFont','arial'); $pdf = new Dompdf($options); $pdf->loadHtml($html); $pdf->setPaper('A4','portrait'); $pdf->render(); $fichier='vue.pdf'; $pdf->stream($fichier); } }
ma vue à télécharger est enregistrée en buffer
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <a href='/PDF/telecharger/<?=$html?>'>télécharger en PDF</a> <?php ob_start();?> <!DOCTYPE html> <html lang="fr"> <...> </html> <?php $html=ob_get_contents(); ob_end_flush();
le problème : $html ne passe pas au PDFController.
lorsque j'essaie avec $html1='blabla', ça passe et j'obtiens mon vue.pdf contenant blabla
bien que $html soit très long (Length=85118), il ne semble pas que ce soit le problème :
je n'ai identifié qu'une discussion sur la longueur du href :
https://www.developpez.net/forums/d4...f-taille-maxi/
mais elle n'apporte aucune piste.
car lorsque j'essaie avec $html1='<h1>blabla</h1>'; ça ne passe également pas
Manifestement certains caractères ne passent pas :
l'espace : $html1='bla bla' ne passe pas
le point : $html1='bla.bla' ne passe pas
le point d'exclamation : $html1='blabla!' ne passe pas
etc
je n'ai pas eu plus de succès avec htmlentities ou htmlspecialchars :
coté vue
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $html1='blabla!'; $html1=htmlspecialchars($html1); //ou //$html1=htmlentities($html1);
coté controller
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $pdf->loadHtml(htmlspecialchars_decode($html)); //ou //$pdf->loadHtml(html_entity_decode($html));
ne passent pas non plus
il y a peut être des erreurs de code, mais si non comment faire ?
merci de vos remarques et propositions
Partager