NextPDF Symfony tümleştirmesine genel bakış
Bir bakışta
“Bir bakışta” başlıklı bölümnextpdf/symfony, NextPDF motoru için resmi Symfony 7 paketidir. Motoru Symfony kapsayıcısına bağlar ve kendi servislerinize enjekte edebileceğiniz bir belge fabrikası sunar. Ayrıca Hypertext Transfer Protocol (HTTP) yanıt yardımcılarını ve Portable Document Format (PDF) dosyalarını eşzamansız oluşturmak için bir yol sağlar; böylece işler arka planda yürütülebilir.
Paketin sunduğu özellikler
“Paketin sunduğu özellikler” başlıklı bölümNextPDF Symfony, nextpdf/core motorunu standart bir paket olarak bir Symfony uygulamasına bağlar. Aşağıdaki yapı taşlarını ekler; her biri src/Symfony/ içindeki paket kaynağıyla doğrulanmıştır:
- Bir paket giriş noktası —
NextPDF\Symfony\NextPdfBundle, SymfonyBundletemel sınıfını genişletir ve bir derleyici geçişi kaydeder. - Bir bağımlılık enjeksiyonu uzantısı —
NextPDF\Symfony\DependencyInjection\NextPdfExtension, servis tanımlarını yükler, yapılandırma ağacını kapsayıcı parametrelerine dönüştürür venextpdfyapılandırma takma adını sunar. - Türü belirlenmiş bir yapılandırma ağacı —
NextPDF\Symfony\DependencyInjection\Configuration,nextpdfyapılandırma şemasını tanımlar. Enum değerlerini doğrular, varsayılanları belirler ve%kernel.*%parametre yer tutucularını kullanır. - Enjekte edilebilir bir belge fabrikası —
NextPDF\Symfony\Service\PdfFactory, yeni ve önceden yapılandırılmışNextPDF\Core\Documentörnekleri üretir. Statik bir cephenin Symfony karşılığıdır. - HTTP yanıt yardımcıları —
NextPDF\Symfony\Http\PdfResponse, Open Worldwide Application Security Project (OWASP) ile uyumlu sabit bir güvenlik başlıkları kümesiyle satır içi, indirme ve akış biçimindeki yanıtları oluşturur. - Eşzamansız bir oluşturma yolu —
NextPDF\Symfony\Message\GeneratePdfMessage,NextPDF\Symfony\Message\GeneratePdfHandlerveNextPDF\Symfony\Message\PdfBuilderInterface, Symfony Messenger ile tümleşir; böylece PDF işleme işlemi bir çalışan üzerinde yürütülebilir. - Derleme zamanında çalışan bir uzantı algılayıcısı —
NextPDF\Symfony\DependencyInjection\Compiler\OptionalExtensionPass, isteğe bağlı NextPDF uzantılarını algılar ve servislerini yalnızca bu uzantılar mevcut olduğunda kaydeder.
Kapsayıcı sözleşmesi
“Kapsayıcı sözleşmesi” başlıklı bölümPaket, genel kapsayıcı servislerinden oluşan küçük ve kararlı bir küme kaydeder. nextpdf.document belge servisi (NextPDF\Contracts\PdfDocumentInterface ve NextPDF\Core\Document takma adlarıyla) paylaşılmaz: her çözümleme ayrı ve atılabilir bir belge döndürür. Bu, PHP Standard Recommendation 11 (PSR-11) kapsayıcı sözleşmesiyle uyumludur: aynı tanımlayıcıyla yapılan ardışık iki get() çağrısı, kapsayıcının yapılandırmasına bağlı olarak farklı değerler döndürebilir — bkz. PSR-11 §1.1.2. Paylaşılmayan bağlama bilinçli bir tercihtir. Bir belge, her işleme için durum biriktirir; bu nedenle her istek için yeni bir örnek, uzun süreli çalışanlarda durumun istekler arasında sızmasını önler.
Yazı tipi kayıt defteri (NextPDF\Contracts\FontRegistryInterface) bunun tersine çalışır: paylaşılan bir singleton’dır. Görüntü kayıt defteri kernel.reset etiketini taşır; bu nedenle sınırlı önbelleği, FrankenPHP ve Messenger çalışanlarında istekler arasında temizlenir. Yapılandırma sayfası, eksiksiz servis ve takma ad tablosunu belgeler.
İsteğe bağlı günlük kaydı
“İsteğe bağlı günlük kaydı” başlıklı bölümYazı tipi ve görüntü kayıt defterleri, isteğe bağlı bir PHP Standard Recommendation 3 (PSR-3) günlükleyicisini kabul eder. Paket, Psr\Log\LoggerInterface arayüzünü yalnızca uygulama bunu sağladığında bağlar (nullOnInvalid()). Bu nedenle günlük kaydı zorunlu bir bağımlılık değil, isteğe bağlı birlikte çalışan bir bileşendir. Bu, günlükleyicinin enjekte edilebilir ve değiştirilebilir birlikte çalışan bir bileşen olduğu PSR-3 günlükleyici sözleşmesiyle tutarlıdır (PSR-3).
Core ve isteğe bağlı yeteneklerin karşılaştırması
“Core ve isteğe bağlı yeteneklerin karşılaştırması” başlıklı bölümPaketin kendisi Apache-2.0 kapsamındaki core yazılımdır. Birkaç yetenek yalnızca paketin yanına isteğe bağlı bir paket kurduğunuzda ortaya çıkar:
| Yetenek | Gerektirir | Algılama |
|---|---|---|
PDF oluşturma, PdfFactory, PdfResponse | yalnızca core | her zaman kullanılabilir |
| Eşzamansız oluşturma | symfony/messenger | işleyici, Messenger kurulduğunda etkinleşir |
| Chrome DevTools Protocol (CDP) HTML işleme | nextpdf/artisan | derleme zamanında class_exists yoklaması |
| PDF/A arşivleme, dijital imzalar | nextpdf/premium (Pro’yu kurar) | derleme zamanında class_exists yoklaması |
Paket, nextpdf/premium kuruluyken temel bir PDF Advanced Electronic Signatures (PAdES) B-B imza yapılandırmasını uygulayabilir. Daha üst düzey imza profilleri, bu paketin dokümantasyon kapsamı dışındadır. Sürüm matrisi için NextPDF Premium belgelerine bakın.
Bu paket ne zaman kullanılır
“Bu paket ne zaman kullanılır” başlıklı bölümPDF’leri bir Symfony 7 HTTP uygulaması ya da çalışanı içinde oluşturuyorsanız nextpdf/symfony paketini kullanın. Paket; kapsayıcı tarafından yönetilen servisleri, çalışanlar için güvenli kayıt defterlerini ve güvenli indirme yanıtlarını sunar; böylece motoru elle bağlamak zorunda kalmazsınız. Bir betikte yalnızca tek seferlik oluşturmaya ihtiyacınız varsa, tek başına core nextpdf/core paketi yeterlidir.
Uygunluk
“Uygunluk” başlıklı bölümHer satır, bu sayfada yapılan normatif bir iddiadır ve erişimi kısıtlı standartlar geliştirme kuruluşu (SDO) külliyatından gelen tam bir 64 haneli onaltılık reference_id değerine sabitlenmiştir. Kaynak bilgileri (külliyat bildirimi, getirme aktarımı) _sidecars/rag-citations.yaml dosyasında bulunur.
| Belirtim | Madde | reference_id | İddia |
|---|---|---|---|
| PSR-11 | psr_11_container#1.1.2.p3.b | Kapsayıcı get() dönüş değeri sözleşmesi | |
| PSR-3 | psr_3_logger#x3.p17 | LoggerInterface isteğe bağlı bağımlılığı |
Ticari bağlam
“Ticari bağlam” başlıklı bölümDijital imzalar ve PDF/A arşivleme, paketin yanına nextpdf/premium (Pro) kurulduğunda kullanılabilir hale gelir. Bu isteğe bağlı Pro yeteneği, burada belgelenen core paketinde herhangi bir kod değişikliği gerektirmez. Bkz. </get-license/?intent=symfony-pro>.
Ayrıca bakın
“Ayrıca bakın” başlıklı bölüm- /integrations/symfony/install/ — paketi kurun ve kaydedin.
- /integrations/symfony/configuration/ — eksiksiz
nextpdfyapılandırma ağacı ve servis tablosu. - /integrations/symfony/quickstart/ — çalıştırılabilir bir denetleyici ve eşzamansız örnek.
- /integrations/symfony/boot-and-discovery/ — Symfony’nin paketi nasıl keşfettiği ve başlattığı.
- /integrations/symfony/production-usage/ — çalışan güvenliği, akış ve eşzamansız desenler.