Top 5: las mejores librerias de generación de PDF (código abierto) para PHP

Top 5: las mejores librerias de generación de PDF (código abierto) para PHP

La creación automática de archivos PDF es uno de los puntos más importantes de un proyecto (comercial o no). Como probablemente, los PDF generados no son para ti o para tu equipo, sino para sus clientes exigentes, debe proporcionar una solución que cumpla con todas las expectativas y requisitos.

En algunos casos, no debido a los requisitos exagerados del cliente, sino a la biblioteca que utiliza para generar archivos PDF, se encontrará limitado y probablemente con problemas para proporcionar una solución al cliente.

En este artículo, vamos a mostrar 5 de las bibliotecas de generación de PDF más importantes que lo ayudarán a lograr esos PDF complejos y extensos.

Este top se basa en diferentes puntos como qué tan fácil es de implementar, casos de uso, usuarios de la biblioteca, funciones y estado de desarrollo.

5. FPDF

EJEMPLOS

FPDF es una clase PHP que permite generar archivos PDF con PHP puro, es decir sin usar la librería PDFlib. F de FPDF significa Gratis: puedes usarlo para cualquier tipo de uso y modificarlo para que se adapte a todas tus necesidades.

FPDF tiene otras ventajas: funciones de alto nivel, entre sus principales características están:

  • Elección de unidad de medida, formato de página y márgenes.
  • Gestión de encabezados y pies de página.
  • Salto de página automático.
  • Salto de línea automático y justificación de texto.
  • Soporte de imágenes (JPEG, PNG y GIF).
  • Colores.
  • Enlaces.
  • TrueType, Type1 y soporte de codificación.
  • Compresión de página.

FPDF no requiere extensión (excepto Zlib para habilitar la compresión y GD para soporte GIF). La última versión requiere al menos PHP 5.1.

El siguiente fragmento muestra un PDF básico generado con FPDF:

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

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

4. mPDF

mPDF es una clase PHP que genera archivos PDF a partir de HTML codificado en UTF-8. Está basado en FPDF HTML2FPDF , con una serie de mejoras. mPDF fue escrito por Ian Back y se publica bajo la licencia GNU GPL v2 .

Antes de comenzar a usarlo, te recomendamos que leas la documentación que se encuentra en https://mpdf.github.io/ ..

El siguiente fragmento muestra un PDF básico después de una instalación de Composer con mPDF:

<?php
require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new mPDF();

// Escribe algo de codigo HTML:

$mpdf->WriteHTML('<h1>Hello World</h1><br><p>My first PDF with mPDF</p>');

// Salida de un archivo HTML directamente al Ordenador
$mpdf->Output();
?>

3. DOMPDF

Github

Dompdf es (principalmente) un motor de diseño y renderizado HTML compatible con CSS 2.1 escrito en PHP. Es un renderizador basado en estilos: descargará y leerá hojas de estilo externas, etiquetas de estilo en línea y los atributos de estilo de elementos HTML individuales. También es compatible con la mayoría de los atributos HTML de presentación.

Caracteristicas

  • Maneja la mayoría de CSS 2.1 y algunas propiedades de CSS3, incluidas las reglas @import, @media y @page
  • Admite la mayoría de los atributos de presentación HTML 4.0
  • Admite hojas de estilo externas, ya sea local o mediante http / ftp (a través de fopen-wrappers)
  • Admite tablas complejas, incluidos intervalos de filas y columnas, modelos de bordes separados y contraídos, estilo de celda individual
  • Soporte de imágenes (gif, png (8, 24 y 32 bits con canal alfa), bmp y jpeg)
  • Sin dependencias de bibliotecas de PDF externas, gracias a la clase R&OS PDF
  • Soporte PHP en línea
  • Soporte básico de SVG

Requisitos

  • PHP versión 5.3.0 o superior
  • Extensión DOM
  • Extensión GD
  • Extensión MBString
  • php-font-lib
  • php-svg-lib

Recomendaciones

  • OPcache (OPcache, XCache, APC, etc.): mejora el rendimiento
  • Extensión IMagick o GMagick: mejora el rendimiento del procesamiento de imágenes

El siguiente fragmento muestra cómo generar un PDF simple y generar una descarga directa usando Dompdf:

<?php
require_once 'dompdf/autoload.inc.php';
// referencia al espacio de nombres dompdf
use DompdfDompdf;

// instacia y usa la clase dompdf
$dompdf = new Dompdf();
$dompdf->loadHtml('<h1>DOMPDF Demo</h1><br><p>Hello World !</p>');

// (Opcional) configura el tamaño de hoja y la orientación
$dompdf->setPaper('A4', 'portrait');

// Procesa el archivo HTML como PDF
$dompdf->render();

// Salida del PDF generado al navegador
$dompdf->stream();

2. Snappy (wkhtmltopdf)

Biblioteca de Github Snappy  | Github wkhtmltopdf

Snappy es una biblioteca PHP5 que permite la generación de miniaturas, instantáneas o PDF desde una URL o una página html. Utiliza los excelentes wkhtmltopdf y wkhtmltoimage basados ​​en webkit disponibles en OSX, linux, windows. Tendrás que descargar wkhtmltopdf 0.12.x para poder utilizar Snappy .

wkhtmltopdf y wkhtmltoimage son herramientas de línea de comandos de código abierto (LGPLv3) para renderizar HTML en PDF y varios formatos de imagen utilizando el motor de renderizado Qt WebKit. Estos funcionan completamente "sin cabeza" y no requieren un servicio de visualización o visualización.

Incluso puedes descargar una distribución wkhtmltopdf como una dependencia del compositor y hacer referencia al binario dinámicamente en tu proyecto.

El siguiente fragmento muestra un PDF básico de HTML usando wkhtmltopdf en Windows con la página de inicio de Github:

<?php

require __DIR__ . '/vendor/autoload.php';

use KnpSnappyPdf;

// Por ejemplo, en Windows usarás el archivo ejecutable wkhtmltopdf
$snappy = new Pdf('wkhtmltopdf.exe');

// Descargas el PDF que se transmitió
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="file.pdf"');
echo $snappy->getOutput('http://www.github.com');

1. TCPDF

Github | Página principal

TCPDF es una biblioteca PHP para generar documentos PDF sobre la marcha fácilmente y con un par de líneas. Es compatible con la personalización y muchas características clave cuando trabaja con la creación de archivos PDF.

Esta biblioteca admite fuentes Unicode y Nicola Asuni la mantiene activamente en el repositorio de Github.

Tiene una extensa colección de ejemplos y fragmentos listos para probar en su página de inicio oficial. TCPDF tiene como principales características:

  • No se requieren bibliotecas externas para las funciones básicas .
  • todos los formatos de página estándar, formatos de página personalizados, márgenes personalizados y unidades de medida.
  • Idiomas UTF-8 Unicode y de derecha a izquierda.
  • Fuentes TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 y CID-0.
  • subconjunto de fuentes.
  • métodos para publicar algunos códigos XHTML + CSS, Javascript y Forms.
  • imágenes, gráficos (figuras geométricas) y métodos de transformación.
  • admite imágenes JPEG, PNG y SVG de forma nativa, todas las imágenes compatibles con GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) y todas las imágenes compatibles a través de ImagMagick ( http://www.imagemagick.org/ script / formatos.php )
  • Códigos de barras 1D y 2D: CÓDIGO 39, ANSI MH10.8M-1983, USD-3, 3 de 9, CÓDIGO 93, USS-93, Estándar 2 de 5, Intercalado 2 de 5, CÓDIGO 128 A / B / C, 2 y Extensión basada en UPC de 5 dígitos, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (código de cliente de 4 estados de Royal Mail), CBC (código de barras de cliente), KIX (índice de Klant - Índice de clientes), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417.
  • Perfiles ICC JPEG y PNG, escala de grises, RGB, CMYK, colores planos y transparencias.
  • gestión automática de encabezados y pies de página.
  • cifrado de documentos de hasta 256 bits y certificaciones de firma digital.
  • transacciones a comandos UNDO.
  • Anotaciones en PDF, incluidos enlaces, texto y archivos adjuntos.
  • modos de representación de texto (relleno, trazo y recorte).
  • modo de columnas múltiples.
  • regiones de página sin escritura.
  • marcadores, destinos con nombre y tabla de contenido.
  • separación de palabras del texto.
  • estiramiento y espaciado del texto (seguimiento).
  • salto de página automático, salto de línea y alineación de texto, incluida la justificación.
  • numeración automática de páginas y grupos de páginas.
  • mover y eliminar páginas.
  • Compresión de página (requiere la extensión php-zlib).
  • Plantillas XOBject.
  • Capas y visibilidad de objetos.
  • Soporte PDF / A-1b.

te enseñamos en el siguiente ejemplo cómo renderizar HTML como PDF con TCPDF:

<?php 
// Debes indicar la biblioteca TCPDF principal (busca la ruta de instalación).
require_once('tcpdf_include.php');

// crea un nuevo documento PDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// establece información del documento
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Our Code World');
$pdf->SetTitle('Example Write Html');

// establecer datos de encabezado predeterminados
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 006', PDF_HEADER_STRING);

// establece fuentes de encabezado y pie de página
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// establece la fuente monoespaciada determinada
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// establece el margen
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// establecer saltos de pagina automaticos
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// establece el factor de escala de la imagen
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// añade una pagina
$pdf->AddPage();

$html = '<h4>PDF Example</h4><br><p>Welcome to the Jungle</p>';
 
$pdf->writeHTML($html, true, false, true, false, '');
// añade una pagina
$pdf->AddPage();

$html = '<h1>Hey</h1>';
// salida del contenido HTML
$pdf->writeHTML($html, true, false, true, false, '');

// reset pointer to the last page
$pdf->lastPage();
//Cerrar y dar salida al documento PDF
$pdf->Output('example_006.pdf', 'I');

TCPDF en primer lugar, ¿por qué ?. Teóricamente, el primer lugar debería ser wkhtmltopdf, ya que utiliza webkit para renderizar tu HTML y probablemente será más útil para renderizar cosas como lienzo, SVG, etc. Sin embargo, debes saber que no todos los desarrolladores pueden incluir binarios (aplicación o ejecutables) en sus proyectos o disfrutar de los privilegios de hacer lo que quiera con el servidor, ahí es cuando TCPDF se convierte en la primera opción para la mayoría de desarrolladores.

TCPDF está en el primer lugar de esta lista, ya que es la biblioteca PHP más fácil de usar para crear PDF y, sin embargo, la más completa y extensa, ya que no requiere archivos ejecutables y todo funciona con PHP simple. Cubre los requisitos básicos de todos los proyectos que requieren la función de generación de PDF.

Si conoces otra biblioteca PHP increíble para generar PDF, compártela con la comunidad en el cuadro de comentarios, diviértete !

Esto podria interesarte

Conviertete en un programador más sociable