Yazı tipleri ve hizalamayla metin oluşturma
Bir bakışta
“Bir bakışta” başlıklı bölümMetin yerleştirmek ve metnin yazı tipi ailesini, stilini, boyutunu ve hizalamasını denetlemek için bu tarifi kullanın. Üç yöntemden yararlanırsınız: setFont(), cell() ve multiCell(). Kod, examples/04-text-and-fonts.php dosyasını temel alır.
Kurulum
“Kurulum” başlıklı bölümcomposer require nextpdf/core:^3Bu komut, nextpdf/core paketini kurar. Örnek, PHP 8.4 gerektirir.
Kavramsal genel bakış
“Kavramsal genel bakış” başlıklı bölümsetFont($family, $style, $size), sonraki metin çağrısı için etkin yazı tipi yüzünü seçer. $style bağımsız değişkeni üç bayrağı birleştirir: B (kalın), I (italik) ve U (altı çizili). U bayrağı metin süslemesi uygular; diğer bayraklar yazı tipi varyantını seçer. Helvetica, Times ve Courier aileleri, ISO 32000-2’de belirtilen 14 standart Type 1 yazı tipine çözümlenir. Bir uygunluk profili bunu geçersiz kılabilir ve gömülü bir yedek yazı tipi gerektirebilir.
cell(), bir kutuya tek satır yazar. multiCell(), sözcükleri belirttiğiniz genişlik ve satır yüksekliğine göre bir sütunda kaydırır. Metin, metin uzayında başlar ve metin matrisi metin uzayını kullanıcı uzayına eşler (ISO 32000-2). Kullanıcı birimleriyle çalışırsınız; matrisi sizin adınıza motor oluşturur.
Hizalamayı Alignment enum’u ile ayarlayın: Left, Center, Right, Justify. multiCell() için iki yana yaslama, sözcük aralığını satırın geneline dağıtır.
API yüzeyi
“API yüzeyi” başlıklı bölümsetFont(string $family, string $style = '', float $size = 12.0): static—NextPDF\Core\Concerns\HasTypography.cell(float $width, float $height, string $text = '', bool|string $border = false, bool $newLine = false, Alignment $align = Alignment::Left, bool $fill = false): static—NextPDF\Core\Concerns\HasTextOutput.multiCell(float $width, float $height, string $text, bool|string $border = false, Alignment $align = Alignment::Left): static— aynı trait.Alignment—NextPDF\Contracts\Alignment(Left,Center,Right,Justify).
Tam PHPDoc tablosu kaynak koddan üretilir.
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;
$doc = Document::createStandalone();$doc->addPage();
$doc->setFont('helvetica', 'B', 18);$doc->cell(0, 12, 'Heading', newLine: true);
$doc->setFont('helvetica', '', 11);$doc->multiCell(0, 7, 'Word-wrapped justified body text.', align: Alignment::Justify);
$doc->save(__DIR__ . '/out.pdf');Kod örneği — üretim
“Kod örneği — üretim” başlıklı bölümBu örnek bağımsız çalışır; bu nedenle test çerçevesi onu çalıştırabilir. examples/04-text-and-fonts.php dosyasını yansıtır ve stil varyantlarını, farklı boyutları, sözcük kaydırmalı iki yana yaslanmış metni ve üç hizalamayı gösterir.
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Contracts\Alignment;use NextPDF\Core\Document;
$doc = Document::createStandalone();$doc->setTitle('Text and Fonts');$doc->addPage();
$doc->setFont('helvetica', 'B', 18);$doc->cell(0, 12, 'Text and Font Styles', newLine: true);$doc->ln(5);
$doc->setFont('helvetica', '', 12);$doc->cell(0, 8, 'Normal text in Helvetica 12pt.', newLine: true);$doc->setFont('helvetica', 'B', 12);$doc->cell(0, 8, 'Bold text in Helvetica 12pt.', newLine: true);$doc->setFont('helvetica', 'I', 12);$doc->cell(0, 8, 'Italic text in Helvetica 12pt.', newLine: true);$doc->setFont('helvetica', 'BI', 12);$doc->cell(0, 8, 'Bold-Italic text in Helvetica 12pt.', newLine: true);$doc->ln(5);
$doc->setFont('helvetica', 'B', 14);$doc->cell(0, 10, 'Font Sizes', newLine: true);foreach ([8, 10, 12, 14, 18] as $size) { $doc->setFont('helvetica', '', (float) $size); $doc->cell(0, $size * 0.8, "This is {$size}pt text.", newLine: true);}$doc->ln(5);
$doc->setFont('helvetica', 'B', 14);$doc->cell(0, 10, 'Multi-Line Text (Word Wrap)', newLine: true);$doc->setFont('helvetica', '', 11);$paragraph = 'NextPDF is a modern PDF 2.0 library for PHP. It provides a ' . 'fluent API for document creation. This paragraph demonstrates ' . 'automatic word wrapping and justified alignment with multiCell().';$doc->multiCell(0, 7, $paragraph, align: Alignment::Justify);$doc->ln(5);
$doc->setFont('helvetica', 'B', 14);$doc->cell(0, 10, 'Text Alignment', newLine: true);$doc->setFont('helvetica', '', 11);$doc->cell(0, 8, 'Left-aligned text', newLine: true, align: Alignment::Left);$doc->cell(0, 8, 'Center-aligned text', newLine: true, align: Alignment::Center);$doc->cell(0, 8, 'Right-aligned text', newLine: true, align: Alignment::Right);
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT');$doc->save($out !== false ? $out : __DIR__ . '/compose-text-and-fonts.pdf');
echo "Wrote compose-text-and-fonts.pdf\n";Beklenen STDOUT:
Wrote compose-text-and-fonts.pdfUç durumlar ve tuzaklar
“Uç durumlar ve tuzaklar” başlıklı bölüm- Genişlik 0, kalan genişlik anlamına gelir.
0değerini geçtiğinizde,cell(0, ...)vemultiCell(0, ...)sağ kenar boşluğuna kadar olan alanı kullanır. Sabit genişlikli bir kutu için belirli bir genişlik geçin. - Stil dizesinin sırası.
'BI've'IB', ayrıştırıcı bayrak sırasını yok saydığı için aynı kalın-italik varyantını seçer.'U'bayrağı bir süsleme bayrağıdır, yazı tipi varyantı değildir. - Standart yazı tiplerinin glif kapsamı. 14 standart yazı tipi, tam WinAnsiEncoding (Windows-1252) repertuvarını işler. Bu, Batı Avrupa aksanlı Latin’i, Euro işaretini ve yaygın tipografik noktalamayı kapsar — en ve em tireleri, kıvrık tırnaklar, madde imi, üç nokta ve ticari marka işareti. Çince, Japonca, Korece, Arapça, İbranice, Yunanca, Kiril veya Tayca gibi bu kümenin dışındaki yazı sistemleri için bir TrueType yüzü kaydedin ve seçin. Yazı tiplerini gömme ve alt kümeleme bölümüne bakın.
- Satır yüksekliği ile yazı tipi boyutu ilişkisi.
multiCell()için satır başına yükseklik, yazı tipi boyutu ile metrik profilinin varsayılan satır yüksekliği oranının çarpımıdır. Yükseklik çok küçükse satırlar çakışabilir. - Son satırda iki yana yaslama.
multiCell()ile iki yana yaslama, bir paragrafın son satırını germez. Bu, geleneksel dizgi uygulamasıyla uyumludur.
Performans
“Performans” başlıklı bölümMetin üretimi, glif sayısına göre doğrusaldır, O(n). Bütçe wall_ms: 1000, peak_mb: 64 olarak belirlenmiştir. Bir basamaklandırma veya yerleşim ağacı bulunmadığından maliyeti, HyperText Markup Language (HTML) tariflerine göre daha düşüktür. Standart yazı tipleri gömülmez; bu da çıktıyı küçük tutar.
Güvenlik notları
“Güvenlik notları” başlıklı bölümMetin içeriği işlenir, yorumlanmaz. Çıktı boyutunu sınırlı tutmak için kullanıcı tarafından sağlanan dizelerin uzunluğunu doğrulayın. Bu yol, hiçbir betik çalıştırmaz ve hiçbir uzak kaynağı getirmez.
Uygunluk
“Uygunluk” başlıklı bölüm| İfade | Belirtim | Madde | reference_id |
|---|---|---|---|
| Helvetica, Times ve Courier aileleri, 14 standart Type 1 yazı tipi arasındadır. | ISO 32000-2 | iso32000_2_sec9#x1.x29 | |
| Standart-14 aileleri, tam Latin karakter kümesini (WinAnsiEncoding, Windows kod sayfası 1252) destekler. | ISO 32000-2 | Annex D.2 (iso32000_2_annexes#x1.x17.p4) | eb9220f88dfadad27a0be2206b64e68d8ea301d6d46e08142d43859c05fac6e4 |
| Metin koordinatları metin uzayındadır ve metin matrisi tarafından kullanıcı uzayına eşlenir. | ISO 32000-2 | iso32000_2_sec8#x1.x10.p2 |
Bu tarif, NextPDF’in standart yazı tipleriyle metni nasıl oluşturduğunu gösterir. Bu yazı tiplerinin glif kapsamı, tam WinAnsiEncoding (Windows-1252) repertuvarıdır — Batı Avrupa Latin’i ile yaygın tipografik noktalama. Diğer yazı sistemlerindeki metin, gömülü bir yüz gerektirir.
Ticari bağlam
“Ticari bağlam” başlıklı bölümUygulanamaz.