İçeriğe geç

NextPDF compat-legacy entegrasyonu

Mevcut 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/).

Terminal window
composer require nextpdf/compat-legacy:^3.0

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

Paket, 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/require satı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 \TCPDF sı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/.
examples/integration-boot.php
<?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();

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

examples/integration-container.php
<?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.

Yayı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/.

Bağ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:

examples/integration-smoke.php
<?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/.

Giriş noktasıAmaç
NextPDF\Compat\Tcpdf\TCPDFTCPDF 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\AdaptationConfigModern, değişmez yapılandırma nesnesidir.
NextPDF\Compat\Contracts\CompatAdapterInterfacePaylaşılan uyumluluk sözleşmesi.

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

  • docs/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