NextPDF Symfony entegrasyonu
Bir bakışta
“Bir bakışta” başlıklı bölümÖnce nextpdf/symfony paketini kurun; paketi Flex’in kaydetmesine izin verin ya da kendiniz kaydedin. Ardından config/packages/nextpdf.yaml dosyasını ekleyin ve PdfFactory bağımlılığını enjekte edin. Bu sayfayı bağlantılar için bir dizin olarak kullanın. Her adım sizi daha ayrıntılı bir kılavuza yönlendirir.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/symfonyPaket; nextpdf/core^3.0 || ^5.2, symfony/*^7.2 ve
psr/log^3.0 paketlerini gerektirir. Sınıflar, NextPDF\Symfony\ PHP Standartları Önerisi (PSR)-4 ad alanı öneki altında otomatik yüklenir; bu önek src/Symfony/ dizinine eşlenir. PSR-4 uyumlu bir otomatik yükleyici, bu ad alanı önekini temel dizine eşler (PSR-4 §2). Eksiksiz gereksinimler ve isteğe bağlı paketler için bkz. /integrations/symfony/install/.
Başlatma ve otomatik keşif
“Başlatma ve otomatik keşif” başlıklı bölümSymfony Flex kullanıldığında, paketin extra.symfony.bundles girdisi (paketin composer.json dosyasında bulunur), NextPDF\Symfony\NextPdfBundle paketini tüm ortamlar için kaydeder. Flex kullanmıyorsanız paketi config/bundles.php dosyasına kendiniz ekleyin:
return [ NextPDF\Symfony\NextPdfBundle::class => ['all' => true],];Tam başlatma sırası ve derleyici geçişi davranışı için bkz. /integrations/symfony/boot-and-discovery/.
Kapsayıcı bağlamaları
“Kapsayıcı bağlamaları” başlıklı bölümPaketin config/services.php dosyası şu hizmetleri kaydeder:
| Hizmet / takma ad | Yaşam döngüsü |
|---|---|
NextPDF\Symfony\Service\PdfFactory | paylaşımlı, genel; bunu enjekte edin |
nextpdf.document → PdfDocumentInterface → Document | paylaşımsız, genel; her çözümlemede yeni |
NextPDF\Contracts\FontRegistryInterface | paylaşımlı, ısınmadan sonra kilitli |
NextPDF\Graphics\ImageRegistry | paylaşımlı, kernel.reset |
NextPDF\Contracts\DocumentFactoryInterface | paylaşımlı |
NextPDF\Symfony\Http\PdfResponse | genel, durumsuz yardımcı |
Belge bağlaması bilinçli olarak paylaşımsız bırakılmıştır. PSR-11, bir kapsayıcının tek bir tanımlayıcı için ardışık get() çağrılarında farklı değerler döndürmesine izin verir. Yeni bir belge oluşturulması, uzun süre çalışan işçilerde istekler arasında durum taşınmasını önler (PSR-11 §1.1.2). Koşullu EInvoice bağlamaları da dahil olmak üzere eksiksiz hizmet ve takma ad tablosu için bkz. /integrations/symfony/configuration/.
Yapılandırmayı yayımlama
“Yapılandırmayı yayımlama” başlıklı bölümYapılandırma takma adı nextpdf’dir. config/packages/nextpdf.yaml dosyasını oluşturun. Flex bir tarif yayımladığında sizin için varsayılan bir kopya ekler. Her anahtarın varsayılan değeri olduğundan en küçük dosya şöyle görünür:
nextpdf: ~Tam yapılandırma ağacı şurada belgelenmiştir: /integrations/symfony/configuration/.
İlk kullanım
“İlk kullanım” başlıklı bölümÖnce PdfFactory bağımlılığını enjekte edin; ardından belgeyi PdfResponse ile döndürün:
<?php
declare(strict_types=1);
namespace App\Controller;
use NextPDF\Symfony\Http\PdfResponse;use NextPDF\Symfony\Service\PdfFactory;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Attribute\Route;
final class PdfController{ #[Route('/hello.pdf', name: 'hello_pdf')] public function hello(PdfFactory $pdf): Response { $doc = $pdf->create(); $doc->addPage(); $doc->cell(0, 10, 'Hello from NextPDF on Symfony.');
return PdfResponse::inline($doc, 'hello.pdf'); }}Uçtan uca denetleyici ve Messenger üzerinden eşzamansız yol için bkz. /integrations/symfony/quickstart/.
Paket smoke testi
“Paket smoke testi” başlıklı bölümUygulama kodu yazmadan entegrasyonu doğrulayın:
php bin/console debug:container nextpdfphp bin/console debug:config nextpdfphp bin/console lint:containerdebug:container nextpdf komutu PdfFactory hizmetini, nextpdf.document takma adını ve kayıt defterlerini listelemelidir. lint:container komutu, her hizmet argümanının çözümlenebildiğini denetler. PDF oluşturmayı test etmek için yukarıdaki denetleyiciyi ekleyin, ardından /hello.pdf isteğinde bulunun.
Genel API giriş noktaları
“Genel API giriş noktaları” başlıklı bölümAPI yüzeyi, uygulama kodu için şu genel sembolleri destekler:
| Sembol | Amaç |
|---|---|
NextPDF\Symfony\Service\PdfFactory::create() | yeni ve önceden yapılandırılmış Document |
NextPDF\Symfony\Http\PdfResponse::inline() / download() | güvenlik başlıkları içeren arabelleğe alınmış yanıt |
NextPDF\Symfony\Http\PdfResponse::streamInline() / streamDownload() | parçalı akışlı yanıt |
NextPDF\Symfony\Message\GeneratePdfMessage | eşzamansız oluşturma için doğrulanmış veri aktarım nesnesi (DTO) |
NextPDF\Symfony\Message\PdfBuilderInterface | işleyici tarafından çözümlenen oluşturucu sözleşmesi |
Uygunluk
“Uygunluk” başlıklı bölümHer satır, bu sayfada yer alan normatif bir iddiayı listeler. Her iddia, erişimi denetimli standartlar geliştirme kuruluşu (SDO) külliyatındaki tam 64 haneli onaltılık bir reference_id değerine sabitlenir. Köken bilgisi (külliyat bildirimi ve alım aktarımı) şu konumdadır: _sidecars/rag-citations.yaml.
| Belirtim | Madde | reference_id | İddia |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p4 | Kapsayıcı has()/get() tanımlayıcı sözleşmesi | |
| PSR-4 | psr_4_autoload#x1.x2.p5 | Otomatik yükleyici ad alanı eşlemesi |
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölüm- /integrations/symfony/install/ — gereksinimler ve kayıt işlemi.
- /integrations/symfony/boot-and-discovery/ — keşif, başlatma ve derleyici geçişi.
- /integrations/symfony/configuration/ — tam şema ve hizmet tablosu.
- /integrations/symfony/quickstart/ — çalıştırılabilir denetleyici ve eşzamansız örnek.
- /integrations/symfony/production-usage/ — işçi güvenliği ve akış.