Eine digitale Signatur ist ein mathematisches Schema zur Überprüfung der Authentizität und Integrität einer digitalen Nachricht oder eines digitalen Dokuments. Eine gültige digitale Signatur einer Nachricht gibt dem Empfänger die Gewissheit, dass die Nachricht von einem bekannten Absender gesendet wurde und dass die Nachricht seit der Signatur nicht verändert wurde.
In diesem Tutorial erfahren Sie, wie Sie mithilfe der DomPDF TCPDF-Bibliothek in Laravel 10-Apps eine digitale Signatur zu PDF hinzufügen. Um in Laravel 10 eine digitale Signatur zu PDF hinzuzufügen, befolgen Sie diese Schritte.
Öffnen Sie zunächst Ihr cmd oder Terminal und führen Sie den folgenden Befehl aus, um die neue Laravel 10-App auf dem Server zu installieren und einzurichten:
composer create-project --prefer-dist laravel/laravel digital-signature-pdf
cd digital-signature-pdf
Führen Sie als Nächstes die folgenden Befehle aus, um laravel-dompdf für die PDF-Generierung und tcpdf für digitale Signaturen zu installieren:
composer require barryvdh/laravel-dompdf
composer require tecnickcom/tcpdf
Sobald Sie laravel-dompdf in Ihrem Laravel-Projekt installiert haben. Jetzt müssen Sie dompdf mit Laravel-Apps konfigurieren.
Öffnen Sie also die Datei config/app.php und fügen Sie die folgende Zeile zum Array providers hinzu:
Barryvdh\DomPDF\ServiceProvider::class,
Fügen Sie als Nächstes die folgende Zeile zum Array aliases in derselben Datei hinzu:
'PDF' => Barryvdh\DomPDF\Facade::class,
Als nächstes müssen Sie TCPDF für digitale Signaturen konfigurieren. Erstellen Sie im Stammverzeichnis Ihres Laravel-Projekts eine neue Datei mit dem Namen tcpdf_signature_config.php und folgendem Inhalt:
<?php
return [
'signature_title' => 'Digital Signature',
'signature_title_page' => 'Digital Signature - Page %s',
'signature_font_size' => 8,
'signature_image_width' => 25,
'signature_image_height' => 25,
'signature_file' => '', // Path to your signature image file
'signature_coordinates' => [
'x' => 10,
'y' => 10,
],
];
Wichtiger Hinweis: – Ersetzen Sie 'signature_file' durch den tatsächlichen Pfad zu Ihrer Signaturbilddatei.
Öffnen Sie als Nächstes erneut Ihr cmd und führen Sie darin den folgenden Befehl aus, um einen neuen Controller für die PDF-Generierung und digitale Signaturen zu erstellen:
php artisan make:controller PDFSignatureController
Sobald Sie die Controller-Klasse erstellt haben. Als nächstes müssen Sie die Datei PDFSignatureController.php im Verzeichnis app/Http/Controllers mit dem folgenden Code bearbeiten:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PDF;
class PDFSignatureController extends Controller
{
public function generatePDFWithSignature()
{
// Load TCPDF configuration
$config = config('tcpdf_signature_config');
// Create a new TCPDF instance
$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// Set document properties
$pdf->SetCreator(config('app.name'));
$pdf->SetAuthor('Your Name');
$pdf->SetTitle('Sample PDF with Digital Signature');
$pdf->SetSubject('Digital Signature Example');
$pdf->SetKeywords('laravel, pdf, digital signature');
// Set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// Set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// Set margins
$pdf->SetMargins(10, 10, 10);
// Set auto page breaks
$pdf->SetAutoPageBreak(TRUE, 10);
// Set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// Initialize PDF document
$pdf->AddPage();
// Output digital signature image
if (!empty($config['signature_file'])) {
$signatureX = $config['signature_coordinates']['x'];
$signatureY = $config['signature_coordinates']['y'];
$pdf->Image($config['signature_file'], $signatureX, $signatureY, $config['signature_image_width'], $config['signature_image_height']);
}
// Output text for digital signature
$pdf->SetFont('helvetica', '', $config['signature_font_size']);
$pdf->SetXY(40, 20);
$pdf->Cell(0, 0, 'Digitally signed by:', 0, 1);
$pdf->SetXY(40, 25);
$pdf->Cell(0, 0, 'Your Name', 0, 1);
$pdf->SetXY(40, 30);
$pdf->Cell(0, 0, 'Date: ' . date('Y-m-d H:i:s'), 0, 1);
// Output PDF to the browser
$pdf->Output('sample.pdf', 'I');
}
}
Fügen Sie in Ihrer routes/web.php-Datei eine Route zu Ihrer neu erstellten Controller-Methode hinzu:
use App\Http\Controllers\PDFSignatureController;
Route::get('/generate-pdf', [PDFSignatureController::class, 'generatePDFWithSignature']);
Jetzt können Sie ein PDF mit einer digitalen Signatur erstellen, indem Sie die folgende URL in Ihrem Browser aufrufen:
http://your-domain/generate-pdf
Sie haben die digitale Signaturfunktion für PDF-Dokumente in Laravel 10 mit TCPDF und Laravel DomPDF erfolgreich implementiert.