TCPDF uyumluluk API'si başvurusu
Genel bakış
“Genel bakış” başlıklı bölümBu nextpdf/compat-legacy paketi tek bir ana sınıf sunar: NextPDF\Compat\Tcpdf\TCPDF. Bu sınıf, TCPDF 6.x genel uygulama programlama arayüzünü (API) yansıtır, ancak çağrıları modern NextPDF motoruyla işler. Paket ayrıca sınırlı bir destek yüzeyi içerir: genel sınıf takma adları için LegacyBootstrap, AdaptationConfig/LegacyDefaults yapılandırma yüzeyi, çıktı, kurulum, renk, birim ve sayfa biçimleri için dahili köprü sınıfları ve uyumluluk istisnaları. Bunu kalıcı bir bağımlılık olarak değil, geçiş yardımcısı olarak kullanın. Eski yöntemlerin tam durumu için yetkili kaynak yöntem kapsamı tablosudur. Bu sayfa yalnızca uygulama kodunun bilinçli olarak bağımlı kalması gereken yüzeyleri belgeler.
Buradan başlayın: Bu pakete yeniyseniz, NextPDF\Compat\Tcpdf\TCPDF sınıfının bir örneğini oluşturun, her zamanki TCPDF çağrılarınızı yapın (AddPage(), SetFont(), Cell()) ve Output($name, $dest) ile bitirin. Bu sınıf, aşağıda belgelenen yüzeylerin neredeyse tamamı için giriş noktasıdır. Çalıştırılabilir başlangıç noktaları için bkz. Yaygın görevler.
Yaygın görevler
“Yaygın görevler” başlıklı bölümBunlar, paketle en sık yapacağınız işlemlerdir. Her blok, adaptör kaynak koduna göre doğrulanmıştır ve olduğu gibi çalışır.
Tanıdık TCPDF çağrılarıyla bir PDF dosyası üretin, ardından çıktıyı bir kuyruk, bir HTTP yanıtı veya depolama için dize olarak yakalayın:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF('P', 'mm', 'A4');$pdf->SetTitle('Invoice 1234');$pdf->SetFont('helvetica', '', 12);$pdf->AddPage();$pdf->Cell(0, 10, 'Hello from the NextPDF engine', 1, 1, 'C');
$bytes = $pdf->Output('invoice.pdf', 'S');Ne yapar: TCPDF tarzı adaptör aracılığıyla bir PDF 2.0 belgesi oluşturur. Ham baytları (%PDF...) döndürür, çünkü 'S' hedefi çıktıyı yazdırmak yerine OutputBridge üzerinden Document::getPdfData() çağrısına yönlendirir; bu nedenle bir işçi süreci veya denetleyici içinde güvenlidir.
Mevcut new \TCPDF(...) kodunu kaynak kodunu değiştirmeden çalıştırmak için, genel takma adları başlangıçta bir kez kaydedin:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\LegacyBootstrap;
LegacyBootstrap::enableAliases();
$pdf = new \TCPDF('P', 'mm', 'A4'); // resolves to the adapter$pdf->AddPage();$pdf->Cell(0, 10, 'Legacy call site, modern engine');$pdf->Output(__DIR__ . '/legacy.pdf', 'F');Ne yapar: enableAliases(), yalnızca bu adlar henüz tanımlı değilse \TCPDF sınıfını (ve \TCPDF_STATIC/\TCPDF_FONTS/\TCPDF_COLORS/\TCPDF_IMAGES yardımcılarını) bir kez kaydeder. Böylece değiştirilmemiş eski kod adaptör üzerinde çalışır.
Adaptörün normalde sessizce yok sayacağı her TCPDF parametresini görünür kılarak geçişi denetleyin:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Compat\Tcpdf\Exception\TcpdfNotImplementedException;use NextPDF\Compat\Tcpdf\TCPDF;
$pdf = new TCPDF();$pdf->setStrictMode(true);$pdf->AddPage();$pdf->SetFont('helvetica', '', 12);
try { $pdf->Image('photo.jpg', 10, 10, 50, 0, '', '', '', true, 300);} catch (TcpdfNotImplementedException $e) { fwrite(STDERR, $e->getMessage() . "\n"); // names every ignored parameter}Ne yapar: setStrictMode(true) etkinken, TCPDF davranışı yeniden üretilemiyorsa çağrı TcpdfNotImplementedException fırlatır ve yok sayılan her parametreyi adlandırır. Bu, sessiz bozulmayı bir geçiş iş listesine dönüştürür. Bunu yalnızca denetim geçişi sırasında çalıştırın, asla üretimde çalıştırmayın.
Ana adaptör
“Ana adaptör” başlıklı bölümBu tablo, kanonik adaptör yüzeyidir. Örneğini oluşturduğunuz sınıfı (TCPDF), katı kip ve kaçış yöntemlerini ve uyguladığı sözleşmeyi bulmak için bunu kullanın.
| Sembol | Parametreler | Varsayılan davranış | Döndürür | Fırlatılan hata veya başarısızlık nedeni | Notlar |
|---|---|---|---|---|---|
NextPDF\Compat\Tcpdf\TCPDF | Yapıcı parametreleri, ConstructorBridge aracılığıyla eski TCPDF biçimini izler. | Arkasında bir NextPDF belgesi bulunan adaptör oluşturur. | TCPDF | Yapıcı doğrulaması veya desteklenmeyen özellik istisnaları. | Geçiş sırasında kullanın, yeni yerel NextPDF kodu için değil. |
TCPDF::getDocument() | Yok. | Temeldeki NextPDF belgesini döndürür. | NextPDF\Core\Document | Beklenmez. | Eski ve yerel çağrıları karıştırması gereken geçiş kodu için kaçış yolu olarak kullanın. |
TCPDF::getUnitConverter() | Yok. | Eski birimden oluşturulan dönüştürücüyü döndürür. | UnitConverter | Beklenmez. | Normal uygulama kodu için değil, geçiş tanılaması için kullanın. |
TCPDF::setStrictMode(bool $enabled) | Katı kip bayrağı. | Desteklenmeyen uyumluluk davranışında açıkça başarısız olmayı etkinleştirir veya devre dışı bırakır. | static | Beklenmez. | Geçiş denetimleri sırasında etkin tutun. |
TCPDF::isStrictMode() | Yok. | Geçerli katı kip bayrağını döndürür. | bool | Beklenmez. | Test doğrulamalarında yararlıdır. |
TCPDF eski yöntemleri | Yönteme göre değişir. | Desteklenen yöntemler çekirdek belge çağrılarına eşlenir; desteklenmeyen yöntemler açıkça başarısız olur. | Yönteme göre değişir. | TcpdfNotImplementedException veya UnsupportedFeatureException. | Bir yönteme güvenmeden önce yöntem kapsamını denetleyin. |
CompatAdapterInterface::getDocument() | Yok. | Bu sözleşme yöntemi TCPDF tarafından uygulanır. | Document | Beklenmez. | Araçların yerel belgeye erişmesine olanak tanır. |
CompatAdapterInterface::Output(string $name = '', string $dest = '') | Dosya adı ve eski hedef. | Çıktı köprüsüne devreder. | string | Çekirdek yazma veya desteklenmeyen hedef hataları. | Eski TCPDF çıktısını yansıtır; somut TCPDF::Output, 'doc.pdf'/'I' varsayılanlarını sağlar. |
Eski yöntem grupları
“Eski yöntem grupları” başlıklı bölümBu tablo, adaptörün kapsadığı TCPDF yöntem ailelerini eşler. Eski bir çağrının tam durumunu yöntem kapsamında denetlemeden önce, onu bulmak için bu tabloyu tarayın.
| Grup | Temsili semboller | Varsayılan davranış | Notlar |
|---|---|---|---|
| Yaşam döngüsü ve çıktı | Open(), Close(), Output(), getPDFData() | Yerel belge üzerinde TCPDF biçimli belge yaşam döngüsünü sürdürür. | Geçişten sonra yerel çıktı API’lerini tercih edin. |
| Üst veri | SetTitle(), SetAuthor(), SetSubject(), SetKeywords(), SetCreator() | Üst veri ayarlayıcılarını temeldeki belgeye eşler. | Üst veri normalleştirmesini uygulama kodunda tutun. |
| Sayfalar ve konumlandırma | AddPage(), setPage(), lastPage(), GetX(), SetXY() | Eski birimleri ve koordinatları yerel sayfa işlemlerine dönüştürür. | Geçişten sonra mutlak konumlandırmayı görsel olarak doğrulayın. |
| Kenar boşlukları ve yerleşim | SetMargins(), SetAutoPageBreak(), setCellPaddings(), getMargins() | Uyumluluk durumunu saklar ve desteklenen değerleri eşler. | Karmaşık TCPDF sayfa sonu davranışı, elle inceleme gerektirebilir. |
| Yazı tipleri ve metin | SetFont(), AddFont(), Cell(), MultiCell(), Write(), Text() | Yaygın metin işlemlerini yerel yazı tipi ve metin API’lerine yönlendirir. | CJK ve kodlama davranışını üretim yazı tipleriyle denetleyin. |
| HTML | writeHTML(), writeHTMLCell(), fixHTMLCode() | Desteklenen HTML’yi yerel HTML iş hattına aktarır. | Yerel işleyici, tam bir TCPDF HTML kopyası değildir. |
| Görüntüler ve çizim | Image(), Line(), Rect(), Circle(), SetDrawColor() | Desteklenen grafik işlemlerini adaptör bileşenleri aracılığıyla eşler. | Desteklenmeyen vektör veya özel biçimler açıkça başarısız olur. |
| Gezinme ve açıklamalar | Bookmark(), AddLink(), SetLink(), Annotation() | Eşleme bulunan durumlarda yaygın gezinme çağrılarını korur. | Oluşturulan ana hatları ve bağlantıları doğrulayın. |
| Güvenlik ve imzalar | SetProtection(), setSignature(), setTimeStamp(), setUserRights() | Desteklenen eski güvenlik çağrılarını yerel özelliklere köprüler. | Kriptografik çıktıyı ayrı bir doğrulama geçidi olarak değerlendirin. |
| Formlar, şablonlar, dönüşümler | TextField(), startTemplate(), StartTransform(), Rotate(), Scale() | Desteklenen alt kümeleri uygular ve desteklenmeyen davranışta açıkça başarısız olur. | Dağıtımdan önce her çağrıyı yöntem kapsamıyla karşılaştırarak denetleyin. |
Bootstrap ve yapılandırma
“Bootstrap ve yapılandırma” başlıklı bölümAdaptörü uygulamanın başlangıç akışına bağladığınızda, genel takma adları kaydettiğinizde veya eski sabitler ile modern AdaptationConfig arasında seçim yaptığınızda bu tabloyu kullanın.
| Sembol | Parametreler | Varsayılan davranış | Döndürür | Fırlatılan hata veya başarısızlık nedeni | Notlar |
|---|---|---|---|---|---|
LegacyBootstrap::enableAliases() | Yok. | Uyumluluk takma adlarını bir kez kaydeder. | void | Otomatik yükleme veya ortam hataları. | Yalnızca eski kod TCPDF adlarının genel kapsamda var olmasını beklediğinde kullanın. |
LegacyBootstrap::isRegistered() | Yok. | Takma adların kaydedilip kaydedilmediğini bildirir. | bool | Beklenmez. | Bootstrap testlerinde yararlıdır. |
LegacyBootstrap::resetForTesting() | Yok. | Testler için kayıt durumunu temizler. | void | Beklenmez. | Yalnızca test amaçlıdır. |
AdaptationConfig | Adaptör bayrakları ve geçiş denetimleri. | Atlanırsa paket varsayılanlarını kullanır. | AdaptationConfig | Geçersiz seçenek değerleri. | Geçiş denetimleri sırasında yapılandırmayı açıkça belirtin. |
AdaptationConfig::fromLegacyConstants() | Yok. | Bilinen eski sabitleri okur ve bir yapılandırma nesnesi oluşturur. | AdaptationConfig | Geçersiz eski sabit değerleri. | Büyük ölçekli eski uygulamalar için geçiş yardımcısı. |
LegacyDefaults | Yok. | Eski varsayılan değerleri sağlar. | Varsayılan değerler. | Beklenmez. | Uyumluluk varsayılanları için merkezi yer. |
Köprüler ve yardımcılar
“Köprüler ve yardımcılar” başlıklı bölümBu dahili dönüştürme sınıfları adaptörün temelini oluşturur. Adaptör kapsamına katkıda bulunduğunuzda veya eski bir bağımsız değişkenin nasıl çevrildiğini tanıladığınızda bu tabloyu kullanın. Günlük uygulama kodu için genel adaptör yüzeyini tercih edin.
| Sembol | Parametreler | Varsayılan davranış | Döndürür | Fırlatılan hata veya başarısızlık nedeni | Notlar |
|---|---|---|---|---|---|
ConstructorBridge | Eski yapıcı bağımsız değişken listesi. | Eski seçenekleri NextPDF yapılandırmasına normalleştirir. | Yapıcı verileri. | Geçersiz eski bağımsız değişken değerleri. | Adaptör tarafından dahili olarak kullanılır. |
CellParameterAdapter | TCPDF hücre parametreleri. | Eski konumsal bağımsız değişkenleri çekirdek metin yerleşimi seçeneklerine eşler. | Uyarlanmış parametreler. | Geçersiz boyutlar veya hizalama. | Yeni kodda yerel çekirdek yöntemlerini tercih edin. |
OutputBridge::dispatch(Document $document, string $filename, string $dest) | Yerel belge, dosya adı ve eski hedef. | inline/download/kaydetme davranışını NextPDF çıktı API’lerine eşler. | string | Çekirdek yazma hataları; desteklenmeyen hedef. | Çıktıdan önce dosya adlarını ve depolama köklerini doğrulayın. |
OutputBridge::resolveDestination(string $dest) | Eski hedef kodu. | Hedefi yerel bir çıktı hedefine dönüştürür. | OutputDestination | Desteklenmeyen hedef hataları. | Hedef eşlemesini merkezi tutar. |
ColorTranslator | TCPDF renk bağımsız değişkenleri. | Eski renk biçimlerini normalleştirir. | Çekirdek renk değeri. | Geçersiz renk değerleri. | Renk ve çizim bileşenleri tarafından kullanılır. |
PageFormatResolver | Eski sayfa biçimi girdisi. | Bilinen adları çekirdek sayfa boyutlarına eşler. | Sayfa biçimi değeri. | Bilinmeyen biçim. | Geçişten sonra yerel sayfa boyutlarını açıkça kullanın. |
UnitConverter | Eski ölçüm değerleri ve birimleri. | Çekirdek birimlerine dönüştürür. | Sayısal değer. | Geçersiz birim. | Eski yerleşim davranışını korumaya yardımcı olur. |
İstisnalar
“İstisnalar” başlıklı bölümBir geçiş çağrısı açıkça başarısız olduğunda bu tabloyu kullanın. “Uygulanmadı” ile “bilinen ancak desteklenmeyen” başarısızlıklarını ayırır ve kurtarma yolunu gösterir.
| Sembol | Anlamı | Kurtarma |
|---|---|---|
TcpdfNotImplementedException | Adaptör, istenen eski yöntemi bilinçli olarak uygulamaz. | Çağrıyı yerel NextPDF API’siyle değiştirin veya bağımlılığı kaldırın. |
TcpdfNotImplementedException::forSilentIgnore() | Eski bir çağrı daha önce yok sayılırdı, ancak geçiş netliği için açığa çıkarılır. | Açık işlemsiz davranışın kabul edilebilir olup olmadığına karar verin. |
TcpdfNotImplementedException::forUnimplemented() | Eski bir çağrı için uygulanmış adaptör yolu yoktur. | Çağrıyı değiştirin veya geçiş kodunun arkasında yalıtılmış tutun. |
UnsupportedFeatureException | Eski özellik bilinir, ancak adaptör sınırları içinde desteklenmez. | Geçiş kılavuzunu denetleyin ve özelliği bir uygulama adaptörünün arkasında yalıtılmış tutun. |
UnsupportedFeatureException::forMethod() | Yönteme özgü desteklenmeyen özellik hatası oluşturur. | Tutarlı başarısızlık iletilerini korumak için uyumluluk katkılarında kullanın. |
Geliştirme notları
“Geliştirme notları” başlıklı bölüm- Adaptörü bir geçiş aracı olarak ele alın. Yeni kod, doğrudan çekirdek NextPDF API’lerini hedeflemelidir.
- Desteklenmeyen davranış açıkça başarısız olmalıdır. Uygulama bu riski açıkça kabul etmediği sürece, uyumluluk istisnalarını yakalayıp kısmi bir belgeyle devam etmeyin.
- Geçiş değişikliklerini küçük tutun ve her eski yöntemi kapsam tablosuyla doğrulayın.