Este documento hace referencia a FPDI 2. La versión 1 está obsoleta y el desarrollo está interrumpido.
FPDI es una colección de clases de PHP que facilitan a los desarrolladores leer páginas de documentos PDF existentes y utilizarlas como plantillas en FPDF, desarrollado por Olivier Plathey. Aparte de una copia de FPDF, FPDI no requiere ninguna extensión PHP especial.
FPDI también se puede utilizar como extensión para TCPDF o tFPDF.
Debido a que FPDI se puede usar con FPDF, TCPDF o tFPDF, no hemos agregado una dependencia fija en el archivo compositor.json principal. Debe agregar usted mismo la dependencia a la biblioteca de generación de PDF de su elección.
Para usar FPDI con FPDF, incluya lo siguiente en su archivo compositor.json:
{"require": {"setasign/fpdf": "1.8.*","setasign/fpdi": "^2.5"} }
Si desea utilizar TCPDF, debe actualizar su compositor.json a:
{"require": {"tecnickcom/tcpdf": "6.6.*","setasign/fpdi": "^2.5"} }
Si desea utilizar tFPDF, debe actualizar su compositor.json a:
{"require": {"setasign/tfpdf": "1.33.*","setasign/fpdi": "^2.3"} }
Si no utiliza Composer, simplemente solicite autoload.php en la carpeta /src:
require_once('src/autoload.php');
Si tiene implementado un cargador automático PSR-4, simplemente registre la ruta src de la siguiente manera:
$loader = new EjemploPsr4AutoloaderClass;$loader->register();$loader->addNamespace('setasignFpdi', 'ruta/a/src/');
La versión 2 es una reescritura completa desde cero de FPDI que viene con:
código de espacio de nombres
Estilo y base de código limpios y actualizados
Carga automática compatible con PSR-4
Mejoras de rendimiento de hasta un 100%
Menos consumo de memoria
Soporte nativo para leer archivos PDF desde cadenas o recursos de flujo
Soporte para documentos con datos "no válidos" antes de su encabezado de archivo
Resolución optimizada del árbol de páginas
Uso de excepciones individuales
Varios tipos de pruebas (pruebas unitarias, funcionales y visuales)
Intentamos mantener los métodos principales y el flujo de trabajo lógico igual que en la versión 1, pero tenga en cuenta que hubo cambios incompatibles que debe considerar al actualizar a la versión 2:
Debe cargar el código usando el archivo src/autoload.php
en lugar de classes/FPDI.php
.
Las clases y rasgos ahora tienen un espacio de nombres: setasignFpdi
Los límites de página que comienzan con una barra diagonal, como /MediaBox
, ya no se admiten. Elimine la barra o utilice una constante de PdfReaderPageBoundaries
.
Los parámetros $x, $y, $width y $height del método useTemplate()
o getTemplateSize()
ahora tienen valores predeterminados más lógicos y correctos. Pasar 0
como ancho o alto dará como resultado una InvalidArgumentException
ahora.
El valor de retorno de getTemplateSize()
había cambiado a una matriz con más claves parlantes y reutilización: use width
en lugar de w
y height
en lugar de h
.
Si desea usar FPDI con TCPDF, necesita refactorizar su código para usar la clase TcpdfFpdi
(desde 2.1; antes era TcpdfFpdi
) en lugar de FPDI
.
Un ejemplo simple, que importa una sola página y la coloca en una nueva página creada:
AddPage();// establecer el archivo fuente$pdf->setSourceFile("Fantastic-Speaker.pdf");// importar página 1$tplId = $pdf->importPage(1);// use la página importada y colóquela en el punto 10,10 con un ancho de 100 mm$pdf->useTemplate($tplId, 10, 10, 100);$pdf->Output();
Una documentación completa para el usuario final y una referencia de API están disponibles aquí.