Heim >Backend-Entwicklung >PHP-Tutorial >Generieren von PDF-Dokumenten in Laravel
Das Erstellen von PDF-Dokumenten ist eine häufige Anforderung in Webanwendungen, insbesondere zum Erstellen von Rechnungen, Quittungen, Zertifikaten, Tickets und verschiedenen Berichten. In diesem umfassenden Tutorial befassen wir uns mit der Verwendung von Laravel und DomPDF zum Generieren von PDF-Dokumenten mit Bildern und CSS. Wir behandeln Konfigurationsoptionen, Designüberlegungen, Ausgabegröße, Leistung und Datenbankabfragen. Darüber hinaus besprechen wir Tipps und Tricks zum Umgang mit Seitenumbrüchen, zum Laden von Bildern mit Base64 und mehr.
Bevor wir beginnen, stellen Sie sicher, dass Sie Folgendes installiert haben:
DomPDF ist eine beliebte PHP-Bibliothek, mit der Sie PDF-Dokumente aus HTML-Inhalten generieren können. Es unterstützt CSS-Stil, Bilder und verschiedene Konfigurationsoptionen. Durch die Integration von DomPDF mit Laravel können Sie mithilfe von Blade-Vorlagen und den leistungsstarken Funktionen von Laravel ganz einfach anspruchsvolle PDF-Dokumente erstellen.
Andere beliebte PDF-Bibliotheken sind TCPDF, FPDF und Snappy.
DomPDF wird jedoch aufgrund seiner einfachen Integration und seines robusten Funktionsumfangs häufig verwendet.
In diesem Tutorial gehen wir durch den Prozess der Einrichtung eines Laravel-Projekts, der Konfiguration von DomPDF, der Erstellung eines Controllers für die PDF-Generierung, der Gestaltung einer Blade-Vorlage für den PDF-Inhalt, des Hinzufügens von Routen und der Optimierung der Leistung. Außerdem besprechen wir erweiterte Konfigurationsoptionen und geben Tipps und Tricks zum Generieren hochwertiger PDF-Dokumente.
In diesem Tutorial wird davon ausgegangen, dass Sie über grundlegende Kenntnisse von Laravel und PHP verfügen. Wenn Sie neu bei Laravel sind, sollten Sie die offizielle Laravel-Dokumentation durchgehen, um sich mit dem Framework vertraut zu machen. Ansonsten können Sie dem Laravel Bootcamp folgen, um mit Laravel zu beginnen.
Erstellen Sie zunächst ein neues Laravel-Projekt, falls Sie noch keines haben, oder verwenden Sie ein vorhandenes Projekt. Natürlich können Sie diesen Schritt überspringen, wenn Sie bereits ein Laravel-Projekt haben.
composer create-project --prefer-dist laravel/laravel pdf-tutorial cd pdf-tutorial
Als nächstes installieren Sie DomPDF:
composer require barryvdh/laravel-dompdf
Konfigurationsdatei veröffentlichen:
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
Öffnen Sie die Datei config/dompdf.php. Die Konfigurationsdatei enthält verschiedene Optionen zum Anpassen der PDF-Ausgabe. Hier können Sie verschiedene Optionen festlegen, darunter das Standardpapierformat, die Ausrichtung, die Schriftart und mehr.
'default_paper_size' => 'a4',
'orientation' => 'portrait',
'default_font' => 'serif',
Erstellen Sie einen Controller für die PDF-Generierung:
php artisan make:controller PDFController
Fügen Sie in app/Http/Controllers/PDFController.php den folgenden Code hinzu:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use PDF; class PDFController extends Controller { public function generatePDF() { $data = [ 'title' => 'Laravel PDF Example', 'date' => date('m/d/Y'), ]; $pdf = PDF::loadView('myPDF', $data); return $pdf->download('document.pdf'); } }
Erstellen Sie eine Blade-Vorlage für den PDF-Inhalt:
touch resources/views/myPDF.blade.php
Fügen Sie den folgenden Inhalt zu myPDF.blade.php hinzu:
<title>Laravel PDF Example</title> <style> body { font-family: 'Arial, sans-serif'; } .container { margin: 0 auto; padding: 20px; } .header { text-align: center; margin-bottom: 20px; } .content { font-size: 12px; } </style> <div class="container"> <div class="header"> <h1>{{ $title }}</h1> <p>Date: {{ $date }}</p> </div> <div class="content"> <p>This is an example of a PDF document generated using Laravel and DomPDF.</p> </div> </div>
Fügen Sie Routen zur Handhabung der PDF-Generierung in Routen/web.php hinzu:
use App\Http\Controllers\PDFController; Route::get('generate-pdf', [PDFController::class, 'generatePDF']);
Sie können Bilder zum PDF hinzufügen, indem Sie sie als Base64-codierte Zeichenfolgen einbetten oder URLs verwenden.
Bilder können mithilfe der Base64-Kodierung direkt in die Blade-Vorlage eingebettet werden. Um beispielsweise ein Bild aus public/images einzubetten, gehen Sie wie folgt vor:
<img src="data:image/png;base64,%7B%7B%20base64_encode(file_get_contents(public_path('images/logo.png')))%20%7D%7D" alt="Generieren von PDF-Dokumenten in Laravel">
Oder direkt von einer URL:
<img src="%7B%7B%20asset('images/logo.png')%20%7D%7D" alt="Generieren von PDF-Dokumenten in Laravel">
Beim Umgang mit großen Datensätzen (z. B. mehr als 1.000 Datensätzen) verwenden Sie Paginierung oder Chunking, um die Speichernutzung zu verwalten:
$data = DB::table('users')->paginate(50); $pdf = PDF::loadView('myPDF', ['data' => $data]);
Um die Ausgabegröße zu reduzieren, minimieren Sie die Verwendung umfangreicher Bilder und entscheiden Sie sich nach Möglichkeit für Vektorgrafiken. Verwenden Sie außerdem effizientes CSS.
Stellen Sie sicher, dass der Inhalt für Seitenumbrüche gut strukturiert ist. Verwenden Sie CSS, um Seitenumbrüche zu verarbeiten:
.page-break { page-break-after: always; }
Und in Ihrer Blade-Vorlage:
<div class="page-break"></div>
Weitere Informationen zu erweiterten Konfigurationen finden Sie in der DomPDF-Dokumentation. Sie können fast alles anpassen, von den Rändern bis hin zur Art und Weise, wie Schriftarten geladen werden.
Um benutzerdefinierte Schriftarten zu verwenden, fügen Sie diese zunächst Ihrem Projekt hinzu und konfigurieren Sie DomPDF für die Verwendung:
'custom_font_dir' => base_path('resources/fonts/'), 'custom_font_data' => [ 'custom-font' => [ 'R' => 'CustomFont-Regular.ttf', 'B' => 'CustomFont-Bold.ttf', ] ],
In Ihrer Blade-Vorlage:
<style> body { font-family: 'custom-font', sans-serif; } </style>
By following this step-by-step guide, you can generate sophisticated PDF documents using Laravel and DomPDF, complete with images and CSS styling. This tutorial has covered essential configuration options, design considerations, performance optimization. You can expand this foundation to build a robust document generation system for your Laravel application.
This tutorial is part of a series on PDF generation with Laravel. A complete repository with various document templates (invoices, receipts, certificates, tickets, etc.) can be found here. Feel free to contribute and expand the collection.
Happy coding!
Das obige ist der detaillierte Inhalt vonGenerieren von PDF-Dokumenten in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!