İçeriğe geç
getnextpdf.com

Sabit liste referansı

Birçok NextPDF yazım yöntemi, yalın bir dize ya da tamsayı yerine türlenmiş bir enum alır. Sabit liste, sözleşmedir: bağımsız değişkeni sabit, geçerli bir kümeyle sınırlar ve IDE ile PHPStan, bunun dışındaki her değeri reddeder. Bu sayfa, genel Document ve Config API’si aracılığıyla ayarladığınız (veya aldığınız) sabit listeler — artı bir motor düzeyi renk sabit listesi (RenderingIntent) — için izin verilen değer aramasıdır; bu sonuncusu, durumları genel renk sözleşmesinin parçası olduğu için dahil edilmiştir ve göründüğü yerde motor düzeyi olarak işaretlenmiştir.

Bu, yapılandırma referansının tamamlayıcısıdır. Config nesnesi size hangi düğmeyi çevireceğinizi söylerken, bu sayfa o düğmenin hangi değerleri kabul ettiğini söyler. Her giriş; sabit listenin tam nitelikli sınıf adını (FQCN), destek türünü, kaynaktan kopyalanan tam durum listesini ve onu alan genel yöntemi listeler.

Derin motor içi sabit listeler (HTML/CSS yerleşimi, soyut sözdizimi ağacı, CLI, şekillendirici iç bileşenleri) kasıtlı olarak hariç tutulmuştur — bunları asla ayarlamazsınız. Aşağıdakilerin neredeyse tamamı, genel API aracılığıyla ilettiğiniz bir değerdir; tek istisna olan RenderingIntent, genel ayarlayıcısı olmayan bir motor düzeyi renk sabit listesidir ve eksiksizlik için listelenip göründüğü yerde böyle etiketlenmiştir.

PHP sabit listeleri iki biçimde gelir ve biçim, değeri nasıl yazdığınızı değiştirir:

  • Bir destekli sabit liste (enum X: string veya enum X: int), her durum için skaler bir value taşır; böylece X::from('...') / $case->value üzerinden gidip gelir. Buradaki sabit listelerin çoğu desteklidir.
  • Bir saf sabit listenin (destek türü olmayan enum X) durumları vardır ama skaler değeri yoktur; ona her zaman durum üzerinden başvurursunuz (X::SomeCase). Yalnızca UnderlineStyle saftır.

Her iki biçimde de durumun kendisini geçirirsiniz — örneğin $pdf->addPage(orientation: Orientation::Landscape). Destek türü yalnızca seçimi serileştirmeniz veya yapılandırmadan geri okumanız gerektiğinde önem taşır.

Dikey veya yatay sayfa geometrisi. Bir sayfa eklerken geçirilir; motor, eşleştirmek için genişlik ile yüksekliği takas eder.

ÖzellikDeğer
FQCNNextPDF\Contracts\Orientation
Destekstring
Şu yolla ayarlanırDocument::addPage(?PageSize $size = null, Orientation $orientation = Orientation::Portrait)
DurumDestek değeri
Portrait'P'
Landscape'L'
use NextPDF\Contracts\Orientation;
use NextPDF\ValueObjects\PageSize;
$pdf->addPage(PageSize::a4(), Orientation::Landscape);

Çizilmiş bir açık yolun nasıl sonlandığı. ISO 32000-2:2020 §8.4.3.3.

ÖzellikDeğer
FQCNNextPDF\Graphics\LineCap
Destekint
Şu yolla ayarlanırLineStyle yapılandırma nesnesi (new LineStyle(cap: ...)), Document::setLineStyle(LineStyle $style) ile uygulanır
DurumDestek değeriAnlam
Butt0Uç noktada kare biten, çıkıntısız.
Round1Uç noktada yarım daire yay.
Square2Uç noktanın ötesine çizgi genişliğinin yarısı kadar uzanan kare çıkıntı.

İki çizilmiş parçanın bir köşede nasıl birleştiği. ISO 32000-2:2020 §8.4.3.4.

ÖzellikDeğer
FQCNNextPDF\Graphics\LineJoin
Destekint
Şu yolla ayarlanırLineStyle yapılandırma nesnesi (new LineStyle(join: ...)), Document::setLineStyle(LineStyle $style) ile uygulanır
DurumDestek değeriAnlam
Miter0Köşe çıtası sınırına kadar uzatılmış keskin köşe.
Round1Dış kenarları birleştiren dairesel yay.
Bevel2Dış kenarları birleştiren çapraz.

LineCap ve LineJoin doğrudan bir Document yöntemine geçirilmez — bunlar, değişmez NextPDF\Graphics\LineStyle değer nesnesinin alanlarıdır; siz de bu nesneyi setLineStyle()’a verirsiniz:

use NextPDF\Graphics\{LineStyle, LineCap, LineJoin};
$style = new LineStyle(width: 1.5, cap: LineCap::Round, join: LineJoin::Bevel);
$pdf->setLineStyle($style);
$pdf->line(20, 20, 120, 20);

Sonraki çizime uygulanan saydamlık karıştırma işlevi. İlk on iki durum ayrılabilir; son dördü ayrılamaz HSL kipleridir. ISO 32000-2:2020 §11.3.5.

ÖzellikDeğer
FQCNNextPDF\Graphics\BlendMode
Destekstring
Şu yolla ayarlanırDocument::setAlpha(float $alpha, BlendMode $mode = BlendMode::Normal)
DurumDestek değeriDurumDestek değeri
Normal'Normal'HardLight'HardLight'
Multiply'Multiply'SoftLight'SoftLight'
Screen'Screen'Difference'Difference'
Overlay'Overlay'Exclusion'Exclusion'
Darken'Darken'Hue'Hue'
Lighten'Lighten'Saturation'Saturation'
ColorDodge'ColorDodge'Color'Color'
ColorBurn'ColorBurn'Luminosity'Luminosity'
use NextPDF\Graphics\BlendMode;
$pdf->setAlpha(0.6, BlendMode::Multiply);
$pdf->rect(20, 20, 80, 40, 'F');

Renk dönüşümü sırasında gamut dışı renklerin nasıl yeniden eşlendiği. ri işleci olarak yayılır. ISO 32000-2:2020 §8.6.5.8 (Tablo 71).

Bu sayfadaki diğer sabit listelerin aksine, RenderingIntent’in genel bir Document veya Config ayarlayıcısı yoktur — bu, bir motor düzeyi sabit listedir. Doğrudan iç çizim motorunda (DrawingEngine::setRenderingIntent()) uygulanır; bu da ri işlecini geçerli içerik akışına yayar. Durumları genel renk sözleşmesinin parçası olduğu için onu eksiksizlik adına burada listeleriz; ancak bu sayfanın geri kalanının belgelediği geliştiriciye dönük yazım API’sinin parçası değildir; çizim motorunu, ona karşı program yazdığınız giriş noktası değil, bir iç sınıf olarak görün.

ÖzellikDeğer
FQCNNextPDF\Graphics\RenderingIntent
Destekstring
Şu yolla ayarlanırYalnızca motor düzeyi — iç çizim motorunda uygulanır; genel Document/Config ayarlayıcısı yoktur.
DurumDestek değeriAnlam
RelativeColorimetric'RelativeColorimetric'Gamut içi renkleri korur; gamut dışını kırpar.
AbsoluteColorimetric'AbsoluteColorimetric'Kâğıt beyazı dahil, kolorimetrik değerleri tam olarak korur.
Saturation'Saturation'Ton/parlaklık pahasına canlı doygunluğu korur.
Perceptual'Perceptual'Görsel ilişkileri korur; gamut sıkıştırmasını yumuşatır.

Belgenin /OutputIntent değerinde bildirilen çalışma alanı renk profili. Varsayılan DeviceRGB, eski “ek OutputIntent yok” davranışını korur; başka herhangi bir durum seçmek, yazıcının paketlenmiş ICC profiliyle bir /GTS_PDFX OutputIntent yaymasını sağlar (ISO 32000-2:2020 §14.11.5). Bu, çağrı başına bir yöntem değil, bir Config değeridir — Document’a geçirdiğiniz yapılandırma nesnesinde ayarlayın.

ÖzellikDeğer
FQCNNextPDF\Core\OutputColorProfile
Destekstring
Şu yolla ayarlanırConfig::withOutputColorProfile(OutputColorProfile $profile) (Config kurucusunun $outputColorProfile parametresi)
DurumDestek değeriNotlar
DeviceRGB'device-rgb'Varsayılan. Ek bir OutputIntent yayılmaz.
Srgb'srgb'Açık sRGB OutputIntent (IEC 61966-2-1). Geniş gamut değil.
DisplayP3'display-p3'Display-P3 geniş gamut (D65).
Rec2020'rec2020'ITU-R BT.2020 / Rec.2020 geniş gamut.
A98RGB'a98-rgb'Adobe RGB 1998.
ProphotoRGB'prophoto-rgb'ProPhoto RGB / ROMM RGB (D50).
use NextPDF\Core\{Config, OutputColorProfile};
$config = (new Config())->withOutputColorProfile(OutputColorProfile::DisplayP3);

Gliflerin doldurulup doldurulmadığı, çizilip çizilmediği, kırpılıp kırpılmadığı ya da görünmez olarak işlenip işlenmediği (görünmez kip, aranabilir OCR katmanlarının temelidir). ISO 32000-2:2020 §9.3.6, Tablo 104.

ÖzellikDeğer
FQCNNextPDF\Content\TextRenderingMode
Destekint
Şu yolla ayarlanırDocument::setTextRenderingMode(TextRenderingMode $mode)
DurumDestek değeriAnlam
Fill0Glifleri doldur.
Stroke1Glif anahatlarını çiz.
FillStroke2Önce doldur, sonra çiz.
Invisible3Görünmez işle (aranabilir OCR katmanları).
FillClip4Doldur ve kırpma yoluna ekle.
StrokeClip5Çiz ve kırpma yoluna ekle.
FillStrokeClip6Doldur, çiz ve kırp.
Clip7Yalnızca kırpma yoluna ekle (görünür işleme yok).

Bir altı çizili süslemesinin nasıl çizildiği. Buradaki tek saf sabit liste budur; bu nedenle ona her zaman durum üzerinden başvurursunuz.

ÖzellikDeğer
FQCNNextPDF\Contracts\UnderlineStyle
Desteksaf (destek değeri yok)
Şu yolla ayarlanırDocument::setUnderlineStyle(UnderlineStyle $style)
DurumAnlam
RectFillTaban çizgisinin altında doldurulmuş dikdörtgen (TCPDF uyumlu varsayılan).
StrokeLineTaban çizgisinin altında çizilmiş çizgi (anlamsal çizgi çizimi).
use NextPDF\Content\TextRenderingMode;
use NextPDF\Contracts\UnderlineStyle;
$pdf->setTextRenderingMode(TextRenderingMode::Invisible); // OCR text layer
$pdf->setUnderlineStyle(UnderlineStyle::StrokeLine);

Belge düzeyi uygunluk sözleşmesi: yazıcının hangi ISO bölümüne uyması gerektiği ve yapısal etiketlemenin gerekli olup olmadığı. Varsayılan Plain, kısıtlamasız PDF 2.0 çıktısıdır. ISO 14289-2:2024 (PDF/UA-2) ve ISO 19005 PDF/A bölümleri.

ÖzellikDeğer
FQCNNextPDF\Conformance\ConformanceMode
Destekstring
Şu yolla ayarlanırDocument::setConformanceMode(ConformanceMode $mode) (düşük düzeyli kaçış kapısı; Core’da PDF/UA-2 için enableTaggedPdf()’i, PDF/A için enablePdfA()’yı — yalnızca Premium — tercih edin)
DurumDestek değeriSözleşme
Plain'plain'PDF 2.0, kısıtlamasız (varsayılan).
PdfUa1'pdfua1'ISO 14289-1 (Etiketli PDF/UA-1).
PdfUa2'pdfua2'ISO 14289-2:2024 (Etiketli PDF/UA-2).
PdfA2'pdfa2'ISO 19005-2 (PDF/A-2).
PdfA3'pdfa3'ISO 19005-3 (PDF/A-3 profil ayırıcısı).
PdfA3b'pdfa3b'ISO 19005-3 PDF/A-3b (Basic).
PdfA3u'pdfa3u'ISO 19005-3 PDF/A-3u (Unicode olarak çıkarılabilir).
PdfA4'pdfa4'ISO 19005-4:2020 (PDF/A-4 profil ayırıcısı).
PdfA4e'pdfa4e'ISO 19005-4:2020 PDF/A-4e (Engineering).
PdfA4f'pdfa4f'ISO 19005-4:2020 PDF/A-4f (Dosya ekleri).

Sabit liste, yüklem yardımcıları taşır — isTagged(), isAccessibility(), isArchival() ve pdfaPart() — böylece yazıcı tarafı kapıları, kipi yeniden türetmek yerine ona göre dallanır.

Yalnızca-Core bir yapının gerçekte hangi durumları kullanabileceği. enum türü her durumu listeler, ama bir durumu listelemek, o uygunluğu Core’dan üretebilmekle aynı şey değildir:

  • Core (ek paket yok): Plain, PdfUa1 ve PdfUa2. Etiketli PDF / PDF/UA yolu Core’a yerleşiktir — enableTaggedPdf(), PDF/UA yazım yolunu seçer (varsayılan olarak PdfUa2) ve hiçbir lisans denetimi olmadan yapı ağacını bağlar.
  • Yalnızca-Premium: her PDF/A durumu (PdfA2, PdfA3, PdfA3b, PdfA3u, PdfA4, PdfA4e, PdfA4f). Gerçek PDF/A çıktısı, bir Premium katmanı özelliği olan enablePdfA() tarafından üretilir (ADR-011): nextpdf/pro paketini gerektirir ve o paket yokken bir InvalidConfigException ile kapalı biçimde başarısız olur (“install the nextpdf/pro package”).

setConformanceMode(), yalnızca ayırıcı alanını yazan düşük düzeyli bir kaçış kapısıdır — PDF/A makinesini kurmaz. Bu nedenle yalnızca-Core bir yapıda onun aracılığıyla bir PdfA* durumu ayarlamak, belgeye enablePdfA()’nın sağladığı arşivsel garantileri vermeden onu etiketler; bu yüzden yalnızca-Premium kiplere yalnızca-Core bir yapıda güvenilmemelidir. Gerçek uygunluk yolları için enableTaggedPdf() / enablePdfA() kullanın ve bir PDF/A teslimi gerektiğinde Premium pakete uzanın.

use NextPDF\Conformance\ConformanceMode;
$pdf->setConformanceMode(ConformanceMode::PdfUa2);

Gömülü, ilişkili bir dosya için /AFRelationship değeri. Uygun olmayan bir değer, PDF/A-3 ve PDF/A-4 doğrulamasında başarısız olur; bu nedenle sabit liste, onu ayarlamanın güvenli yoludur. ISO 32000-2:2020 §14.13.5 (Tablo 401).

ÖzellikDeğer
FQCNNextPDF\Navigation\AFRelationship
Destekstring
Şu yolla ayarlanırDocument::embedFile(string $path, string $description = '', AFRelationship|string $afRelationship = AFRelationship::Unspecified)
DurumDestek değeriKullanım
Source'Source'PDF’in üretildiği kaynak belge.
Data'Data'PDF’in türetildiği ham veri (ör. Factur-X / ZUGFeRD XML).
Alternative'Alternative'Alternatif sunum (braille, altyazılar, SVG).
Supplement'Supplement'Tamamlayıcı malzeme.
EncryptedPayload'EncryptedPayload'PDF’in sardığı opak, şifreli bir blob.
FormData'FormData'Form verisi (XFDF, FDF, XML).
Schema'Schema'Bir Data dosyasını tanımlayan şema (XSD, JSON Schema). PDF 2.0.
Unspecified'Unspecified'İlişki belirtilmemiş (varsayılan).

embedFile(), ister sabit liste durumunu ister onun dize değişmezini (başında eğik çizgi olsun ya da olmasın) kabul eder; bu nedenle AFRelationship::Data ve '/Data' eşdeğerdir. Durumu geçirmek, tür güvenli seçimdir.

use NextPDF\Navigation\AFRelationship;
// e-invoice payload: declare the XML as the source data
$pdf->embedFile('invoice.xml', 'Factur-X invoice data', AFRelationship::Data);