Skip to content

Output (HasOutput)

Enregistrement dans un fichier

La manière la plus simple de produire un PDF est de l'écrire directement sur le disque :

php
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 :

php
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

ValeurComportementEn-têtes HTTP
InlineAfficher dans le navigateurContent-Type: application/pdf, Content-Disposition: inline
DownloadForcer la boîte de dialogue de téléchargementContent-Type: application/pdf, Content-Disposition: attachment
FileEnregistrer dans le système de fichiers du serveurAucun
StringRetourner les octets PDF brutsAucun

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 :

php
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 :

php
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 :

php
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.

Distribué sous licence LGPL-3.0-or-later.