1 pièce(s) jointe(s)
[PDF] Adapter HTML2pdf à mon mvc
Bonjour , j'ai un site en php mvc orienté objet.
J'ai installé Html2pdf via composer et j'ai regardé la doc,suivi des tutos, mais je n'arrive pas a l'adapter a ma structure mvc.
j'ai créé une page cv.php pour mettre la structure html de ma page:
Code:
1 2 3 4 5 6 7 8 9 10
|
<?php require"controller/PdfController.php"; ?>
<?php ob_start() ?>
<page backtop="20mm" backleft="10mm" backright="10mm" backbottom="20mm">
<table>
<tr style="background: #FF0000;">
<td style="width:75%">Salut</td>
</tr>
</table>
</page> |
voici mon controlleur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
<?php
use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;
//require_once "html2pdf/html2pdf.class.php";
require "vendor/autoload.php";
class PdfController{
public function pdf()
{
//Ma vue en mvc
$view = new \Folio\View('pdf');
$view->generer([]);
//la vue dans la doc html2pdf
$content = ob_get_clean();
$pdf = new Html2Pdf('P', 'A4', 'fr');
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->writeHTML($content);
$pdf->output('cv.pdf');
}
} |
J'ai une classe view qui me gere la vue mais je n'arrive pas a l'utiliser dans ce cas j'ai des erreurs.
Code:
1 2
|
Fatal error: Uncaught Error: Class 'Folio\Exception' not found in C:\wamp64\www\cv\view\frontend\View.php:44 Stack trace: #0 C:\wamp64\www\cv\view\frontend\View.php(20): Folio\View->genererFichier('view/frontend/p...', Array) #1 C:\wamp64\www\cv\controller\PdfController.php(15): Folio\View->generer(Array) #2 C:\wamp64\www\cv\app\Routeur.php(68): PdfController->pdf() #3 C:\wamp64\www\cv\index.php(13): Stephan\Routeur->checkUrl('pdf') #4 {main} thrown in C:\wamp64\www\cv\view\frontend\View.php on line 44 |
si j'enleve ma variable vue une page pdf est generé qui s'apelle index.php, je comprend pas.
voici ma classe view:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?php
namespace Folio;
class View {
// Nom du fichier associé à la vue
private $fichier;
// Titre de la vue (défini dans le fichier vue)
private $title;
public function __construct($action) {
// Détermination du nom du fichier vue à partir de l'action
$this->fichier = "view/frontend/". $action . ".php";
}
// Génère et affiche la vue
public function generer($donnees) {
// Génération de la partie spécifique de la vue
$content = $this->genererFichier($this->fichier, $donnees);
// Génération du gabarit commun utilisant la partie spécifique
$view = $this->genererFichier('view/frontend/template.php',
array('title' => $this->title, 'content' => $content));
// Renvoi de la vue au navigateur
echo $view;
}
// Génère un fichier vue et renvoie le résultat produit
private function genererFichier($fichier, $donnees) {
if (file_exists($fichier)) {
// Rend les éléments du tableau $donnees accessibles dans la vue
extract($donnees);
// Démarrage de la temporisation de sortie
ob_start();
// Inclut le fichier vue
// Son résultat est placé dans le tampon de sortie
require $fichier;
// Arrêt de la temporisation et renvoi du tampon de sortie
return ob_get_clean();
}
else {
throw new Exception("Fichier '$fichier' introuvable");
}
}
} |
et mon routeur:
Code:
1 2 3 4 5 6 7 8 9
|
...
$ctrlPdf = new \PdfController();
/*********Affichage de la page CV en pdf**********/
elseif ($_GET['action'] == 'pdf'){
session_start();
$ctrlPdf->pdf();
}
.... |
voici mon arborescence:
Pièce jointe 379973
Merci beaucoup de votre aide car la je patauge!!