İçeriğe geç

NextPDF Symfony tümleştirmesine genel bakış

nextpdf/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.

NextPDF 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, Symfony Bundle temel 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 ve nextpdf yapılandırma takma adını sunar.
  • Türü belirlenmiş bir yapılandırma ağacıNextPDF\Symfony\DependencyInjection\Configuration, nextpdf yapı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 yoluNextPDF\Symfony\Message\GeneratePdfMessage, NextPDF\Symfony\Message\GeneratePdfHandler ve NextPDF\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.

Paket, 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.

Yazı 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üm

Paketin 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:

YetenekGerektirirAlgılama
PDF oluşturma, PdfFactory, PdfResponseyalnızca coreher zaman kullanılabilir
Eşzamansız oluşturmasymfony/messengerişleyici, Messenger kurulduğunda etkinleşir
Chrome DevTools Protocol (CDP) HTML işlemenextpdf/artisanderleme zamanında class_exists yoklaması
PDF/A arşivleme, dijital imzalarnextpdf/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.

PDF’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.

Her 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.

BelirtimMaddereference_idİddia
PSR-11psr_11_container#1.1.2.p3.bKapsayıcı get() dönüş değeri sözleşmesi
PSR-3psr_3_logger#x3.p17LoggerInterface isteğe bağlı bağımlılığı

Dijital 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>.

  • /integrations/symfony/install/ — paketi kurun ve kaydedin.
  • /integrations/symfony/configuration/ — eksiksiz nextpdf yapı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.