Comment créer un fichier PDF avec PHP ?

Réponses rédigées par Antoine
Dernière mise à jour : 2021-08-31 12:23:55
Thèmes : pdf - php - fichier
Question

Bonjour, j'aimerais savoir comment créer in fichier PDF avec PHP, merci.

Réponse

Pour créer et générer un fichier PDF à l'aide de PHP, vous devez utiliser une CLASS PHP à part entière. Il existe plusieurs CLASS PHP pour générer un PDF ; l'une des plus plébiscitée est FPDF, elle a l'avantage d'être bien documentée et le site officiel est en français.

Voici un exemple pour créer un fichier PDF en PHP avec FPDF ; dans cet exemple on effectue les opérations suivantes :

  • On inclue la CLASS FPDF.
  • On positionne une image centrée en haut de page (header).
  • On affiche le numéro de la page en bas de page (Footer).
  • On crée trois blocs de texte dans trois blocs distincts.
  • On créé le fichier PDF.
  • On redirige la page vers le fichier PDF.

Exemple de script PHP pour créer un PDF :

<?php
require('fpdf.php');

class PDF extends FPDF
{
// En-tête
function Header()
{
// Logo
$this->Image('header.png',55,12,100);
// Saut de ligne
$this->Ln(30);
}

// Pied de page
function Footer()
{
// Positionnement à 1,5 cm du bas
$this->SetY(-15);
// Police Arial italique 10
$this->SetFont('Times','I',10);
// Numéro de page
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}

// Instanciation du PDF
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();

// Bloc 1
$pdf->SetFont('Times','',12);
$pdf->SetFillColor(32,32,32);
$pdf->SetTextColor(255,255,255);
$txt1 = "Texte 1 en Times 12 aligné à gauche.";
$txt1 = utf8_decode($txt1);
$pdf->Multicell(190,10,$txt1,0,'L', TRUE);

// Saut de lignes
$pdf->Ln(10);

// Bloc 2
$pdf->SetFont('Arial','',16);
$pdf->SetFillColor(192,192,192);
$pdf->SetTextColor(0,0,0);
$txt2 = "Texte 2 en Arial 16 aligné à droite.";
$txt2 = utf8_decode($txt2);
$pdf->Multicell(190,10,$txt2,0,'R', TRUE);

// Saut de lignes
$pdf->Ln(10);

// Bloc 3
$pdf->SetFont('Times','',12);
$pdf->SetFillColor(192,192,192);
$pdf->SetTextColor(0,0,0);
$txt3 = "Texte 3 en Times 12 centré.";
$txt3 = utf8_decode($txt3);
$pdf->Multicell(190,10,$txt3,0,'C', TRUE);

// Création du PDF
$fichier ="fichier.pdf";
$pdf->Output($fichier,'F');

// Redirection vers le PDF
header('location: fichier.pdf');
?> 

Le script complet (CLASS FPDF, image et polices de caractères) peut être téléchargé au format ZIP via ce lien.