-
Notifications
You must be signed in to change notification settings - Fork 0
PdfTool
PdfTool est un wrapper optimisé pour dompdf v3. Son rôle unique est de convertir un flux HTML/CSS en un document PDF. Bien qu'il soit souvent utilisé avec un moteur de template, il accepte n'importe quelle source de données HTML brute.
Namespace : Magepattern\Component\Tool\PdfTool
- Utilisation avec du HTML brut (Variable) Parfait pour des documents simples ou générés dynamiquement sans fichiers externes.
use Magepattern\Component\Tool\PdfTool;
$html = "<h1>Rapport Express</h1><p>Généré le " . date('d/m/Y') . "</p>";
// Génération directe
PdfTool::generate($html, 'rapport-simple.pdf');- Utilisation avec un moteur de template (ex: Smarty) Recommandé pour les documents à mise en page complexe (factures, diplômes).
use Magepattern\Component\Tool\SmartyTool;
use Magepattern\Component\Tool\PdfTool;
// On récupère le rendu du template sous forme de string
$html = SmartyTool::getInstance('admin')->fetch('pdf/invoice.tpl');
// On passe la string à PdfTool
PdfTool::generate($html, 'Facture-2026.pdf');Gestion des ressources (Images & CSS) Comme dompdf s'exécute côté serveur, il ne peut pas deviner l'emplacement de vos fichiers s'ils sont renseignés en chemins relatifs.
Images : Utilisez des chemins absolus sur le disque.
HTML Pur : <img src="/var/www/html/public/img/logo.png">
Magepattern : <img src="<?= _DIR_ROOT ?>/public/img/logo.png">
CSS : Privilégiez l'inclusion des styles directement dans une balise <style> à l'intérieur de votre HTML pour éviter les requêtes de fichiers externes.
| Argument | Type | Par défaut | Description |
|---|---|---|---|
| $html | string | - | Le code HTML complet (obligatoire). |
| $filename | string | document.pdf' | Nom du fichier pour l'utilisateur. |
| $stream | bool | TRUE | true : Affiche dans le navigateur. false : Retourne le binaire. |
| $paper | string | A4' | Format (A4, A5, Letter, etc.). |
| $orient | string | portrait' | Orientation (portrait ou landscape). |
La classe PdfTool configure automatiquement l'environnement pour vous :
chroot : Défini sur la racine du projet pour autoriser la lecture sécurisée des images locales.
isRemoteEnabled : Activé pour supporter les images provenant d'URL distantes (via HTTP).
Font Cache : Les polices système sont mises en cache dans /var/pdf/fonts/ pour optimiser la vitesse de génération.
Si vous ne voulez pas afficher le PDF mais l'envoyer en pièce jointe :
$pdfContent = PdfTool::generate($html, 'document.pdf', false);
// $pdfContent contient maintenant le binaire du PDF prêt à être utilisé
$mailer->sendWithAttachment($pdfContent);