İçeriğe geç
getnextpdf.com

FPDF'den NextPDF'e geçiş

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

Terminal window
composer require nextpdf/core:^3

Geç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ı).

FPDF 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 = 0 değ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\Config değer nesnesi (sayfa boyutu, kenar boşlukları, yazı tipleri dizini) ve açık bir addPage() 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.

Aş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.

FPDF’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).

FPDFNextPDFNotlar
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 / setYDoğ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 / setTextColorRGB (r, g, b) veya gri tonlama için tek bir değer.
$pdf->Line / Rect / SetLineWidth$doc->line / rect / setLineWidthDoğrudan eşleme. rect() bir stil dizesi alır ('S'/'F'/'DF').
$pdf->SetTitle/SetAuthor/SetSubject/SetKeywords/SetCreator$doc->setTitle/setAuthor/setSubject/setKeywords/setCreatorDoğ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.
<?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";

Bu ö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);
  • 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.4 ile çarpın. İkisini karıştırmak her şeyi sessizce yanlış boyutlandırır.
  • Output() bağımsız değişken sırası. FPDF Output($dest, $name)’dir; NextPDF output($name, $dest)’tir. Hedef bir karakter değil, OutputDestination sabit listesidir. Dosya / dize çıktısı için save() / getPdfData() tercih edin.
  • SetMargins sırası. FPDF (left, top, right)’tır; NextPDF Margin değer nesnesi (top, right, bottom, left)’tır. Olduğu gibi aktarmak yerine yeniden sıralayın.
  • Yazı tipleri. FPDF’nin AddFont() + .php metrik dosyalarının karşılığı yoktur. TrueType/OpenType dosyasını yazı tipleri dizinine koyun ve aile adıyla setFont() ç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ğu multiCell() (metriklere göre kaydırır) veya sabit genişlikli cell() çağrılarıyla değiştirin.

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

  • Ü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.
İfadeSpesifikasyonMadde
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.

Geçerli değil. NextPDF çekirdeği, burada açıklanan FPDF geçiş yolunu kapsar.


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

Davranış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.

FPDF yapısıNextPDFNotlar
$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ı tipleri dizinleri. FPDF’nin yazı tipi başına AddFont kaydı, 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ğunda FontRegistry::addFontDirectory() veya Document::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.
  • Birim dönüşümü (mm → pt) — en sık yapılan taşıma hatası; yukarıya bakın.
  • Output bağımsız değişken sırası takas edilir ve hedef bir sabit listesi olur.
  • Margin / Alignment / Orientation türlenmiş nesneler/sabit listelerdir, karakter veya konumsal (l, t, r) üçlüleri değil.
  • Genel GetStringWidth yok — 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.

  • FPDF $unit seçici — modellenmemiştir (her zaman nokta).
  • AddFont() + .php/.z metrik dosyaları — bir yazı tipleri diziniyle değiştirilmiştir.
  • GetStringWidth() — genel, dize ölçüm eylemi yoktur.
  • FPDF’nin 'I'/'D'/'F'/'S' hedef karakterleri — OutputDestination sabit listesi + save()/getPdfData() ile değiştirilmiştir.

Bunlara bağımlı kod olduğu gibi “geçmez”. Yukarıdaki satırlarla yeniden ifade edin.

  1. FPDF’nin yanına nextpdf/core ekleyin; şimdilik FPDF’yi kurulu tutun.
  2. 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.
  3. Belgenin yazı tiplerini Config->fontsDirectory içine koyun ve aile adıyla seçin; AddFont çağrılarını bırakın.
  4. 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.
  5. GetStringWidth tabanlı her elle yerleşimi multiCell() veya sabit genişlikli cell() çağrılarıyla değiştirin.
  6. Önce en düşük riskli olandan başlayarak belge bazında tekrarlayın; son geçişe kadar FPDF’yi kurulu tutun.
  7. Son geçişten sonra FPDF’yi composer.json dosyasından kaldırın.
  • 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.php ve çekirdek tests/ Font ile metin-çıktı paketleri tarafından test edilir. Geçiş kabulü belgeye özeldir ve sizin sorumluluğunuzda kalır.
  • Geçirilen her belge için bir gerileme testi ekleyin.

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

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

Bkz. 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).

  • Milimetre koordinatlarını * 72 / 25.4 dönüşümü olmadan nokta olarak aktarmak.
  • Output() çağrısını FPDF’nin ($dest, $name) sırasında bırakmak veya OutputDestination sabit listesi yerine bir karakter geçirmek.
  • SetMargins($l, $t, $r) çağrısını doğrudan Margin’e (sırası top, right, bottom, left) aktarmak.
  • AddFont metrik dosyalarının taşınmasını beklemek; bunun yerine TTF/OTF’yi yazı tipleri dizinine koyun.
  • Bir GetStringWidth karşılığına uzanmak; kaydırma için multiCell() 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).