PHPackages                             asarmiento/friendly-fpdf - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. asarmiento/friendly-fpdf

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

asarmiento/friendly-fpdf
========================

Una librería amigable para generar PDFs en Laravel usando FPDF

2.0.1(11mo ago)0251—0%MITPHPPHP ^7.4|^8.0

Since Dec 20Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/asarmiento/FriendlyFPDF)[ Packagist](https://packagist.org/packages/asarmiento/friendly-fpdf)[ RSS](/packages/asarmiento-friendly-fpdf/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (5)Versions (5)Used By (0)

FriendlyFpdf para Laravel
=========================

[](#friendlyfpdf-para-laravel)

Una librería amigable para generar PDFs en Laravel usando FPDF. Esta librería proporciona **dos formas de uso**:

1. **Interfaz fluida** (FriendlyFpdf): Métodos encadenables para facilitar el uso
2. **Inyección de dependencias** (Fpdf): Compatible con el estilo

Características
---------------

[](#características)

- **Dos formas de uso**: Interfaz fluida y inyección de dependencias
- Configuración personalizable
- Integración sencilla con Laravel
- Basado en la librería FPDF
- Soporte para Laravel 8.x, 9.x y 10.x
- Compatible con Laravel Vapor
- Inyección de dependencias en rutas y controladores

Requisitos
----------

[](#requisitos)

- PHP 7.4 o superior
- Laravel 8.x, 9.x o 10.x

Instalación
-----------

[](#instalación)

Puedes instalar el paquete vía composer:

```
composer require asarmiento/friendly-fpdf
```

Configuración
-------------

[](#configuración)

1. El Service Provider se registra automáticamente en Laravel 8+.
2. Publica el archivo de configuración:

```
php artisan vendor:publish --provider="Asarmiento\FriendlyFpdf\FriendlyFpdfServiceProvider"
```

3. Esto creará un archivo `config/friendly-fpdf.php` con las siguientes opciones:

```
return [
    'default_font' => 'Arial',     // Fuente predeterminada
    'default_size' => 12,          // Tamaño de fuente predeterminado
    'margin_left' => 10,           // Margen izquierdo en mm
    'margin_right' => 10,          // Margen derecho en mm
    'margin_top' => 10,            // Margen superior en mm
    'margin_bottom' => 10,         // Margen inferior en mm
    'orientation' => 'P',          // Orientación: P (Portrait) o L (Landscape)
    'unit' => 'mm',               // Unidad de medida (mm, pt, cm, in)
    'format' => 'A4'              // Formato del papel
];
```

Uso Básico
----------

[](#uso-básico)

Ahora puedes usar la librería de **dos formas diferentes**:

### Forma 1: Inyección de Dependencias (/laravel-fpdf)

[](#forma-1-inyección-de-dependencias-laravel-fpdf)

```
// En routes/web.php
use Asarmiento\FriendlyFpdf\Fpdf;

Route::get('pdf', function (Fpdf $fpdf) {
    $fpdf->AddPage();
    $fpdf->SetFont('Arial', 'B', 16);
    $fpdf->Cell(0, 10, '¡Hola Mundo!', 0, 1, 'C');
    $fpdf->Output('I', 'documento.pdf');
});

// En un Controller
class PdfController extends Controller
{
    public function generate(Fpdf $fpdf)
    {
        $fpdf->AddPage();
        $fpdf->SetFont('Arial', 'B', 16);
        $fpdf->Cell(0, 10, '¡Hola Mundo!', 0, 1, 'C');
        return response($fpdf->Output('S'), 200, [
            'Content-Type' => 'application/pdf',
            'Content-Disposition' => 'inline; filename="documento.pdf"'
        ]);
    }
}
```

### Forma 2: Interfaz Fluida (FriendlyFpdf - Original)

[](#forma-2-interfaz-fluida-friendlyfpdf---original)

```
use Asarmiento\FriendlyFpdf\Facades\FriendlyFpdf;

public function generatePdf()
{
    return FriendlyFpdf::addPage()
        ->addText('¡Hola Mundo!', 10, 10)
        ->Output('I', 'documento.pdf');
}
```

### Forma 3: Facade Simple

[](#forma-3-facade-simple)

```
use Asarmiento\FriendlyFpdf\Facades\Fpdf;

public function generatePdf()
{
    Fpdf::AddPage();
    Fpdf::SetFont('Arial', 'B', 16);
    Fpdf::Cell(0, 10, '¡Hola Mundo!', 0, 1, 'C');
    return Fpdf::Output('I', 'documento.pdf');
}
```

### Métodos Disponibles

[](#métodos-disponibles)

#### Gestión de Páginas

[](#gestión-de-páginas)

```
// Añadir una nueva página
FriendlyFpdf::addPage($orientation = '', $size = '', $rotation = 0);
```

#### Texto

[](#texto)

```
// Añadir texto en una posición específica
FriendlyFpdf::addText($text, $x = null, $y = null, $align = 'L');

// Los valores válidos para $align son:
// 'L' - Alineación izquierda
// 'C' - Centrado
// 'R' - Alineación derecha
```

#### Salida del PDF

[](#salida-del-pdf)

```
// Generar el PDF
FriendlyFpdf::Output($destination = 'I', $filename = 'doc.pdf');

// Valores para $destination:
// 'I' - Enviar al navegador
// 'D' - Forzar descarga
// 'F' - Guardar en archivo local
// 'S' - Retornar como string
```

Ejemplos de Uso
---------------

[](#ejemplos-de-uso)

### Ejemplo con Inyección de Dependencias ()

[](#ejemplo-con-inyección-de-dependencias-)

```
use Asarmiento\FriendlyFpdf\Fpdf;

// En routes/web.php
Route::get('reporte', function (Fpdf $fpdf) {
    $fpdf->AddPage();
    $fpdf->SetFont('Arial', 'B', 18);
    $fpdf->Cell(0, 15, 'Reporte Mensual', 0, 1, 'C');

    $fpdf->SetFont('Arial', '', 12);
    $fpdf->Cell(0, 10, 'Fecha: ' . date('Y-m-d'), 0, 1);
    $fpdf->Cell(0, 10, 'Este es un ejemplo de reporte', 0, 1);

    $fpdf->Output('D', 'reporte.pdf');
});

// En un Controller con respuesta personalizada
class ReporteController extends Controller
{
    public function generar(Fpdf $fpdf)
    {
        $fpdf->AddPage();
        $fpdf->SetFont('Arial', 'B', 18);
        $fpdf->Cell(0, 15, 'Reporte Avanzado', 0, 1, 'C');

        // Agregar contenido dinámico
        $data = collect(['Item 1', 'Item 2', 'Item 3']);
        $fpdf->SetFont('Arial', '', 12);

        foreach ($data as $item) {
            $fpdf->Cell(0, 8, $item, 0, 1);
        }

        return response($fpdf->Output('S'), 200, [
            'Content-Type' => 'application/pdf',
            'Content-Disposition' => 'attachment; filename="reporte.pdf"'
        ]);
    }
}
```

### Ejemplo con Interfaz Fluida (Original)

[](#ejemplo-con-interfaz-fluida-original)

```
use Asarmiento\FriendlyFpdf\Facades\FriendlyFpdf;

public function generateReport()
{
    return FriendlyFpdf::addPage()
        ->addText('Reporte Mensual', 10, 10, 'C')
        ->addText('Fecha: ' . date('Y-m-d'), 10, 20)
        ->addText('Este es un ejemplo de reporte', 10, 30)
        ->Output('D', 'reporte.pdf');
}
```

### Guardar PDF en Archivo

[](#guardar-pdf-en-archivo)

```
// Con inyección de dependencias
Route::get('save-pdf', function (Fpdf $fpdf) {
    $fpdf->AddPage();
    $fpdf->SetFont('Arial', '', 12);
    $fpdf->Cell(0, 10, 'Contenido guardado', 0, 1);
    $fpdf->Output('F', storage_path('app/pdfs/documento.pdf'));

    return 'PDF guardado exitosamente';
});

// Con interfaz fluida
FriendlyFpdf::addPage()
    ->addText('Contenido del PDF', 10, 10)
    ->Output('F', storage_path('app/pdfs/documento.pdf'));
```

2. **El código existente funcionará sin cambios:**

    ```
    // Esto seguirá funcionando exactamente igual
    Route::get('/', function (xxxxxxx\Fpdf\Fpdf $fpdf) {
        $fpdf->AddPage();
        $fpdf->SetFont('Courier', 'B', 18);
        $fpdf->Cell(50, 25, 'Hello World!');
        $fpdf->Output();
    });

    // Solo cambia el namespace:
    Route::get('/', function (Asarmiento\FriendlyFpdf\Fpdf $fpdf) {
        $fpdf->AddPage();
        $fpdf->SetFont('Courier', 'B', 18);
        $fpdf->Cell(50, 25, 'Hello World!');
        $fpdf->Output();
    });
    ```
3. **Configuración compatible:**

    - Mantén la variable de entorno `FPDF_VAPOR_HEADERS=true` para Laravel Vapor
    - La configuración de fuentes es compatible
    - Todas las características de FPDF están disponibles

### Ventajas adicionales

[](#ventajas-adicionales)

Al usar `asarmiento/friendly-fpdf` obtienes:

- ✅ **Interfaz fluida adicional** para desarrollo más rápido
- ✅ **Mejor configuración** con más opciones predeterminadas
- ✅ **Facades adicionales** para mayor flexibilidad
- ✅ **Documentación en español**

Ejemplos Completos
------------------

[](#ejemplos-completos)

Para ver ejemplos detallados de todas las formas de uso, consulta el archivo [`examples/usage_examples.php`](examples/usage_examples.php) que incluye:

- 📋 **Reportes con tablas**
- 🧾 **Facturas completas**
- 📜 **Certificados**
- 📊 **Gráficos simples**
- 📄 **Documentos multipágina**
- 🔗 **Integración con controladores**

Documentación Adicional
-----------------------

[](#documentación-adicional)

### Variables de Entorno

[](#variables-de-entorno)

```
# Para Laravel Vapor
FPDF_VAPOR_HEADERS=true
```

### Configuración Avanzada

[](#configuración-avanzada)

```
// config/friendly-fpdf.php
return [
    'orientation' => 'P',           // P = Portrait, L = Landscape
    'unit' => 'mm',                // mm, pt, cm, in
    'size' => 'A4',                // A4, A5, Letter, Legal, etc.

    'default_font' => [
        'family' => 'Helvetica',    // Arial, Helvetica, Times, Courier
        'style'  => '',             // '', 'B', 'I', 'U'
        'size'   => 12
    ],

    'vapor_support' => env('FPDF_VAPOR_HEADERS', false),
];
```

Contribuir
----------

[](#contribuir)

Las contribuciones son bienvenidas y serán completamente creditadas.

1. Fork el repositorio
2. Crea tu rama de características (`git checkout -b feature/amazing-feature`)
3. Commit tus cambios (`git commit -m 'Add some amazing feature'`)
4. Push a la rama (`git push origin feature/amazing-feature`)
5. Abre un Pull Request

Seguridad
---------

[](#seguridad)

Si descubres algún problema de seguridad, por favor envía un email a  en lugar de usar el issue tracker.

Créditos
--------

[](#créditos)

- [Anwar Sarmiento](https://github.com/asarmiento)
- [Todos los Contribuyentes](../../contributors)

Licencia
--------

[](#licencia)

The MIT License (MIT). Por favor, consulta el [archivo de licencia](LICENSE.md) para más información.

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance52

Moderate activity, may be stable

Popularity15

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~58 days

Total

4

Last Release

330d ago

Major Versions

1.1.0 → 2.0.02025-06-13

### Community

Maintainers

![](https://www.gravatar.com/avatar/5ed0d6566471ef7c2f77cc46fd02f1d399ccc9ad87d9998c64b9a81b01946f46?d=identicon)[asarmiento](/maintainers/asarmiento)

---

Top Contributors

[![asarmiento](https://avatars.githubusercontent.com/u/10239510?v=4)](https://github.com/asarmiento "asarmiento (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/asarmiento-friendly-fpdf/health.svg)

```
[![Health](https://phpackages.com/badges/asarmiento-friendly-fpdf/health.svg)](https://phpackages.com/packages/asarmiento-friendly-fpdf)
```

###  Alternatives

[maatwebsite/excel

Supercharged Excel exports and imports in Laravel

12.7k144.3M710](/packages/maatwebsite-excel)[barryvdh/laravel-dompdf

A DOMPDF Wrapper for Laravel

7.3k87.6M275](/packages/barryvdh-laravel-dompdf)[barryvdh/laravel-snappy

Snappy PDF/Image for Laravel

2.8k24.8M48](/packages/barryvdh-laravel-snappy)[rap2hpoutre/fast-excel

Fast Excel import/export for Laravel

2.3k24.9M47](/packages/rap2hpoutre-fast-excel)[elibyy/tcpdf-laravel

tcpdf support for Laravel 6, 7, 8, 9, 10, 11

3542.7M5](/packages/elibyy-tcpdf-laravel)[webklex/laravel-pdfmerger

Generic PDF merger for Laravel

1422.6M2](/packages/webklex-laravel-pdfmerger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
