Ce document fait référence à FPDI 2. La version 1 est obsolète et le développement est interrompu.
FPDI est un ensemble de classes PHP permettant aux développeurs de lire des pages de documents PDF existants et de les utiliser comme modèles dans FPDF, développé par Olivier Plathey. Hormis une copie de FPDF, FPDI ne nécessite aucune extension PHP particulière.
FPDI peut également être utilisé comme extension pour TCPDF ou tFPDF.
Étant donné que FPDI peut être utilisé avec FPDF, TCPDF ou tFPDF, nous n'avons pas ajouté de dépendance fixe dans le fichier composer.json principal. Vous devez ajouter vous-même la dépendance à la bibliothèque de génération PDF de votre choix.
Pour utiliser FPDI avec FPDF, incluez ce qui suit dans votre fichier composer.json :
{"require": {"setasign/fpdf": "1.8.*","setasign/fpdi": "^2.5"} }
Si vous souhaitez utiliser TCPDF, vous devez mettre à jour votre composer.json pour :
{"require": {"tecnickcom/tcpdf": "6.6.*","setasign/fpdi": "^2.5"} }
Si vous souhaitez utiliser tFPDF, vous devez mettre à jour votre composer.json pour :
{"require": {"setasign/tfpdf": "1.33.*","setasign/fpdi": "^2.3"} }
Si vous n'utilisez pas composer, demandez simplement le fichier autoload.php dans le dossier /src :
require_once('src/autoload.php');
Si vous avez implémenté un chargeur automatique PSR-4, enregistrez simplement le chemin src comme suit :
$loader = new ExemplePsr4AutoloaderClass;$loader->register();$loader->addNamespace('setasignFpdi', 'path/to/src/');
La version 2 est une réécriture complète de FPDI qui comprend :
Code avec espace de noms
Base de code et style propres et à jour
Chargement automatique compatible PSR-4
Améliorations des performances jusqu'à 100 %
Moins de consommation de mémoire
Prise en charge native de la lecture de PDF à partir de chaînes ou de ressources de flux
Prise en charge des documents avec des données "invalides" avant leur en-tête de fichier
Résolution optimisée de l'arborescence des pages
Utilisation d'exceptions individuelles
Plusieurs types de tests (tests unitaires, fonctionnels et visuels)
Nous avons essayé de conserver les méthodes principales et le flux de travail logique identiques à ceux de la version 1, mais veuillez noter qu'il y a eu des modifications incompatibles dont vous devez tenir compte lors de la mise à jour vers la version 2 :
Vous devez charger le code en utilisant le fichier src/autoload.php
au lieu de classes/FPDI.php
.
Les classes et les traits sont désormais dotés d'un espace de noms : setasignFpdi
Les limites de page commençant par une barre oblique, telles que /MediaBox
, ne sont plus prises en charge. Supprimez la barre oblique ou utilisez une constante de PdfReaderPageBoundaries
.
Les paramètres $x, $y, $width et $height de la méthode useTemplate()
ou getTemplateSize()
ont désormais des valeurs par défaut plus logiques et correctes. Passer 0
comme largeur ou hauteur entraînera maintenant une InvalidArgumentException
.
La valeur de retour de getTemplateSize()
a été remplacée par un tableau avec des clés plus parlantes et plus réutilisables : utilisez width
au lieu de w
et height
au lieu de h
.
Si vous souhaitez utiliser FPDI avec TCPDF, vous devez refactoriser votre code pour utiliser la classe TcpdfFpdi
(depuis 2.1 ; avant c'était TcpdfFpdi
) au lieu de FPDI
.
Un exemple simple, qui importe une seule page et la place sur une nouvelle page créée :
AddPage();// définir la source file$pdf->setSourceFile("Fantastic-Speaker.pdf");// importer la page 1$tplId = $pdf->importPage(1);// utiliser la page importée et la placer au point 10,10 avec une largeur de 100 mm$pdf->useTemplate($tplId, 10, 10, 100);$pdf->Output();
Une documentation complète pour l'utilisateur final et une référence API sont disponibles ici.