Metin, yazı tipleri ve sayfa temelleri
İlk öğreticide tek satırlık metin içeren bir sayfa işlediniz. Bu kez sayfanın kendisinin ve üzerindeki metnin kontrolünü ele alıyorsunuz. Bir sayfa boyutu seçecek, başlıklar ve paragraflar yazacak ve bunları motorun yerleşik yazı tipleriyle biçimlendireceksiniz.
Ne oluşturacaksınız
“Ne oluşturacaksınız” başlıklı bölümİki küçük betik yazacaksınız. Her biri tek sayfalık bir Portable Document Format (PDF) dosyası üretir:
01-text-basics.php, renkli bir başlık, sarmalanmış paragraflar ve üç hizalama örneği içeren A4 dikey bir sayfa işler.02-fonts.php, iki yerleşik yazı tipi ailesini çeşitli boyutlarda karşılaştıran bir örnek sayfası işler.
Her şey yalnızca nextpdf/core paketiyle çalışır. Hiçbir yazı tipi dosyasına,
ek eklentiye veya ağ bağlantısına ihtiyacınız yoktur. Henüz kurulu bir projeniz
yoksa önce ilk öğreticiyi
takip edin ve geri dönün.
Adım 1: A4 sayfada metni biçimlendirin
“Adım 1: A4 sayfada metni biçimlendirin” başlıklı bölümHer sayfanın bir boyutu ve bir yönü vardır. A4, yaygın uluslararası kağıt
boyutudur; Letter ise Amerika Birleşik Devletleri’ndeki karşılığıdır. Yön ya
dikey (düz duran) ya da yatay (yan yatık) olur. Bir sayfayı başlatırken her iki
seçimi de addPage()’e geçirirsiniz.
Ardından yazma işini üç yöntem yapar. setFont(), sonraki metin için yazı
tipini ve boyutu seçer. cell(), görünmez bir kutunun içine tek bir satır
yazar. multiCell(), daha uzun metni gereken sayıda satıra sarmalar. Her iki
yöntemde de 0 genişliği “sağ kenar boşluğuna kadar her şeyi kullan” anlamına
gelir.
İki çağrı daha görünümü yönetir. setTextColor(), 0 ile 255 arasında kırmızı,
yeşil ve mavi değerleri alır ve siz tekrar değiştirene kadar geçerli olur.
Adlandırılmış seçeneklerden oluşan sabit bir liste olan Alignment enum’u
Left, Center, Right ve Justify seçeneklerini sunar.
Proje klasörünüzde 01-text-basics.php dosyasını oluşturun:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Contracts\Alignment;use NextPDF\Contracts\Orientation;use NextPDF\Core\Document;use NextPDF\ValueObjects\PageSize;
@mkdir(__DIR__ . '/out');
$document = Document::createStandalone();$document->setTitle('Text basics');$document->addPage(PageSize::A4(), Orientation::Portrait);
// A colored heading. The values are red, green, and blue, each 0 to 255.$document->setFont('helvetica', 'B', 20);$document->setTextColor(30, 64, 175);$document->cell(0, 14, 'Project kickoff notes', newLine: true);$document->ln(4);
// Back to black for the body text.$document->setTextColor(0, 0, 0);$document->setFont('helvetica', '', 11);$document->multiCell( 0, 7, 'Welcome to the second tutorial. This paragraph is written with ' . 'multiCell(), so the engine wraps the words onto as many lines ' . 'as the page width requires.',);$document->ln(4);
$document->multiCell( 0, 7, 'Justified text stretches the spaces so both edges line up. It is a ' . 'good fit for report bodies and other long passages.', align: Alignment::Justify,);$document->ln(6);
// One line each: left, centered, and right.$document->setFont('helvetica', 'I', 11);$document->cell(0, 8, 'Left-aligned line', newLine: true, align: Alignment::Left);$document->cell(0, 8, 'Centered line', newLine: true, align: Alignment::Center);$document->cell(0, 8, 'Right-aligned line', newLine: true, align: Alignment::Right);
$document->save(__DIR__ . '/out/text-basics.pdf');
echo "Wrote out/text-basics.pdf\n";Bunu php 01-text-basics.php ile çalıştırın. Betik
Wrote out/text-basics.pdf yazdırır ve dosya yeni out/ klasöründe görünür.
Az önce ne oldu
“Az önce ne oldu” başlıklı bölümaddPage(PageSize::A4(), Orientation::Portrait), herhangi bir metin yazılmadan
önce sayfayı oluşturdu. Bunun yerine Orientation::Landscape geçirin; aynı
sayfa yan döner. PageSize::A5() veya PageSize::Letter() gibi diğer
adlandırılmış boyutlar da aynı şekilde çalışır.
setFont('helvetica', 'B', 20), 20 puntoda kalın Helvetica’yı seçti. Punto
(pt) geleneksel baskı birimidir; 72 punto bir inçe eşittir. cell() çağrısı
başlığı yazdığında setTextColor(30, 64, 175) etkin olduğu için başlık
mavidir. Sonraki setTextColor(0, 0, 0), kendisinden sonraki her şey için
tekrar siyaha geçti.
İki multiCell() çağrısı paragraflarını otomatik olarak sarmaladı. İki yana
yaslanmış olan, paragrafın son satırı dışında her iki kenarın da hizalanması için
kelime aralığını genişletir. Bloklar arasında ln(), nefes alacak alan eklemek
için yazma konumunu aşağı taşıdı. Son olarak save(), dosyayı oluşturup out/
içine yazdı.
Bu yöntemlerin kabul ettiği her parametre için bkz. Metni yazı tipleri ve hizalama ile oluşturun.
Adım 2: Yerleşik yazı tipleri arasından seçin
“Adım 2: Yerleşik yazı tipleri arasından seçin” başlıklı bölümMotor, üç metin ailesini yerleşik olarak sunar: Helvetica, Times ve Courier. Helvetica, sans-serif bir yazı tipidir; yani harflerinin küçük uç çizgileri (serif) yoktur. Times, uzun ve baskı benzeri metinlerde iyi okunan serif bir yazı tipidir. Courier sabit genişliklidir, bu yüzden kod listelerine ve fişlere uygundur. Bu aileler yerleşik olduğu için betikleriniz hiçbir yazı tipi dosyasına ihtiyaç duymaz.
setFont()’un stil argümanı tek harfli bayrakları birleştirir: kalın için
'B', italik için 'I' ve altı çizili için 'U'. Boş bir dize normal anlamına
gelir ve bayraklar birleşir, dolayısıyla 'BI' kalın italik verir.
Yerleşik aileler Latin tabanlı metni kapsar. Diğer yazı sistemleri veya kendi marka yazı tipiniz için, Yazı tiplerini gömün ve alt küme yapın tarifinde gösterildiği gibi bir yazı tipi dosyası kaydedersiniz (alt küme oluşturma, yalnızca gerçekten kullandığınız karakterleri saklayarak dosyaların küçük kalmasını sağlar). Yazı tipi destek matrisi, motorun kabul ettiği her yazı tipi biçimini listeler.
İlk betiğin yanında 02-fonts.php dosyasını oluşturun:
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
@mkdir(__DIR__ . '/out');
$document = Document::createStandalone();$document->setTitle('Font sampler');$document->addPage();
$document->setFont('helvetica', 'B', 20);$document->cell(0, 14, 'Built-in font sampler', newLine: true);$document->ln(4);
// Helvetica: a sans-serif face, a solid default for labels and headings.$document->setFont('helvetica', 'B', 14);$document->cell(0, 10, 'Helvetica', newLine: true);foreach ([10, 12, 16] as $size) { $document->setFont('helvetica', '', (float) $size); $document->cell(0, $size * 0.8, "Helvetica sample at {$size}pt.", newLine: true);}$document->setFont('helvetica', 'BI', 12);$document->cell(0, 9, 'Helvetica bold italic for emphasis.', newLine: true);$document->ln(6);
// Times: a serif face that suits long, print-like passages.$document->setFont('times', 'B', 14);$document->cell(0, 10, 'Times', newLine: true);foreach ([10, 12, 16] as $size) { $document->setFont('times', '', (float) $size); $document->cell(0, $size * 0.8, "Times sample at {$size}pt.", newLine: true);}$document->setFont('times', 'I', 12);$document->cell(0, 9, 'Times italic for quotations.', newLine: true);
$document->save(__DIR__ . '/out/font-sampler.pdf');
echo "Wrote out/font-sampler.pdf\n";Bunu php 02-fonts.php ile çalıştırın ve out/font-sampler.pdf dosyasını açın.
Aynı örnek cümlenin iki aile arasında karakter değiştirdiğini ve üç boyut
boyunca büyüdüğünü görürsünüz.
Az önce ne oldu
“Az önce ne oldu” başlıklı bölümArgümansız addPage(), dikey yönde varsayılan sayfa kurulumunu kullandı,
böylece her betiğin boyutu açıkça belirtmesi gerekmez. Her setFont() çağrısı,
sayfanın ortasında etkin aileyi, stili veya boyutu değiştirdi ve bir yazı tipi,
sonraki setFont() çağrısına kadar etkin kalır.
Döngüler, setFont() ondalık bir sayı beklediği için boyutu (float) ile
dönüştürür. Satır yükseklikleri yazı tipi boyutuyla ölçeklenir ($size * 0.8),
böylece daha büyük metin daha yüksek satırlar alır ve hiçbir şey üst üste
binmez. Üçüncü aileyi görmek için 'times' yerine 'courier' koymayı deneyin
ve betiği tekrar çalıştırın.
Bir şeyler ters gittiyse
“Bir şeyler ters gittiyse” başlıklı bölüm- Bir “class not found” veya otomatik yükleme hatası genellikle betiğin
vendor/autoload.phpdosyasını bulamadığı anlamına gelir. Betiği,vendor/içeren proje klasörünün içinde çalıştırın. - Yanlış yazılmış bir aile adı, bulunamayan yazı tipini adıyla belirten bir
istisna fırlatır. Yazımı kontrol edin:
helvetica,times,courier. - Sorun giderme merkezi yaygın çözümleri toplar ve Yazı tipleri ve etiketleme, yazı tipi sorunlarını ayrıntılı olarak ele alır.
- Her motor istisnası, taşıdığı bağlam ve kurtarma eylemiyle birlikte hata referansında belgelenmiştir.
Sonraki
“Sonraki” başlıklı bölümArtık sayfaları şekillendirebilir, metni biçimlendirebilir ve yazı tiplerini bilinçli olarak seçebilirsiniz. Sonraki öğreticide sayfaya görseller yerleştirir ve içeriği tablolar ve listelerle düzenlersiniz.