"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Generando documentos PDF en Laravel

Generando documentos PDF en Laravel

Publicado el 2024-08-16
Navegar:252

Generating PDF documents in Laravel

Laravel y DomPDF: Guía paso a paso para generar documentos PDF con imágenes y CSS

La creación de documentos PDF es un requisito común en las aplicaciones web, especialmente para generar facturas, recibos, certificados, tickets y diversos informes. En este completo tutorial, profundizaremos en el uso de Laravel y DomPDF para generar documentos PDF con imágenes y CSS. Cubriremos opciones de configuración, consideraciones de diseño, tamaño de salida, rendimiento y consultas de bases de datos. Además, analizaremos consejos y trucos para manejar saltos de página, cargar imágenes usando base64 y más.

Requisitos previos

Antes de comenzar, asegúrese de tener instalado lo siguiente:

  • PHP >=8.2
  • Compositor 2
  • Laravel 10

Introducción

DomPDF es una biblioteca PHP popular que le permite generar documentos PDF a partir de contenido HTML. Admite estilos CSS, imágenes y varias opciones de configuración. Al integrar DomPDF con Laravel, puede crear fácilmente documentos PDF sofisticados utilizando plantillas Blade y las potentes funciones de Laravel.

Otras bibliotecas de PDF populares incluyen TCPDF, FPDF y Snappy.

Sin embargo, DomPDF se utiliza ampliamente debido a su facilidad de integración y su sólido conjunto de funciones.

En este tutorial, recorreremos el proceso de configuración de un proyecto Laravel, configuración de DomPDF, creación de un controlador para manejar la generación de PDF, diseño de una plantilla Blade para el contenido del PDF, adición de rutas y optimización del rendimiento. También analizaremos las opciones de configuración avanzadas y brindaremos consejos y trucos para generar documentos PDF de alta calidad.

Suposiciones

Este tutorial asume que tienes conocimientos básicos de Laravel y PHP. Si eres nuevo en Laravel, considera consultar la documentación oficial de Laravel para familiarizarte con el marco. De lo contrario, puedes seguir el Laravel Bootcamp para comenzar con Laravel.

Paso 1: configurar el proyecto Laravel

Primero, crea un nuevo proyecto de Laravel si aún no tienes uno, o usa un proyecto existente. Por supuesto, puedes omitir este paso si ya tienes un proyecto de Laravel.

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial

A continuación, instale DomPDF:

composer require barryvdh/laravel-dompdf

Publicar el archivo de configuración:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

Paso 2: Configurar DomPDF

Abra el archivo config/dompdf.php. El archivo de configuración contiene varias opciones para personalizar la salida PDF. Aquí puede configurar varias opciones, incluido el tamaño de papel predeterminado, la orientación, la fuente y más.

  • Tamaño de papel: Puede configurar el tamaño de papel predeterminado.
  'default_paper_size' => 'a4',
  • Orientación: Establece la orientación predeterminada (vertical u horizontal).
  'orientation' => 'portrait',
  • Fuente: Puede especificar la fuente predeterminada y agregar fuentes personalizadas.
  'default_font' => 'serif',

Paso 3: crear un controlador

Crear un controlador para manejar la generación de PDF:

php artisan make:controller PDFController

En app/Http/Controllers/PDFController.php, agregue el siguiente código:

 'Laravel PDF Example',
            'date' => date('m/d/Y'),
        ];

        $pdf = PDF::loadView('myPDF', $data);

        return $pdf->download('document.pdf');
    }
}

Paso 4: crear una plantilla de hoja

Crear una plantilla Blade para el contenido PDF:

touch resources/views/myPDF.blade.php

Agregue el siguiente contenido a myPDF.blade.php:



    Laravel PDF Example

{{ $title }}

Date: {{ $date }}

This is an example of a PDF document generated using Laravel and DomPDF.

Paso 5: agregar rutas

Agregar rutas para manejar la generación de PDF en rutas/web.php:

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

Paso 6: Agregar imágenes

Puedes agregar imágenes al PDF incrustándolas como cadenas codificadas en base64 o usando URL.

Las imágenes se pueden incrustar directamente en la plantilla Blade usando codificación base64. Por ejemplo, para insertar una imagen del público/imágenes así es como puedes hacerlo:

Logo

O directamente desde una URL:

Logo

Paso 7: Optimización del rendimiento

Consultas de bases de datos

Cuando trabaje con conjuntos de datos grandes (por ejemplo, 1000 registros), utilice la paginación o la fragmentación para administrar el uso de la memoria:

$data = DB::table('users')->paginate(50);

$pdf = PDF::loadView('myPDF', ['data' => $data]);

Tamaño de salida

Para reducir el tamaño de salida, minimice el uso de imágenes pesadas y opte por gráficos vectoriales cuando sea posible. Además, utilice CSS eficiente.

Saltos de página

Asegúrese de que el contenido esté bien estructurado para los saltos de página. Utilice CSS para manejar saltos de página:

.page-break {
    page-break-after: always;
}

Y en tu plantilla Blade:

Paso 8: Configuración avanzada

Para configuraciones más avanzadas, consulte la documentación de DomPDF. Puedes personalizar casi todo, desde los márgenes hasta la forma en que se cargan las fuentes.

Usar fuentes personalizadas

Para usar fuentes personalizadas, primero agréguelas a su proyecto y configure DomPDF para usarlas:

'custom_font_dir' => base_path('resources/fonts/'),
'custom_font_data' => [
    'custom-font' => [
        'R' => 'CustomFont-Regular.ttf',
        'B' => 'CustomFont-Bold.ttf',
    ]
],

En tu plantilla Blade:

Conclusión

Al seguir esta guía paso a paso, puedes generar documentos PDF sofisticados usando Laravel y DomPDF, completos con imágenes y estilos CSS. Este tutorial ha cubierto opciones de configuración esenciales, consideraciones de diseño y optimización del rendimiento. Puede ampliar esta base para crear un sistema sólido de generación de documentos para su aplicación Laravel.

Serie potencial y repositorio

Este tutorial es parte de una serie sobre generación de PDF con Laravel. Aquí puede encontrar un repositorio completo con varias plantillas de documentos (facturas, recibos, certificados, tickets, etc.). No dudes en contribuir y ampliar la colección.

¡Feliz codificación!

Declaración de liberación Este artículo se reproduce en: https://dev.to/alphaolomi/generating-pdf-documents-in-laravel-n07?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3