Passage d'une variable html par href
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:
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:
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 :
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:
1 2 3 4
| $html1='blabla!';
$html1=htmlspecialchars($html1);
//ou
//$html1=htmlentities($html1); |
coté controller
Code:
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