Output (HasOutput)
Enregistrement dans un fichier
La manière la plus simple de produire un PDF est de l'écrire directement sur le disque :
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Bonjour, monde !')
->save('/path/to/output.pdf');save(string $path) écrit le PDF rendu dans le chemin de fichier donné et retourne static.
Output avec contrôle de destination
Pour plus de contrôle sur la livraison, utilisez output() avec l'enum OutputDestination :
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\Contracts\OutputDestination;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Bonjour, monde !');
// Afficher dans le navigateur (inline)
$pdf->output('document.pdf', OutputDestination::Inline);
// Forcer le téléchargement
$pdf->output('document.pdf', OutputDestination::Download);
// Enregistrer dans un fichier
$pdf->output('document.pdf', OutputDestination::File);
// Retourner comme chaîne
$pdf->output('document.pdf', OutputDestination::String);Enum OutputDestination
| Valeur | Comportement | En-têtes HTTP |
|---|---|---|
Inline | Afficher dans le navigateur | Content-Type: application/pdf, Content-Disposition: inline |
Download | Forcer la boîte de dialogue de téléchargement | Content-Type: application/pdf, Content-Disposition: attachment |
File | Enregistrer dans le système de fichiers du serveur | Aucun |
String | Retourner les octets PDF bruts | Aucun |
Lors de l'utilisation de Inline ou Download, TCPDF-Next envoie automatiquement les en-têtes Content-Type et Content-Disposition appropriés avant de vider le contenu PDF.
Obtenir le PDF comme chaîne
Utilisez toString() pour obtenir les octets PDF bruts sans écrire sur le disque ou envoyer d'en-têtes. Utile pour les pièces jointes email, les API de stockage ou le traitement ultérieur :
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Rapport mensuel');
$content = $pdf->toString();
// Écrire sur le disque manuellement
file_put_contents('/path/to/output.pdf', $content);
// Ou utiliser pour les pièces jointes email
Mail::send([], [], function ($message) use ($content) {
$message->attachData($content, 'report.pdf', ['mime' => 'application/pdf']);
});Output streaming pour les PDF volumineux
Pour les documents avec des milliers de pages, garder le PDF entier en mémoire peut être coûteux. PdfWriterChunked écrit le contenu PDF de manière incrémentale dans un flux :
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create();
$pdf->addPage()->setFont('Helvetica', '', 10);
for ($i = 0; $i < 5000; $i++) {
$pdf->cell(0, 5, "Ligne {$i}: contenu de données ici", newLine: true);
}
// Le streaming se produit en interne — save déclenche l'écriture fragmentée
$pdf->save('rapport-volumineux.pdf');Le writer fragmenté vide les données de page au fur et à mesure de leur finalisation, évitant le besoin de mettre en buffer le document entier avant l'écriture. C'est transparent pour l'appelant — la même API save() et output() s'applique.
Linéarisation (Fast Web View)
La linéarisation réordonne les objets PDF pour que la première page puisse être rendue avant le téléchargement complet du fichier. C'est essentiel pour les PDF livrés sur le web :
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->setLinearization(true)
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Optimisé pour la visualisation web')
->save('linearized.pdf');Le Linearizer écrit des flux d'indices qui indiquent aux lecteurs PDF comment rendre le document progressivement. Activez ceci quand les PDF seront servis via HTTP et visualisés dans le navigateur.