İçeriğe geç

Laravel API başvurusu

Çerçeveden bağımsız NextPDF çekirdeğini bir Laravel uygulamasına nextpdf/laravel paketi bağlar. Dört giriş noktasını doğrudan çağırırsınız: kısa yazma akışları için Pdf cephesi, enjekte edilebilir belge oluşturma için PdfDocumentInterface kapsayıcı bağlaması, tamamlanmış belgelerden HTTP yanıtları oluşturmak için PdfResponse yardımcısı ve istek dışı oluşturma için GeneratePdfJob kuyruk işi. NextPdfServiceProvider her bağlamayı kaydeder ve otomatik olarak keşfedilir; bu nedenle elle kurulum yapmanız gerekmez. config/nextpdf.php içindeki yapılandırma; varsayılanları, yazı tiplerini, kuyrukları ve isteğe bağlı imzalama ile zaman damgası yetkilisi (TSA) özelliklerini denetler.

Buradan başlayın: bir denetleyiciden doğrudan taşınabilir belge biçimi (PDF) dosyası göndermek için bir belge oluşturun ve PdfResponse::download($document, 'file.pdf') döndürün. Aşağıdaki ilk örnek bu akışı gösterir.

Aşağıdaki kod parçacıkları, genellikle ilk kullanacağınız üç akışı kapsar. Her kod parçacığı paket kaynaklarına göre doğrulanmıştır; ayrıntılı simge tabloları aşağıdadır.

Bir denetleyiciden indirilebilir PDF döndürün. Bu, en sık yapılan işlemdir:

<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use Illuminate\Http\Response;
use NextPDF\Contracts\PdfDocumentInterface;
use NextPDF\Laravel\Http\PdfResponse;
final class ReportController extends Controller
{
public function download(PdfDocumentInterface $document): Response
{
$document->addPage();
$document->cell(0, 10, 'Monthly report', newLine: true);
return PdfResponse::download($document, 'report.pdf');
}
}

Yaptığı iş: yeni bir belge alır, bir satır yazar ve attachment türünde, Content-Type: application/pdf ve Open Worldwide Application Security Project (OWASP) güvenlik başlıklarını içeren bir yanıt döndürür. Tarayıcıda önizleme yapmak için inline() işlevini download() yerine kullanın.

Yazıp kaydetmek için Pdf cephesini kullanın. Bu, betikler ve kısa akışlar için en kısa yoldur:

<?php
declare(strict_types=1);
use NextPDF\Laravel\Facades\Pdf;
Pdf::addPage();
Pdf::cell(0, 10, 'Hello from Laravel', newLine: true);
Pdf::save(storage_path('app/hello.pdf'));

Yaptığı iş: cephe, kapsayıcıdan yeni bir belge çözer, bir hücre yazar ve tamamlanmış PDF’yi diske kaydeder.

İstek iş parçacığının dışında GeneratePdfJob ile bir PDF oluşturun:

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
use NextPDF\Laravel\Jobs\GeneratePdfJob;
GeneratePdfJob::dispatch(
storage_path('app/reports/january-2026.pdf'),
static fn (PdfDocumentInterface $document): PdfDocumentInterface => $document
->addPage()
->cell(0, 10, 'January report', newLine: true),
);

Yaptığı iş: oluşturma işlemini bir çalışan üzerinde kuyruğa alır. Oluşturucu kapanışı (closure), kapsayıcı tarafından çözümlenen bir belge alır ve aynı belgeyi döndürür. İş, kaydetmeden önce .pdf çıktı yolunu doğrular. Kuyruk adı, zaman aşımı ve bağlantı config('nextpdf.queue.*') değerinden okunur.

Statik olarak Pdf cephesi, yeni bir çekirdek Document nesnesine vekillik eder. Statik stilin uygun olduğu kısa denetleyici akışlarında kullanın. Her satır, vekillik edilen bir belge yöntemini listeler.

SimgeParametrelerVarsayılan davranışDöndürürŞu durumda hata verir veya başarısız olurNotlar
NextPDF\Laravel\Facades\Pdfyok; statik cephe erişimcisi şunu çözer: NextPDF\Contracts\PdfDocumentInterfaceLaravel, belge arayüzü için geçerli kapsayıcı bağlamasını çözer.Alttaki çekirdek belgenin akıcı (fluent) API’si.Sağlayıcı kayıtlı değilse Laravel kapsayıcı bağlaması hatası.Kısa denetleyici akışları için kullanın. Servisler ve işler için kurucu enjeksiyonunu tercih edin.
Pdf::setTitle(string $title)title: belge başlığı.Mevcut başlığı değiştirir.staticÇekirdek doğrulama veya yazma sırasında oluşan hatalar.Çekirdek Document nesnesine vekillik eder.
Pdf::setAuthor(string $author)author: belge yazarı üst verisi.Önceki yazarı değiştirir.staticÇekirdek üst veri doğrulama hataları.Uygulama genelindeki üst veri için yapılandırılmış varsayılanları tercih edin.
Pdf::addPage(?PageSize $size = null, Orientation $orientation = Portrait)size: isteğe bağlı sayfa boyutu; orientation: varsayılan olarak Portrait.Yapılandırılmış veya varsayılan sayfa boyutunu, size belirtilmediğinde kullanır.staticÇekirdek sayfa doğrulama hataları.Çıktı boyutu önemliyse açık bir PageSize kullanın.
Pdf::setFont(string $family, string $style = '', float $size = 12.0)Yazı tipi ailesi, stili ve punto boyutu.Boş stil ve 12 pt boyut kullanır.staticYazı tipi kaydı veya kodlama hataları.Gecikme önemliyse üretim yazı tiplerini nextpdf.preload_fonts aracılığıyla önceden yükleyin.
Pdf::cell(float $width, float $height, string $text = '', bool $border = false, bool $newLine = false, Alignment $align = Left)Hücre kutusu, metin, kenarlık bayrağı, satır sonu bayrağı ve hizalama.Boş metin kullanır; kenarlık ve satır sonu eklemez, sola hizalar.staticYerleşim veya metin kodlama hataları.Basit, sabit yerleşimli çıktı için kullanın.
Pdf::multiCell(float $width, float $height, string $text, bool $border = false, Alignment $align = Left)Hücre genişliği, satır yüksekliği, metin, kenarlık bayrağı, hizalama.Kenarlık eklemez ve sola hizalar.staticYerleşim veya metin kodlama hataları.Metnin sabit bir genişlik içinde kaydırılması gerektiğinde kullanın.
Pdf::writeHtml(string $html)html: HTML parçası.Geçerli sayfada işler ve gerektiğinde sayfa oluşturur.staticÇekirdek HTML işleme hataları.Güvenilmeyen HTML’yi kabul etmeden önce giriş boyutu ve kaynak ilkelerini uygulayın.
Pdf::image(string $file, ?float $x = null, ?float $y = null, ?float $width = null, ?float $height = null)Dosya yolu ve isteğe bağlı yerleştirme dikdörtgeni.Koordinatlar belirtilmediğinde çekirdek belgenin geçerli konumu ve doğal boyutu seçmesine izin verir.staticGörüntü çözme, yol veya yerleşim hataları.Kullanıcının sağladığı yolları kabul etmeden önce görüntü kaynağı ilkesini doğrulayın.
Pdf::output(?string $filename = null, OutputDestination $dest = Inline)filename: isteğe bağlı ad; dest: çıktı hedefi.Hedef belirtilmediğinde satır içi çıktı üretir.stringÇekirdek serileştirme hataları.Laravel HTTP yanıtları için PdfResponse tercih edin.
Pdf::save(string $path)path: dosya sistemi hedefi.Tamamlanmış PDF’yi diske yazar.voidDosya sistemi veya çekirdek yazma hataları.Çıktı dizinlerini uygulama kodunda doğrulayın.
Pdf::getPdfData()yok.PDF baytlarını bellekte somutlaştırır.stringÇekirdek serileştirme hataları.Yanıt gövdesini başka bir çerçeve nesnesi yönetmeliyse kullanın.

Bir DocumentFactoryInterface nesnesini bir servise enjekte etmek veya provides() yönteminin hangi servisleri ertelediğini denetlemek gibi durumlarda, bir kapsayıcı girdisini doğrudan çözmeniz ya da geçersiz kılmanız gerektiğinde bu tabloyu kullanın.

SimgeParametrelerVarsayılan davranışDöndürürŞu durumda hata verir veya başarısız olurNotlar
NextPdfServiceProvider::register()yok.Şu dosyayı birleştirir: config/nextpdf.php; kayıtları, belge fabrikasını, belge bağlamasını, HTTP istemcisini, TSA istemcisini, imzalayıcıyı ve isteğe bağlı e-fatura sözleşmelerini kaydeder.voidÖzellik kullanıldığında kapsayıcı hataları veya isteğe bağlı sınıf çözümleme hataları.FontRegistryInterface ve ImageRegistry paylaşılır; belgeler her zaman yenidir.
NextPdfServiceProvider::boot()yok.Gerekli PHP uzantılarını doğrular ve konsol modunda nextpdf-config yayımlar.voidRuntimeException, gerekli bir uzantı kullanılamadığında oluşur.Gerekli uzantılar mbstring ve zlib uzantılarıdır.
NextPdfServiceProvider::provides()yok.Ertelenmiş servis kimliklerini bildirir.array<string>Beklenmez.Şunları içerir: PdfDocumentInterface, DocumentFactoryInterface, FontRegistryInterface, SignerInterface, TsaClient, ClientInterface ve nextpdf.
PdfDocumentInterface / nextpdfLaravel kapsayıcısından çözümlenir.Tek kullanımlık bir Document nesnesini DocumentFactoryInterface aracılığıyla oluşturur; ardından yapılandırılmış varsayılanları ve isteğe bağlı PDF/A veya Artisan ayarlarını uygular.NextPDF\Core\DocumentYapılandırılmış olup kullanılamayan isteğe bağlı uzantı hataları.Her istek veya iş için yeni bir belge çözün.
DocumentFactoryInterfaceLaravel kapsayıcısından çözümlenir.Yazı tipi ve görüntü kayıtlarını süreç ömrü boyunca paylaşan tekil (singleton) fabrika.DocumentFactoryInterfaceKayıt kurulum hataları.Açık bağımlılık enjeksiyonu için bunu kullanın.
SignerInterfaceLaravel kapsayıcısından çözümlenir.Varsayılan olarak null döndürür; bunun istisnası, nextpdf.signature.enabled ayarlandığında ve sertifika yolları yapılandırıldığındadır.`SignerInterfacenull`Sertifika yükleme veya imza düzeyi doğrulama hataları.

Bağlamaların okuduğu çalışma zamanına dönük nextpdf.* anahtarlarını aramak için bu tabloyu kullanın. Ortam değişkenleri ve varsayılanlar dâhil olmak üzere her anahtarın tam başvurusu /integrations/laravel/configuration/ adresindedir.

AnahtarTürVarsayılan davranışNotlar
nextpdf.fonts_pathstringBelirtilmediğinde Laravel kaynak yazı tiplerini kullanır.Özel yazı tipleri ve ön ısıtma dizini.
nextpdf.cache_pathstringUygulama önbellek yolu.PHP çalışanı tarafından yazılabilir tutun.
nextpdf.preload_fontslist<string>Boş liste.Kayıt oluşturma sırasında ön ısıtılır, ardından kayıt kilitlenir.
nextpdf.image_cache_mbintSınırlandırılmış görüntü önbelleği boyutu.Süreç ömrü boyunca görüntü önbellek belleğini sınırlar.
nextpdf.defaults.*arrayOluşturan değeri NextPDF, dil en, isteğe bağlı yazar ve yerleşim varsayılanları.Her yeni belgeye uygulanır.
nextpdf.artisan.*arrayChrome işleyici, kurulup yapılandırılmadığı sürece devre dışıdır.Şu yönteme eşlenir: ChromeRendererConfig::fromArray().
nextpdf.signature.*arrayİmzalama varsayılan olarak devre dışıdır.Sertifika, özel anahtar, parola, ek sertifikalar ve imza düzeyi.
nextpdf.tsa.*arrayTekdüzen kaynak konumlandırıcı (URL) boş olduğunda TSA devre dışıdır.Kimlik bilgilerini, karşılıklı aktarım katmanı güvenliği (mTLS) dosyalarını, zaman aşımını, ortak anahtar sabitlemelerini ve HTTP ilkesini destekler.
nextpdf.ocsp_cache.*arrayÇevrim içi sertifika durumu protokolü (OCSP) önbelleği yapılandırılmış TTL ile etkindir.Kullanılabilir olduğunda imza doğrulama akışları tarafından kullanılır.

Tamamlanmış bir belgeyi HTTP üzerinden döndürürken satır içi görüntüleme, ek (attachment) olarak indirme ya da akış çıktısı arasında seçim yapmanız gerektiğinde bu tabloyu kullanın.

SimgeParametrelerVarsayılan davranışDöndürürŞu durumda hata verir veya başarısız olurNotlar
PdfResponse::inline(Document $document, string $filename = 'document.pdf')document: oluşturulmuş belge; filename: Content-Disposition dosya adı.Boş dosya adlarını document.pdf olarak normalleştirir.Illuminate\Http\ResponseÇekirdek serileştirme veya yanıt oluşturma hataları.PDF içerik türünü ve savunmacı başlıkları ayarlar.
PdfResponse::download(Document $document, string $filename = 'document.pdf')Şununla aynıdır: inline; içerik düzeni (disposition) ek (attachment) olur.Bir tarayıcı indirme yanıtı döndürür.Illuminate\Http\ResponseŞununla aynıdır: inline.Açık dosya indirmeleri için kullanın.
PdfResponse::streamInline(Document $document, string $filename = 'document.pdf')Şununla aynıdır: inline.PDF baytlarını somutlaştırır; ardından 64 KB’lik parçalar gönderir.Symfony\Component\HttpFoundation\StreamedResponseŞununla aynıdır: inline.Bu, sıfır kopyalı işleme değil, akışla gönderilen HTTP çıktısıdır.
PdfResponse::streamDownload(Document $document, string $filename = 'document.pdf')Şununla aynıdır: streamInline; içerik düzeni (disposition) ek (attachment) olur.Akışla indirme yanıtı.StreamedResponseŞununla aynıdır: streamInline.İşlemeden önce giriş ve çıkış boyutu sınırlarını zorunlu kılın.

Oluşturma işlemini istek iş parçacığının dışına taşıdığınızda bu tabloyu kullanın. Tablo, GeneratePdfJob için oluşturmayı, gönderimi ve başarı ya da başarısızlık geri çağırmalarını kapsar.

SimgeParametrelerVarsayılan davranışDöndürürŞu durumda hata verir veya başarısız olurNotlar
new GeneratePdfJob(string $outputPath, callable $builder, ?callable $onSuccess = null, ?callable $onFailure = null)outputPath: hedef .pdf; builder: bir PdfDocumentInterface alır; geri çağırmalar isteğe bağlıdır.Kuyruk adı, zaman aşımı ve bağlantı config('nextpdf.queue.*') değerinden okunur.Bir iş örneği.Oluşturucu veya geri çağırmalar serileştirilemiyorsa serileştirme hataları.Oluşturucu, yapılandırılmış belgeyi döndürmelidir.
GeneratePdfJob::handle()yok.Önce PdfDocumentInterface çözer, oluşturucuyu çalıştırır, çıktı yolunu doğrular ve ardından kaydeder.voidInvalidArgumentException, güvenli olmayan çıktı yolları için; çekirdek yazma hataları.Akış sarmalayıcılarını, null baytları, .. bölümlerini ve .pdf dışındaki yolları reddeder.
GeneratePdfJob::failed(Throwable $exception)exception: başarısızlık nedeni.Varsa, yapılandırılmış başarısızlık geri çağırmasını çağırır.voidGeri çağırma başarısızlıkları.Geri çağırmaları etkisiz-tekrarlanabilir (idempotent) tutun.
GeneratePdfJob::then(callable $callback)callback: çıktı yolunu alır.Başarı geri çağırmasını değiştirir.selfSerileştirilebilir kapanış (closure) hataları.Gönderimi yapılandırmak için akıcı yardımcı.
GeneratePdfJob::catch(callable $callback)callback: fırlatılan Throwable nesnesini alır.Başarısızlık geri çağırmasını değiştirir.selfSerileştirilebilir kapanış (closure) hataları.Uyarı vermek veya telafi edici temizlik yapmak için kullanın.
  • PdfResponse bir yanıt oluşturmadan önce her zaman getPdfData() çağırır. Tembel (lazy) bir belge oluşturucusu değildir.
  • Kuyruk yükleri, paylaşılan aktarımlarda kurcalanabilir; çıktı yollarını uygulamaya ait bir dizinle sınırlı tutun.
  • Her istek veya iş için yeni bir belge kullanın. Bir belgeyi istekler arasında yeniden kullanmayın.