This is an example of a PDF document generated using Laravel and DomPDF.
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 Konfigurationsmöglichkeiten 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:
'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:
Laravel PDF Example {{ $title }}
Date: {{ $date }}
This is an example of a PDF document generated using Laravel and DomPDF.
Routen hinzufügen, um die PDF-Generierung in Routen/web.php zu handhaben:
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 folgendermaßen vor:
Oder direkt von einer URL:
Beim Umgang mit großen Datensätzen (z. B. 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:
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 deren 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:
Wenn Sie dieser Schritt-für-Schritt-Anleitung folgen, können Sie mit Laravel und DomPDF anspruchsvolle PDF-Dokumente erstellen, komplett mit Bildern und CSS-Stil. In diesem Tutorial wurden wesentliche Konfigurationsoptionen, Designüberlegungen und Leistungsoptimierung behandelt. Sie können diese Grundlage erweitern, um ein robustes Dokumentgenerierungssystem für Ihre Laravel-Anwendung aufzubauen.
Dieses Tutorial ist Teil einer Reihe zur PDF-Generierung mit Laravel. Ein vollständiges Repository mit verschiedenen Dokumentvorlagen (Rechnungen, Quittungen, Zertifikate, Tickets usw.) finden Sie hier. Fühlen Sie sich frei, einen Beitrag zu leisten und die Sammlung zu erweitern.
Viel Spaß beim Codieren!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3