NextPDF compat-legacy entegrasyonu
Bir bakışta
“Bir bakışta” başlıklı bölümMevcut TCPDF 6.x kodunuzu NextPDF motorunda çalıştırmak için nextpdf/compat-legacy paketini uygulamanıza bağlayın. Bu paket bir geçiş yardımcısıdır, kalıcı bir ara katman değildir — modern API’yi benimsedikten sonra paketi kaldırın (bkz. /integrations/tcpdf-compat/migration/). Bu paket TCPDF uyumlu bir alternatiftir; doğrudan yerine geçen bir kopya değildir: incelenen ~120 TCPDF yönteminden 94’ü doğrudan devreder. Geri kalan yöntemlerde belgelenmiş davranışsal farklılıklar vardır (bkz. /integrations/tcpdf-compat/method-coverage/).
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/compat-legacy:^3.0Bu komut, nextpdf/core ^3.0 bağımlılığını geçişli olarak çözer. Tüm gereksinimler ve doğrulama kontrolü için bkz. /integrations/tcpdf-compat/install/.
Başlatma ve otomatik keşif
“Başlatma ve otomatik keşif” başlıklı bölümPaket, otomatik yükleme sırasında küresel tanımları bağlamaz. Paketi dahil etmek küresel bir \TCPDF oluşturmaz. Çağrı noktalarının sınıfı nasıl çözeceğini siz belirlersiniz:
- Tercih edilen (açık içe aktarmalar). Her dosyadaki
use/requiresatırlarınıuse NextPDF\Compat\Tcpdf\TCPDF;olarak güncelleyin. Bu yaklaşım belirsizliği önler ve aramayı kolaylaştırır. - İsteğe bağlı küresel takma adlar. Başlatma sırasında
LegacyBootstrap::enableAliases()yöntemini bir kez çağırarak\TCPDFsınıfını ve dört yardımcı sınıfı kaydedin — yalnızca bu adlar daha önce kullanılmıyorsa. Mekanizma, idempotentlik ve gerçek TCPDF ile çakışma kuralı için bkz. /integrations/tcpdf-compat/boot-and-discovery/.
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\LegacyBootstrap;
// One call at application bootstrap, before any \TCPDF use.LegacyBootstrap::enableAliases();Konteyner bağlamaları
“Konteyner bağlamaları” başlıklı bölümPaket, çerçeveye özgü bir hizmet sağlayıcısı veya paket içermez. İnce entegrasyon katmanı sizin sorumluluğunuzdadır. Her belge için yeni bir bağdaştırıcı döndüren bir fabrika bağlayın — asla paylaşılan bir tekil nesne değil, çünkü her örnek kendi belge durumuna sahiptir (bkz. /integrations/tcpdf-compat/production-usage/ § Eşzamanlılık).
<?php
declare(strict_types=1);
use NextPDF\Compat\Tcpdf\TCPDF;use Psr\Container\ContainerInterface;
// Pseudocode for a PSR-11-style container: bind a factory, not a shared instance.$container->set(TCPDF::class, static function (ContainerInterface $c): TCPDF { return new TCPDF('P', 'mm', 'A4');});
// Each resolution is an independent document context.$pdf = $container->get(TCPDF::class);Symfony’de fabrikayı paylaşılmayan bir hizmet olarak kaydedin. Laravel’de, her çözümlemede yeni bir örnek alınması için bind kullanın (singleton değil). Paketin kendisi çerçeveden bağımsız kalır.
Yapılandırmayı yayımlama
“Yapılandırmayı yayımlama” başlıklı bölümYayımlanabilir bir çerçeve yapılandırma dosyası yoktur. Bağdaştırıcıyı, eski K_* / PDF_* sabitleri aracılığıyla (ilk bağdaştırıcıyı oluşturmadan önce başlatma kodunuzda tanımlayın) ya da modern, değişmez NextPDF\Compat\Tcpdf\Config\AdaptationConfig nesnesi aracılığıyla yapılandırın. Bkz. /integrations/tcpdf-compat/configuration/.
Hizmet sağlayıcı / paket duman testi
“Hizmet sağlayıcı / paket duman testi” başlıklı bölümBağlamanın ardından, entegrasyonun geçerli bir PDF dosyası ürettiğini doğrulayın. Bu, tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php tarafından doğrulanan yüzeyi yansıtır:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4');$pdf->AddPage();$pdf->SetFont('helvetica', '', 12);$pdf->Cell(0, 10, 'Integration smoke test');
$bytes = $pdf->Output('smoke.pdf', 'S');
assert(str_starts_with($bytes, '%PDF'), 'Integration smoke test failed');echo "Integration OK\n";HTTP veya işçi bağlamında Output(..., 'F') veya 'S' kullanın. Satır içi yola güvenmeyin. Tüm operasyonel yönergeler için bkz. /integrations/tcpdf-compat/production-usage/.
Genel API giriş noktaları
“Genel API giriş noktaları” başlıklı bölüm| Giriş noktası | Amaç |
|---|---|
NextPDF\Compat\Tcpdf\TCPDF | TCPDF uyumlu cephe. Her belge için bir tane oluşturun. |
TCPDF::getDocument() | Sarmalanmış NextPDF\Core\Document nesnesini döndürür — modern API’ye geçiş kapısıdır. |
TCPDF::setStrictMode(bool) | Geçiş denetimi anahtarı (bkz. /integrations/tcpdf-compat/configuration/). |
NextPDF\Compat\Tcpdf\LegacyBootstrap::enableAliases() | İsteğe bağlı küresel sınıf takma adları. |
NextPDF\Compat\Tcpdf\Config\AdaptationConfig | Modern, değişmez yapılandırma nesnesidir. |
NextPDF\Compat\Contracts\CompatAdapterInterface | Paylaşılan uyumluluk sözleşmesi. |
TCPDF API kapsamı
“TCPDF API kapsamı” başlıklı bölümYetkili, testlerle doğrulanmış kapsam matrisi depodaki docs/TCPDF_COVERAGE.md dosyasında bulunur. Okuyucuya yönelik özet — yansıtılan, sessizce yok sayılan, uygulanmamış ve uygulanamaz yöntemler — şurada bulunur: /integrations/tcpdf-compat/method-coverage/. Bunu “doğrudan yerine geçen” veya “uyumlu (byte-identical değil)” bir uygulama olarak adlandırmayın. Bunun yerine, bilinen ve test edilmiş bir yüzeye ve belgelenmiş davranışsal farklılıklara sahip TCPDF uyumlu bir alternatif olarak tanımlayın.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölümdocs/TCPDF_COVERAGE.md— depodaki yetkili kapsam kaynağı- /integrations/tcpdf-compat/boot-and-discovery/ — cephenin açığa çıkarılması ve takma ad davranışı
- /integrations/tcpdf-compat/method-coverage/ — yöntem başına davranış ve boşluklar
- /integrations/tcpdf-compat/migration/ — aşamalı geçiş stratejisi
- /integrations/tcpdf-compat/production-usage/ — bağdaştırıcının yük altında nasıl çalıştırılacağı
tests/Unit/Compat/Tcpdf/TcpdfOutputTest.php— çıktı davranışı için oracle