Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi

Yazılım

Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi

teknomers
Son güncelleme: 21 Temmuz 2026 21:36
teknomers
Paylaş
Paylaş

Bir kullanıcı bir kursu tamamladığında, iş başvurusu ile iliştirebileceği, tam kalitede basılabilir ve bir işverenin doğruluğunu kontrol edebileceği bir belge gibi davranan bir sertifika ister. Bu makalede, Laravel ile tam olarak bunu nasıl yapacağınızı öğreneceksiniz: bir Blade ile tasarlanmış sertifika, bir doğrulama sayfasına yönlendiren bir QR kodu ile birlikte, otomatik olarak teslim edilen bir e-posta.

Blade’de Tasarımı Koruyun

Sertifika, tek bir dosyada yaşayan sıradan bir Blade görünümüdür, stiller inline olarak tanımlanır, böylece tarayıcıda önizlediğiniz işaretleme, üretilen ile tam olarak aynıdır. Boş bir sayfa yerine tasarlanmış bir başlangıç noktası arıyorsanız, tamamlanmış sertifika şablonu iyi bir temel sunar.

{{-- resources/views/certificates/template.blade.php --}}





  

Certificate of Completion

has completed {{ $certificate->course }}

Issued {{ $certificate->issued_at->format('j F Y') }}

{!! QrCode::size(110)->generate(route('certificates.verify', $certificate)) !!}

{{ route('certificates.verify', $certificate) }}

İki şey burada sessizce çalışıyor. Tasarım, sabit piksel boyutlarında sabitlenmek yerine bir belge gibi akıyor, çünkü PDF, A4 portre sayfalarına render edilmektedir. QR kodu, dışarıdan bir şey almaya ihtiyaç duymadan inline SVG olarak üretilmektedir.

Her Sertifikaya Doğrulanabilir Bir Kimlik Verin

Doğrulama yalnızca sabit bir kamu tanımlayıcısı ve bunu çözen bir sayfa gerektirir. Sertifika satırında bir UUID yeterlidir.

Schema::create('certificates', function (Blueprint $table) {
    $table->id();
    $table->uuid()->unique();
    $table->foreignId()->constrained();
    $table->string();
    $table->timestamp();
    $table->timestamps();
});

Doğrulama rotası, UUID ile bağlandığı için, ardışık kimliklerin tahmin edilmesi kimseyi bir yere götürmez.

Route::get(, function (Certificate $certificate) {
    return view(, [=> $certificate]);
})->name();

Doğrula görünümü, öğrenicinin adı, kursu ve basım tarihi gösterir. Basılı sertifikanın QR kodunu tarayan herkes, alan adınızda bu kaydı görür ve bu, güven hikayesinin tamamıdır: kağıt bunu iddia eder, veritabanınız doğrular.

QR kodu için, standart paketi ekleyin. Varsayılan renderlayıcı SVG çıkışı veriyor, bu da tam olarak istediğiniz şey:

composer require simplesoftwareio/simple-qrcode

Bunu Vektör PDF Olarak Render Edin

Bu Blade görünümünü PDF’ye dönüştürmenin üç yolu vardır. DomPDF, saf PHP’dir ama sınırlı CSS desteği vardır ve bir sertifika tam olarak bu tür bir tasarıma sahiptir. Browsershot doğru bir şekilde render eder çünkü gerçek Chrome’u çalıştırır, ancak şimdi sunucunuzda Chrome’u yüklemek ve idare etmek zorundasınız. Üçüncü yol, bir HTML to PDF API: renderlanmış HTML’yi format: "pdf" ile POST edersiniz ve tamamlanmış bir belgeye dair bir URL alırsınız, bu da işletmeye bağlı bir tarayıcı motoru tarafından render edilir.

Servis çok kısa:

namespace App\Services;

use App\Models\Certificate;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

class CertificateService
{
    public function issue(Certificate $certificate): string
    {
        $html = view(, [
            => $certificate,
        ])->render();

        $response = Http::withHeaders([
            => config(),
        ])->post(, [
            => $html,
            => ,
        ])->throw()->json();

        $path = {->uuid.pdf";
        Storage::put(, Http::get([])->body());

        return ;
    }
}

Anahtarın config/services.php dosyasına eklenmesi, onun kod tabanından çıkmasını sağlar:

=> [
    => env(),
],

Geri dönen dosya gerçek bir vektör PDF’dir. Metin seçilebilir ve arama yapılabilir, yazı tipleri gömülüdür ve her boyutta net bir şekilde yazdırılır. Bu da tam olarak bir sertifikanın ihtiyaç duyduğu şeydir ve PNG’nin sunamayacağı bir özellik.

Öğrenciye E-posta Gönderin

PDF’yi bir kez depolayın ve ardından bir mailable içinde depolamadan ekleyin:

namespace App\Mail;

use App\Models\Certificate;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;

class CertificateIssued extends Mailable
{
    public function __construct(public Certificate $certificate)
    {
    }

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: .$this->certificate->course,
        );
    }

    public function content(): Content
    {
        return new Content(markdown: );
    }

    public function attachments(): array
    {
        return [
            Attachment::fromStorage({$this->certificate->uuid}.pdf")
                ->as()
                ->withMime(),
        ];
    }
}

Kurs Tamamlanması ile Bağlayın

Bir geçmiş olayı dinleyici içine kurulum ve teslimat yaparak, kursun tamamlandığını işaret eden bir etkinlik için işleyin:

public function handle(CourseCompleted $event): void
{
    $certificate = Certificate::create([
        => () Str::uuid(),
        => ->user->id,
        => ->course->title,
        => now(),
    ]);

    app(CertificateService::class)->issue();

    Mail::to(->user)->send(new CertificateIssued());
}

Dinleyiciyi bir kuyruğa gönderin ve öğrenici, tamamladıktan birkaç saniye sonra doğrulanabilir bir belgeyi gelen kutusunda bulsun. Ekibinizden hiç kimse bir şey yapmadan.

Toplu İşlem ve Değişiklik Kanıtı

Hacim büyüdüğünde iki iyileştirme yapılabilir. Kitlesel verme, tarihi kohortlar veya dönem sonu çalışmaları için, her isteğe bir webhook_url geçirin ve bağlantıları açık tutmak yerine PDF’leri bitirildikçe toplayın. Ayrıca, doğrulamanın veritabanı sorgusunun ötesinde bir incelemeye dayanabilmesi gerekiyorsa, içerik hash’leri ve imzalı tanımlayıcılar belgenin kendisini değiştirilemez hale getirir; bu yaklaşım ölçekle imzalı dijital sertifikalar üretmek hakkındada ele alınmıştır.

Bu makalede Blade’de bir sertifika tasarladınız, bunu bir vektör PDF olarak render ettiniz, doğrulama bağlantılı bir QR kodu verdiniz ve kurs tamamlandığında e-posta ile teslim ettiniz. Tam sürüm, sabit genişlik ölçeklendirme notları ve Open Badges eşlemesi ile birlikte Accreditly‘de yer almaktadır.

Şu anda Laravel uygulamalarınızda sertifikaları nasıl veriyorsunuz? Yaklaşımınızı aşağıdaki yorumlarda paylaşın.

Kaynak: Orijinal Makale

Contents
  • Blade’de Tasarımı Koruyun
  • Her Sertifikaya Doğrulanabilir Bir Kimlik Verin
  • Bunu Vektör PDF Olarak Render Edin
  • Öğrenciye E-posta Gönderin
  • Kurs Tamamlanması ile Bağlayın
  • Toplu İşlem ve Değişiklik Kanıtı
OpenAI API’sini Laravel ile Entegre Etme (2026 Tam Kılavuzu)
Livewire 4 Tek Dosya Bileşenleri: Tek Dosyada Canlı Arama Oluşturma
Veritabanınız Zaten Cevaplara Sahip – Sadece Sormanız Gerekiyor
Laravel/Symfony Projeleri için Yapay Zeka Ajanları
Gelişmiş Laravel Eloquent: Polimorfik İlişkilerin Açıklaması
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Acil: Google’dan Yeni Gemini 3.5 ile Yazılım Açıklarına Son!
Sonraki Makale Nvidia’nın DLSS 5: Üç AI modu ile gerçek zamanlı detay değişimi

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Xal’atath’ın World of Warcraft’taki Kötü Planı Açığa Çıktı
Oyun
Yeni 14 inç MacBook Pro M5’de 400$ indirim – 48GB RAM, 1TB SSD
Donanım
Algoritmik Ticareti Güçlendirin: Laravel ve PHP 8.1+ için En İyi SDK – CoinQuant PHP
Yazılım
Anthropic-Fiziksel Zeka Söylentisi AI Twitter’ı Salladı
Genel
AMD Ryzen 7700X3D, 16GB RAM ve Asus B850 Anakart Sadece $491
Donanım
Warner Bros. Discovery Satışıyla İlgili Bilmeniz Gerekenler
Genel
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?