İçeriğe geç

NextPDF Symfony entegrasyonu

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

Terminal window
composer require nextpdf/symfony

Paket; 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/.

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

Paketin config/services.php dosyası şu hizmetleri kaydeder:

Hizmet / takma adYaşam döngüsü
NextPDF\Symfony\Service\PdfFactorypaylaşımlı, genel; bunu enjekte edin
nextpdf.documentPdfDocumentInterfaceDocumentpaylaşımsız, genel; her çözümlemede yeni
NextPDF\Contracts\FontRegistryInterfacepaylaşımlı, ısınmadan sonra kilitli
NextPDF\Graphics\ImageRegistrypaylaşımlı, kernel.reset
NextPDF\Contracts\DocumentFactoryInterfacepaylaşımlı
NextPDF\Symfony\Http\PdfResponsegenel, 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ı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/.

Önce PdfFactory bağımlılığını enjekte edin; ardından belgeyi PdfResponse ile döndürün:

src/Controller/PdfController.php
<?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/.

Uygulama kodu yazmadan entegrasyonu doğrulayın:

Terminal window
php bin/console debug:container nextpdf
php bin/console debug:config nextpdf
php bin/console lint:container

debug: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.

API yüzeyi, uygulama kodu için şu genel sembolleri destekler:

SembolAmaç
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\GeneratePdfMessageeşzamansız oluşturma için doğrulanmış veri aktarım nesnesi (DTO)
NextPDF\Symfony\Message\PdfBuilderInterfaceişleyici tarafından çözümlenen oluşturucu sözleşmesi

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

BelirtimMaddereference_idİddia
PSR-11psr_11_container#1.1.2.p4Kapsayıcı has()/get() tanımlayıcı sözleşmesi
PSR-4psr_4_autoload#x1.x2.p5Otomatik yükleyici ad alanı eşlemesi
  • /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ış.