FPDF'den NextPDF'e geçiş
Bir bakışta
“Bir bakışta” başlıklı bölümBu kılavuz, FPDF tabanlı bir kod tabanını NextPDF
çekirdeğine taşımanıza yardımcı olur. FPDF, en yaygın olarak kullanılan eski PHP
Taşınabilir Belge Biçimi (PDF) kitaplıklarından biridir ve çizim yüzeyi — elle
yönetilen bir x/y imleciyle sürülen AddPage, SetFont, Cell, MultiCell,
Write, Text, Image, Output — NextPDF’in kendi hücre/metin API’sine temiz
biçimde eşlenir; çünkü NextPDF’in düşük düzeyli çizim yöntemleri aynı FPDF/TCPDF
soyağacını izler. Ancak NextPDF, doğrudan takılabilir bir FPDF klonu değildir:
katı türler, yazı tipi alt kümeleme, imzalama, PDF/A ve erişilebilirlik (etiketli
PDF) içeren modern bir PDF 2.0 motorudur. İki gerçek değişiklik şunlardır: birim
modeli (NextPDF PDF noktalarıyla çalışır; FPDF varsayılan olarak milimetreyi
kullanır) ve çıktı eylemleri (FPDF’nin 'I'/'D'/'F'/'S' karakterleri
yerine türlenmiş bir OutputDestination sabit listesi).
Çekirdekte bir FPDF sınıfı uyumluluk katmanı yoktur. Her çağrı yerini
eylem eşlemesini kullanarak yeniden yazın. Bunun yerine bir
TCPDF 6.x kod tabanı için en küçük başlangıç değişikliğini istiyorsanız,
neredeyse kaynak uyumlu, doğrudan takılabilir bir yol sunan
TCPDF uyumluluk adaptörüne bakın;
FPDF’nin böyle bir adaptörü yoktur.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Geçiş sırasında setasign/fpdf (veya fpdf/fpdf) paketinizi kurulu tutun. Son
geçiş tamamlandıktan sonra kaldırın (bkz. güvenli geçiş sırası).
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümFPDF ile NextPDF aynı zihinsel modeli paylaşır: sayfalardan oluşan bir belge, bir
imleç (geçerli x/y konumu) ve bu imleçte çizen ya da imleci ilerleten
eylemler. SetXY, Cell, Ln ve MultiCell her iki kitaplıkta da imleci okur
ve değiştirir; bu nedenle çoğu yordamsal FPDF kodu satır satır çevrilir.
Farklar kasıtlıdır, kazara değil:
- Birimler. FPDF’nin kurucusu (
new FPDF($orientation, $unit, $size)) varsayılan olarak milimetreyi kullanır. NextPDF, PDF noktalarıyla çalışır (1 pt = 1/72 inç, ISO 32000-2 §7). Belge genelinde bir birim düğmesi yoktur — mm’yi noktaya bir kez dönüştürün (pt = mm * 72 / 25.4). - Y yönü sizin için aynı kalır. FPDF gibi, NextPDF’in kullanıcı
koordinatları da
y = 0değerini sayfanın üstüne koyar ve aşağı doğru artar; böylece imleç aritmetiği doğrudan taşınır. NextPDF, içten içe PDF’e özgü sol-alt köşe başlangıcına dönüştürür. - Kuruluş açıktır. FPDF; yönelimi, birimi ve boyutu kurucuda toplar; NextPDF
ise değişmez bir
NextPDF\Core\Configdeğer nesnesi (sayfa boyutu, kenar boşlukları, yazı tipleri dizini) ve açık biraddPage()alır. - Her zaman Unicode, her zaman alt küme. FPDF’nin çekirdek yapısı Latin-1’dir
ve Unicode için tFPDF/UTF-8 varyantına ihtiyaç duyar. NextPDF baştan sona
UTF-8’dir ve yazı tiplerini her zaman alt küme programları olarak gömer
(ISO 32000-2 §9). FPDF’nin
AddFont/yazı tipi metrik dosyalarının bir karşılığı yoktur; bir TrueType/OpenType yazı tipi dizini kaydedin ve aileyi ada göre seçin.
API yüzeyi
“API yüzeyi” başlıklı bölümAşağıda kullanılan çekirdek giriş noktaları şunlardır: Document::createStandalone(),
Document::addPage(), Document::setFont(), Document::cell(),
Document::multiCell(), Document::text(), Document::write(),
Document::ln(), Document::image(), imleç erişimcileri (setXY/setX/
setY/getX/getY), Document::output(?string, OutputDestination),
Document::save(string $path): void, Document::getPdfData(): string ve
NextPDF\Core\Config değer nesnesi. Bu çekirdek çizim, metin ve çıktı
yöntemlerinin tam referansı, PHPDoc’tan otomatik üretilen
çekirdek modüllerinde ve
referans dizininde yer alır.
Html modülü, HTML’den PDF’ye dönüşüm için ilgili bir
okumadır; bu sayfadaki eylemlerin referansı değildir.
API eylem eşlemesi
“API eylem eşlemesi” başlıklı bölümFPDF’nin genel yöntem adları köklü ve iyi bilinendir. Aşağıdaki NextPDF sütunu, çekirdek kaynak imzalarına karşı doğrulanmıştır (bkz. Kanıt / izlenebilirlik).
| FPDF | NextPDF | Notlar |
|---|---|---|
new FPDF($orient, $unit, $size) | Document::createStandalone($config) | Orientation/unit/size kurucu bağımsız değişkenleri bir NextPDF\Core\Config olur (pageSize, margins, fontsDirectory). $unit yok — noktalarla çalışın. Varsayılan createStandalone() sayfası A4 dikeydir. |
$pdf->AddPage($orient, $size) | $doc->addPage($size, $orientation) | Doğrudan eşleme. $size bir PageSize değer nesnesidir; $orientation Orientation sabit listesidir (Portrait/Landscape). |
$pdf->SetFont($family, $style, $size) | $doc->setFont($family, $style, $size) | Doğrudan eşleme. $style aynı ''/'B'/'I'/'BI' (artı 'U' altı çizili) kodlarını kullanır. |
$pdf->Cell($w, $h, $txt, $border, $ln, $align, $fill) | $doc->cell($w, $h, $txt, $border, $newLine, $align, $fill) | Doğrudan eşleme. $align Alignment sabit listesidir (Left/Center/Right/Justify); $border bool veya bir 'LTRB' dizesi kabul eder; $ln bool $newLine olur. |
$pdf->MultiCell($w, $h, $txt, $border, $align, $fill) | $doc->multiCell($w, $h, $txt, $border, $align) | Gerçek yazı tipi metriklerine göre sözcük kaydırır. $fill bağımsız değişkeni yok; arka plan gerekiyorsa önce dolu bir rect() boyayın. |
$pdf->Write($h, $txt, $link) | $doc->write($h, $txt, $link) | İmleçten akan metin; $link bir URL bağlantı açıklamasını iliştirir. |
$pdf->Text($x, $y, $txt) | $doc->text($x, $y, $txt) | Mutlak konumlu metin. Doğrudan eşleme. |
$pdf->Ln($h) | $doc->ln($h) | Sol kenar boşluğuna satır sonu; 0 = varsayılan satır yüksekliği. |
$pdf->Image($file, $x, $y, $w, $h) | $doc->image($file, $x, $y, $w, $h) | Doğrudan eşleme; $x/$y/$w/$h boş değer atanabilir (null = geçerli imleç / özgün boyut). |
$pdf->SetXY($x, $y) / SetX / SetY | $doc->setXY($x, $y) / setX / setY | Doğrudan eşleme. getX()/getY() imleci okur. |
$pdf->SetMargins($l, $t, $r) | $doc->setMargins(new Margin($t, $r, $bottom, $l)) | Tek bir Margin değer nesnesi; kurucu sırası (top, right, bottom, left) şeklindedir — FPDF’nin (left, top, right) sırası değil. FPDF SetMargins’in alt kenar boşluğu bağımsız değişkeni yoktur (alt kenar boşluğu SetAutoPageBreak($auto, $margin)’den gelir); bu nedenle $bottom değerini siz seçin — genellikle üst kenar boşluğuna eşit ya da otomatik-sayfa-sonu kenar boşluğunu geçirin. |
$pdf->SetAutoPageBreak($auto, $margin) | $doc->setAutoPageBreak($auto, $margin) | Doğrudan eşleme. |
$pdf->SetDrawColor / SetFillColor / SetTextColor | $doc->setDrawColor / setFillColor / setTextColor | RGB (r, g, b) veya gri tonlama için tek bir değer. |
$pdf->Line / Rect / SetLineWidth | $doc->line / rect / setLineWidth | Doğrudan eşleme. rect() bir stil dizesi alır ('S'/'F'/'DF'). |
$pdf->SetTitle/SetAuthor/SetSubject/SetKeywords/SetCreator | $doc->setTitle/setAuthor/setSubject/setKeywords/setCreator | Doğrudan eşleme. ISO 32000-2 §14 bilgi sözlüğüne / Genişletilebilir Üst Veri Platformu’na (XMP) yerleşir. |
$pdf->Output($dest, $name) | $doc->output($name, OutputDestination::…) | FPDF hedef karakterleri (I/D/F/S), OutputDestination sabit listesine eşlenir; bağımsız değişken sırasının takas edildiğine dikkat edin (NextPDF’de önce ad gelir). |
$pdf->Output('S') | $doc->getPdfData() | PDF baytlarını döndürür. |
$pdf->Output('F', $path) | $doc->save($path) | Bir dosya yoluna yazar. |
$pdf->GetStringWidth($s) | (genel yöntem yok) | Dize genişliği cell()/multiCell() kaydırması sırasında içten içe hesaplanır; genel, dize başına bir ölçüm eylemi yoktur. Elle ölçmek yerine kaydırmayı multiCell() üzerinden sürün. |
Kod örneği — hızlı başlangıç
“Kod örneği — hızlı başlangıç” başlıklı bölüm<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Contracts\Alignment;use NextPDF\Core\Document;
// FPDF:// $pdf = new FPDF(); // mm, A4 portrait// $pdf->AddPage();// $pdf->SetFont('Arial', 'B', 16);// $pdf->Cell(40, 10, 'Invoice');// $pdf->Output('F', 'out.pdf');
// NextPDF — points, default page is A4 portrait:$doc = Document::createStandalone();$doc->setTitle('Invoice');$doc->addPage();$doc->setFont('Helvetica', 'B', 16.0);$doc->cell(113.4, 28.3, 'Invoice', false, true, Alignment::Left); // ~40mm x ~10mm in points$doc->save(__DIR__ . '/out.pdf');
echo "Wrote out.pdf\n";Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümBu örnek, examples/04-text-and-fonts.php ile uyumludur. Açık bir sayfa boyutu,
kenar boşlukları, kayıtlı bir yazı tipleri dizini ve bir FPDF kod tabanının zaten
kullandığı imleç tabanlı hücre modelini kullanır.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Contracts\Alignment;use NextPDF\Contracts\OutputDestination;use NextPDF\Core\Config;use NextPDF\Core\Document;use NextPDF\ValueObjects\Margin;use NextPDF\ValueObjects\PageSize;
// Equivalent of: new FPDF('P', 'mm', 'A4') + SetMargins(20, 16, 20)// i.e. FPDF left=20mm, top=16mm, right=20mm. FPDF SetMargins has no bottom// argument, so we pick bottom = top = 16mm. Convert each mm to points// (pt = mm * 72 / 25.4): 16mm = 45.354pt, 20mm = 56.693pt.// Margin constructor order is (top, right, bottom, left) — NOT FPDF's (L, T, R).$config = new Config( pageSize: new PageSize(595.276, 841.890, 'A4'), margins: new Margin(45.354, 56.693, 45.354, 56.693), // top,right,bottom,left in points fontsDirectory: __DIR__ . '/fonts',);
$doc = Document::createStandalone($config);$doc->setTitle('Quarterly Report');$doc->setAuthor('Finance');$doc->addPage();
// SetFont + Cell, the FPDF way — but in points and with a real Unicode font.$doc->setFont('DejaVuSans', 'B', 18.0);$doc->setTextColor(30, 58, 138);$doc->cell(0, 24.0, 'Quarterly Report', false, true, Alignment::Left);
$doc->setFont('DejaVuSans', '', 11.0);$doc->setTextColor(0, 0, 0);$doc->multiCell(0, 16.0, "Body text wraps on real font metrics. Unicode is " . "native, so accented and non-Latin characters need no tFPDF variant — " . "register the family in the fonts directory and select it by name.");
// Equivalent of $pdf->Output('D', 'report.pdf'):$doc->output('report.pdf', OutputDestination::Download);Uç durumlar ve dikkat edilecek noktalar
“Uç durumlar ve dikkat edilecek noktalar” başlıklı bölüm- Birimler. FPDF’den kopyaladığınız her sayısal koordinat, genişlik,
yükseklik ve kenar boşluğu varsayılan olarak milimetredir. Noktaya çevirmek
için, taşıma sırasında bir kez
72 / 25.4ile çarpın. İkisini karıştırmak her şeyi sessizce yanlış boyutlandırır. Output()bağımsız değişken sırası. FPDFOutput($dest, $name)’dir; NextPDFoutput($name, $dest)’tir. Hedef bir karakter değil,OutputDestinationsabit listesidir. Dosya / dize çıktısı içinsave()/getPdfData()tercih edin.SetMarginssırası. FPDF(left, top, right)’tır; NextPDFMargindeğer nesnesi(top, right, bottom, left)’tır. Olduğu gibi aktarmak yerine yeniden sıralayın.- Yazı tipleri. FPDF’nin
AddFont()+.phpmetrik dosyalarının karşılığı yoktur. TrueType/OpenType dosyasını yazı tipleri dizinine koyun ve aile adıylasetFont()çağırın. Çekirdek Base14 adları (Helvetica,Times,Courier) bir dosya olmadan çözümlenir; PDF/A veya etiketli PDF altında, gömülebilir bir yazı tipiyle otomatik olarak değiştirilirler. GetStringWidth. Genel bir dize ölçüm yöntemi yoktur. FPDF kodunuz sütunları elle yerleştirmek için dizeleri ölçüyorsa, o bloğumultiCell()(metriklere göre kaydırır) veya sabit genişliklicell()çağrılarıyla değiştirin.
Performans
“Performans” başlıklı bölümNextPDF, içeriği tek bir akış geçişinde yayar (mimari karar kaydı ADR-001); tepe
bellek, tutulan bir nesne ağacını değil, belge boyutunu izler. Bu kılavuzun
örneği için bütçe: wall_ms: 2000, peak_mb: 128. Uzun belgelerde, içeriği
addPage() çağrıları arasında sürün — bir FPDF raporunun zaten kullandığı aynı
döngü biçimi.
Güvenlik notları
“Güvenlik notları” başlıklı bölüm- Üst veri.
SetTitle()/SetAuthor(), ISO 32000-2 §14 bilgi sözlüğüne / XMP’ye yazan türlenmiş ayarlayıcılara eşlenir. Orada asla gizli bilgi saklamayın. - Görüntü yolları.
image(), okumadan önce stream-wrapper şemalarını ve gömülü NUL baytlarını reddeder. Uygulama denetimindeki yollar geçirin. - Belge içinde kod yok. NextPDF belge içi betikleri yürütmez; FPDF’deki hiçbir şey bunu değiştirmez.
Uygunluk
“Uygunluk” başlıklı bölüm| İfade | Spesifikasyon | Madde |
|---|---|---|
| Sayfa biçimi/yönelimi, sayfa sınır kutusuna eşlenir. | ISO 32000-2 | §7 |
| Yazı tipleri, gömülü/alt kümelenmiş yazı tipi programları olarak yazılır. | ISO 32000-2 | §9 |
| Başlık / üst veri, bilgi sözlüğüne / XMP’ye yerleşir. | ISO 32000-2 | §14 |
| Çizgiler, dikdörtgenler ve görüntüler, içerik akışı boyamasıdır. | ISO 32000-2 | §8 |
NextPDF, ISO 32000-2 içeriği üretir; FPDF ile görsel özdeşlik iddiasında bulunmaz. İşleyiciyi her değiştirdiğinizde çıktıyı yeniden gözden geçirin.
Ticari bağlam
“Ticari bağlam” başlıklı bölümGeçerli değil. NextPDF çekirdeği, burada açıklanan FPDF geçiş yolunu kapsar.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölümGeçiş ayrıntıları (R6 zorunlu bölümleri)
“Geçiş ayrıntıları (R6 zorunlu bölümleri)” başlıklı bölümBu kimin için
“Bu kimin için” başlıklı bölümSunucu tarafı, yordamsal PDF oluşturma için FPDF (veya tFPDF) çalıştıran ekipler.
Kodunuz SetXY ve Ln ile sürülen bir AddPage / SetFont / Cell /
MultiCell / Image / Output çağrı dizisiyse, eylem eşlemesi
tüm yüzeyinizi kapsar.
Kapsam
“Kapsam” başlıklı bölümKapsam içinde: FPDF çizim eylemleri, imleç modeli, yazı tipleri, renkler, çizgiler
ve dikdörtgenler, üst veri ve çıktı. Kapsam dışında: FPDF’nin AddFont metrik
dosyası araçları ve üçüncü taraf FPDF betik uzantıları (barcode, döndürme, yer
imleri) — bunları burada ele alınmayan ilgili NextPDF modüllerine (Barcode,
Transforms, Navigation) eşleyin.
Uyumluluk eşlemesi
“Uyumluluk eşlemesi” başlıklı bölümDavranışsal uyumluluk, doğrudan takılabilir bir uyumluluk katmanı değildir:
çekirdek bir FPDF sınıfı uyumluluk katmanı sağlamaz. Her çağrı yerini yeniden
yazın. NextPDF’in hücre/metin API’si FPDF/TCPDF soyağacını paylaştığı için
eylemler birbiriyle yakından örtüşür; ancak birim modeli, Output bağımsız
değişken sırası ve Margin/sabit-liste türleri farklıdır — bu nedenle olduğu
gibi aktarma yanlış, çeviri ise doğrudur.
Birim ve yapılandırma eşlemesi
“Birim ve yapılandırma eşlemesi” başlıklı bölüm| FPDF yapısı | NextPDF | Notlar |
|---|---|---|
$unit ('mm' varsayılan) | (karşılığı yok) | PDF noktalarıyla çalışın. Boyutları taşıma sırasında bir kez pt = mm * 72 / 25.4 ile dönüştürün. |
$orientation ('P'/'L') | addPage() üzerindeki Orientation sabit listesi veya PageSize genişlik/yükseklik takası | Yatay = genişlik > yükseklik. |
$size ('A4', [w,h]) | Config->pageSize (PageSize değer nesnesi) | Adlandırılmış biçimler açık nokta boyutlarına dönüşür; PageSize::A4()…A0() ve Letter/Legal fabrikaları vardır. |
SetMargins($l, $t, $r) | Config->margins (Margin VO) | Kurucu sırası (top, right, bottom, left). |
AddFont($family, $style, $file) | yazı tipleri dizini + ada göre setFont() | Metrik dosyasını bırakın; TTF/OTF’yi Config->fontsDirectory içine koyun. |
Yazı tipi işleme farkı
“Yazı tipi işleme farkı” başlıklı bölüm- Yazı tipleri dizinleri. FPDF’nin yazı tipi başına
AddFontkaydı, bir yazı tipleri dizini artısetFont()aile eşleştirmesine indirgenir.Config->fontsDirectory(varsayılan arama yolu) ile başlayın; yazı tipleri birden fazla yerde olduğundaFontRegistry::addFontDirectory()veyaDocument::addFontDirectory()ile ek dizinler kaydedin. - Her zaman Unicode. Latin-1 varsayılanı ve ayrı bir tFPDF yapısı yoktur; UTF-8 girdi normaldir.
- Her zaman alt küme. NextPDF, gömülü yazı tiplerini her zaman alt kümeler (ISO 32000-2 §9); FPDF’nin yazı tipi gömme seçimlerinin karşılığı yoktur ve gerekli değildir.
- Glifleri yeniden baz alın. Yazı tipi eşleştirme ve yedekleme motora özeldir; bir FPDF yazı tipi takma adı tam bir aile adı gerektirebilir. Değişim farkları beklenir; kusur değildir.
Davranışsal farklar
“Davranışsal farklar” başlıklı bölüm- Birim dönüşümü (mm → pt) — en sık yapılan taşıma hatası; yukarıya bakın.
Outputbağımsız değişken sırası takas edilir ve hedef bir sabit listesi olur.Margin/Alignment/Orientationtürlenmiş nesneler/sabit listelerdir, karakter veya konumsal(l, t, r)üçlüleri değil.- Genel
GetStringWidthyok — kaydırmayımultiCell()üzerinden sürün. - Bağımsız rasterleştirme — yoğun içerikte satır kaydırma ve sayfalama farklılık gösterebilir; görsel farkları yeniden baz alın.
Bunlar belgelenmiş davranışsal farklardır; iki motordan birindeki kusur değildir.
Desteklenmeyen / doğrudan karşılığı yok
“Desteklenmeyen / doğrudan karşılığı yok” başlıklı bölüm- FPDF
$unitseçici — modellenmemiştir (her zaman nokta). AddFont()+.php/.zmetrik dosyaları — bir yazı tipleri diziniyle değiştirilmiştir.GetStringWidth()— genel, dize ölçüm eylemi yoktur.- FPDF’nin
'I'/'D'/'F'/'S'hedef karakterleri —OutputDestinationsabit listesi +save()/getPdfData()ile değiştirilmiştir.
Bunlara bağımlı kod olduğu gibi “geçmez”. Yukarıdaki satırlarla yeniden ifade edin.
Güvenli geçiş sırası
“Güvenli geçiş sırası” başlıklı bölüm- FPDF’nin yanına
nextpdf/coreekleyin; şimdilik FPDF’yi kurulu tutun. - Düşük riskli bir belge seçin. Kurucuyu birim eşlemesi üzerinden dönüştürün, ardından her eylemi eylem eşlemesi ile taşıyın. Her mm koordinatını noktaya çevirin.
- Belgenin yazı tiplerini
Config->fontsDirectoryiçine koyun ve aile adıyla seçin;AddFontçağrılarını bırakın. - Aynı girdi için her iki PDF’yi de oluşturun ve görsel olarak karşılaştırın. Farklar (yazı tipi değişimi, satır kaydırma) bağımsız motorlar için beklenir — bunları belge bazında kabul edin.
GetStringWidthtabanlı her elle yerleşimimultiCell()veya sabit genişliklicell()çağrılarıyla değiştirin.- Önce en düşük riskli olandan başlayarak belge bazında tekrarlayın; son geçişe kadar FPDF’yi kurulu tutun.
- Son geçişten sonra FPDF’yi
composer.jsondosyasından kaldırın.
Geçişi test etme
“Geçişi test etme” başlıklı bölüm- Kodu değiştirmeden önce temsili belgeler için FPDF çıktısının anlık görüntüsünü alın (altın girdiler; baytlar farklı olacaktır).
- Geçirilen her belge için, kendi denetiminizle kabulü doğrulayın (görsel fark
- metin çıkarımı). NextPDF’in hücre/yazı tipi davranışı,
examples/04-text-and-fonts.phpve çekirdektests/Font ile metin-çıktı paketleri tarafından test edilir. Geçiş kabulü belgeye özeldir ve sizin sorumluluğunuzda kalır.
- metin çıkarımı). NextPDF’in hücre/yazı tipi davranışı,
- Geçirilen her belge için bir gerileme testi ekleyin.
Kanıt / izlenebilirlik
“Kanıt / izlenebilirlik” başlıklı bölümBu sayfadaki her NextPDF davranışsal ifadesi, depo içindeki bir kaynak imzası,
örnek veya mimari karar kaydı (ADR) ile ya da PDF biçimi özellikleri için, ön
bilgideki citations: ve Uygunluk tablosundaki ISO 32000-2
maddeleriyle desteklenir. FPDF davranışı yalnızca “bağımsız motor — belgelenmiş
farklar beklenir” olarak ileri sürülür; bu sayfa, depo içindeki bir yapının
kanıtlamadığı hiçbir eşdeğerlik iddiasında bulunmaz.
| NextPDF davranışsal iddiası | Depo içi kanıt (yol) |
|---|---|
AddPage, addPage(?PageSize, Orientation): static ile eşlenir. | src/Core/Concerns/HasPages.php (addPage()). |
SetFont($family, $style, $size), setFont(string, string, float): static ile eşlenir; ''/'B'/'I'/'BI'/'U' stilleri. | src/Core/Concerns/HasTypography.php (setFont()). |
Cell, cell($w, $h, $txt, $border, $newLine, $align, $fill): static ile eşlenir. | src/Core/Concerns/HasTextOutput.php (cell()). |
MultiCell, multiCell($w, $h, $txt, $border, $align): static ile eşlenir (metrik tabanlı kaydırma). | src/Core/Concerns/HasTextOutput.php (multiCell(), wrapText()). |
Write/Text/Ln, write()/text()/ln() ile eşlenir. | src/Core/Concerns/HasTextOutput.php (write(), text(), ln()). |
SetXY/SetX/SetY/GetX/GetY doğrudan eşlenir; SetMargins bir Margin VO alır. | src/Core/Concerns/HasPages.php (setXY(), getX(), setMargins()); src/ValueObjects/Margin.php ((top, right, bottom, left)). |
Image, image($file, ?$x, ?$y, ?$w, ?$h): static ile eşlenir; şema/NUL yolları reddeder. | src/Core/Concerns/HasImages.php (image(), assertImageFilePath()). |
Line/Rect/SetLineWidth/SetDrawColor/SetFillColor/SetTextColor doğrudan eşlenir. | src/Core/Concerns/HasDrawing.php (line(), rect(), setLineWidth()); src/Core/Concerns/HasColors.php (setDrawColor(), setFillColor(), setTextColor()). |
createStandalone() varsayılan sayfası A4 dikeydir (595.276 × 841.890 pt). | src/Core/Document.php (createStandalone()); src/ValueObjects/PageSize.php (A4()). |
Çıktı hedefi OutputDestination sabit listesidir (Inline/Download/File/String); Output('S') → getPdfData(), Output('F', $p) → save($p). | src/Contracts/OutputDestination.php; src/Core/Concerns/HasOutput.php (output()). |
SetTitle/SetAuthor/… türlenmiş üst veri ayarlayıcılarına eşlenir; bilgi sözlüğüne / XMP’ye yerleşir. | src/Core/Concerns/HasMetadata.php (setTitle(), setAuthor()); ISO 32000-2 §14 (ön bilgi citations:). |
| Yazı tipleri her zaman alt küme programları olarak gömülür. | src/Core/Concerns/HasTypography.php (buildFontData()); ISO 32000-2 §9 (ön bilgi citations:). |
| İçerik tek geçişte yayılır. | docs/architecture/adr/ADR-001-stream-based-rendering-pipeline.md. |
Geri alma
“Geri alma” başlıklı bölümHer iki paket de son geçişe kadar kurulu kalır; bu nedenle her çağrı yeri için geri alma, o çağrı yerini FPDF yoluna döndürmek anlamına gelir. Son geçişten sonra geri alma, FPDF’yi ve önceki kodu sürüm denetiminden geri yüklemek anlamına gelir. Hiçbir veri geçişi söz konusu değildir.
Performans değerlendirmeleri
“Performans değerlendirmeleri” başlıklı bölümBkz. Performans. Tek geçişli model, tutulan herhangi bir arabellek maliyetini ortadan kaldırır. Yeni belge başına maliyet, yazı tipleri dizini üzerinden önbelleğe alınabilen erken yazı tipi çözümlemesidir (3. adım).
Sık karşılaşılan tuzaklar
“Sık karşılaşılan tuzaklar” başlıklı bölüm- Milimetre koordinatlarını
* 72 / 25.4dönüşümü olmadan nokta olarak aktarmak. Output()çağrısını FPDF’nin($dest, $name)sırasında bırakmak veyaOutputDestinationsabit listesi yerine bir karakter geçirmek.SetMargins($l, $t, $r)çağrısını doğrudanMargin’e (sırasıtop, right, bottom, left) aktarmak.AddFontmetrik dosyalarının taşınmasını beklemek; bunun yerine TTF/OTF’yi yazı tipleri dizinine koyun.- Bir
GetStringWidthkarşılığına uzanmak; kaydırma içinmultiCell()kullanın. - Bayt/piksel düzeyinde özdeş çıktı beklemek (bağımsız motorlar — bu kılavuz asla doğrudan takılabilirlik ya da %100 uyumluluk iddiasında bulunmaz).