Pro sürüm
Legal — Derinlemesine başvuru
Bir bakışta
“Bir bakışta” başlıklı bölüm- Sıralı Bates numarası damgalarını, sayfa başına PDF içerik akışı parçaları olarak üretir.
- Üç genel tür:
BatesNumberConfig(değişmez yapılandırma),BatesNumberer(motor),BatesPosition(altı durumlu konum enum’u). - Her parça kendi içinde tutarlıdır. Grafik durumu kaydedilir ve geri yüklenir, bu nedenle ekleme mevcut sayfa içeriğini asla bozmaz.
- Çıktı belirlenimcidir: bir parça; yapılandırmanın, damga metninin ve sayfa boyutunun saf bir fonksiyonudur.
- Modül hiçbir istisna oluşturmaz. Aralık dışı girdiler, belgelenen geri dönüş kurallarıyla bozulur.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu yetenek NextPDF Pro (nextpdf/pro) ile gelir ve Pro katmanı lisans zarfıyla etkinleşir. Bu yetkilendirmeye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve lisans edinin.
Özellik başına lisans bayrağı yoktur. Bu, bir Pro sürümü yeteneğidir.
composer require nextpdf/pro:^3Genel API yüzeyi
“Genel API yüzeyi” başlıklı bölüm| Sembol | Parametreler | Varsayılan davranış | Döndürür | Şununla fırlatır veya başarısız olur | Notlar |
|---|---|---|---|---|---|
BatesNumberConfig::__construct | string $prefix = '', string $suffix = '', int $startNumber = 1, int $padding = 5, BatesPosition $position = BatesPosition::BottomRight, float $fontSize = 9.0, string $fontFamily = 'Courier', float $opacity = 1.0, bool $useLayer = true, string $layerName = 'Bates Numbers', float $inset = 15.0 | Değişmez görünüm ve numaralandırma yapılandırması | BatesNumberConfig | — | On bir özelliğin tümü public ve readonly’dir. |
BatesNumberConfig::formatNumber | int $pageIndex (0 tabanlı) | prefix + sıfır dolgulu (startNumber + pageIndex) + suffix | string | — | padding değerinden geniş bir sayı kesilmez. |
BatesNumberConfig::getRange | int $pageCount | Çalıştırma için ilk ve son biçimlendirilmiş damgalar | array{first: string, last: string} | — | pageCount >= 1 varsayar; 0 sayımı, sayfa indeksi -1’i biçimlendirir. |
BatesNumberer::__construct | BatesNumberConfig $config | Yapılandırmayı bağlar | BatesNumberer | — | Sınıf final ve readonly’dir. |
BatesNumberer::generate | int $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1 | Varsayılan görünümle statik hızlı yol | list<string> | — | Sonek, konum, yazı tipi, opaklık ve katman varsayılanlarında kalır. |
BatesNumberer::generateStreams | int $pageCount, list<array{width: float, height: float}> $pageSizes | Sayfa başına kendi içinde tutarlı bir parça | list<string> | Asla fırlatmaz; eksik bir boyut girdisi A4 dikeye geri döner | Parça sayısı pageCount değerine eşittir; fazladan boyut girdileri yok sayılır. |
BatesNumberer::buildPageStream | string $text, float $pageWidth, float $pageHeight | Bir sayfanın damga parçasını oluşturur | string | — | q/Q ile sarılır; damga metni, değişmez dize sözdizimi için kaçışlanır. |
BatesNumberer::getConfig | — | Bağlı yapılandırmayı döndürür | BatesNumberConfig | — | — |
BatesPosition | enum durumları BottomLeft, BottomCenter, BottomRight, TopLeft, TopCenter, TopRight | Dize destekli konum sözcük dağarcığı | — | — | Destek değerleri kebab-case’dir (örneğin bottom-right). |
BatesPosition::coordinates | float $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0 | PDF’e özgü uzayda damga taban çizgisi için X/Y | array{x: float, y: float} | — | Başlangıç sol alttadır; üst satırlar taban çizgisini üst kenardan inset kadar yerleştirir. |
Giriş noktası imzaları
“Giriş noktası imzaları” başlıklı bölümpublic function __construct( public string $prefix = '', public string $suffix = '', public int $startNumber = 1, public int $padding = 5, public BatesPosition $position = BatesPosition::BottomRight, public float $fontSize = 9.0, public string $fontFamily = 'Courier', public float $opacity = 1.0, public bool $useLayer = true, public string $layerName = 'Bates Numbers', public float $inset = 15.0,) {}public static function generate( int $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1,): arraypublic function generateStreams(int $pageCount, array $pageSizes): arraypublic function buildPageStream(string $text, float $pageWidth, float $pageHeight): stringpublic function coordinates( float $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0,): arrayDavranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölümNumaralandırma
“Numaralandırma” başlıklı bölümBatesNumberConfig::formatNumber, startNumber + pageIndex değerini hesaplar, sayıyı padding basamağa kadar soldan sıfırlarla doldurur ve prefix ile suffix arasına sarar. getRange, bir sayfa sayısı için ilk ve son biçimlendirilmiş damgaları döndürür. Üretimler arasında sürekli numaralandırmayı zincirlemek için kullanın.
Parça anatomisi
“Parça anatomisi” başlıklı bölümHer parça sırasıyla şunlardan oluşur: bir grafik durumu kaydı (q), bir dolgu rengi operatörü, isteğe bağlı bir işaretli içerik başlangıcı, damgayı konumlandıran ve gösteren bir metin bloğu, isteğe bağlı bir işaretli içerik sonu ve bir geri yükleme (Q). Koordinatlar ve yazı tipi boyutu altı ondalık basamakla serileştirilir, bu nedenle özdeş girdiler özdeş baytlar üretir. Damga metni, değişmez dizeye girmeden önce \, ( ve ) karakterlerini kaçışlar.
Yazı tipi bağlama
“Yazı tipi bağlama” başlıklı bölümMetin bloğu, sabit yazı tipi kaynak adı /BatesFont’u seçer. Gömülü sayfanın kaynak sözlüğü, bu adı yapılandırılan fontFamily ile eşleşen bir yazı tipine eşlemelidir ve aile, yazı tipi kayıt defterinde çözümlenmelidir. Parça üretiminin kendisi kayıt defterine asla başvurmaz.
Yerleştirme
“Yerleştirme” başlıklı bölümBatesPosition::coordinates, damga taban çizgisini PDF’e özgü uzayda hesaplar; başlangıç sol alttadır. Orta ve sağ yerleştirme, tahmini bir metin genişliğini çıkarır: bayt uzunluğu çarpı 0.6 çarpı yazı tipi boyutu, bir tek aralıklı yaklaşım. Orantılı yazı tipleri ve çok baytlı metin, bu tahmini kaydırır. Sol yerleştirme buna bağlı değildir.
Katmanlar
“Katmanlar” başlıklı bölümuseLayer etkinken (varsayılan), parça, metni BDC ve EMC işaretli içerik operatörleri arasına alır. İşaretli içerik adı /Lyr_<name> biçimindedir; layerName değerinden, sözcük olmayan karakterler alt çizgilerle değiştirilerek türetilir. Bu paranteze alma yalnızca parça düzeyindedir: belgede karşılık gelen isteğe bağlı içerik grubunu kaydetmek — katmanı bir görüntüleyicide açılıp kapatılabilir yapan adım — gömen yazıcıya aittir.
Opaklık
“Opaklık” başlıklı bölüm1.0’ın altındaki bir opacity, daha açık bir gri tonlamalı dolgu olarak yayılır. Tamamen opak bir damga siyah olarak işlenir.
Kapsam
“Kapsam” başlıklı bölümMotor, Bates numaralandırmasını tam olarak yapılandırıldığı gibi uygular. Numaralandırılmış bir belgenin mahkemede kabul edilebilir veya hukuken geçerli olduğunu öne sürmez. Numaralandırma şeması, saklama ve delil işleme müşterinin sorumluluğunda kalır; işlemsel yeterlilik için hukuk ve uyumluluk ekiplerinize danışın.
Uç durumlar ve başarısızlık modları
“Uç durumlar ve başarısızlık modları” başlıklı bölümgenerateStreams, birpageSizesuyumsuzluğunda asla fırlatmaz. Eksik bir girdi A4 dikeye,595.276çarpı841.890puana geri döner; fazladan girdiler yok sayılır.- Parça sayısı her zaman
pageCountdeğerine eşittir. paddingdeğerinden geniş bir sayı kesilmez; damga metni yalnızca büyür.getRange,pageCount >= 1varsayar. 0 sayımı, sayfa indeksi -1’i, yanistartNumber - 1değerini biçimlendirir.- Opaklık, ExtGState saydamlığı değil, gri tonlamalı bir açma işlemidir; damganın altındaki örtüşen içerik harmanlanmaz.
\,(ve)dışındaki damga baytları kodlanmadan geçer. ASCII olmayan metin için kodlama doğruluğu, bağlı yazı tipine bağlıdır.- Bates işaretleri yer paylaşımlı içeriktir. Sayfadaki hiçbir şeyi maskelemez, kaldırmaz veya şifrelemez.
- Modül hiçbir kriptografik işlem gerçekleştirmez; FIPS modu davranışını değiştirmez.
Uygunluk
“Uygunluk” başlıklı bölüm| Davranış | Başvuru | Durum |
|---|---|---|
BDC/EMC işaretli içerik operatörleriyle katman paranteze alma | ISO 32000-2:2020 §8.11.3.2 | Kısmi — parça paranteze almayı yayar; isteğe bağlı içerik grubu kaydı, gömen yazıcının adımıdır |
Bu satırlar, modülün üzerine kurulduğu belirtimi kaydeder, bir sertifikayı değil; NextPDF hiçbir uygunluk sertifikasına sahip değildir. Tablo ayrıca hukuki geçerlilik veya delil yeterliliği beyanı da değildir.
Geliştirme notları
“Geliştirme notları” başlıklı bölüm- Parçalar saf dize değerleridir. Bunları doğrudan bayt karşılaştırmasıyla test edin; hiçbir belge bağlamı gerekmez.
buildPageStreampublic’tir ve izole olarak birim testine uygundur: önceden biçimlendirilmiş metin ve açık sayfa boyutları geçirin.- Üretimler arasında sürekli numaralandırma için,
startNumberdeğerini önceki çalıştırmadan tohumlayın vegetRangeçıktısını üretim günlüğünüze kaydedin. - Katman adları, sözcük karakterlerine göre temizlenir. İşaretli içerik adının inceleme araçlarında okunabilir kalması için ASCII katman adlarını tercih edin.
Yayımlama sınırı
“Yayımlama sınırı” başlıklı bölümBu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.