Pro Edition
Legal — Detailreferenz
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“- Erzeugt fortlaufende Bates-Nummernstempel als seitenweise PDF-Content-Stream-Fragmente.
- Drei öffentliche Typen:
BatesNumberConfig(unveränderliche Konfiguration),BatesNumberer(Engine),BatesPosition(Positions-Enum mit sechs Fällen). - Jedes Fragment ist eigenständig. Der Grafikzustand wird gespeichert und wiederhergestellt, sodass das Anhängen vorhandene Seiteninhalte nie stört.
- Die Ausgabe ist deterministisch: Ein Fragment ist eine reine Funktion aus Konfiguration, Stempeltext und Seitengröße.
- Das Modul löst keine Ausnahmen aus. Werte außerhalb des zulässigen Bereichs werden gemäß den dokumentierten Fallback-Regeln abgestuft behandelt.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Fähigkeit ist in NextPDF Pro (nextpdf/pro) enthalten und wird mit einer Lizenzhülle der Pro-Stufe aktiviert. Eine Bereitstellung ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und Lizenz erwerben.
Es gibt kein Lizenz-Flag pro Funktion. Dies ist eine Fähigkeit der Pro-Edition.
composer require nextpdf/pro:^3Öffentliche API-Oberfläche
Abschnitt betitelt „Öffentliche API-Oberfläche“| Symbol | Parameter | Standardverhalten | Rückgabe | Löst aus oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
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 | Unveränderliche Darstellungs- und Nummerierungskonfiguration | BatesNumberConfig | — | Alle elf Eigenschaften sind public und readonly. |
BatesNumberConfig::formatNumber | int $pageIndex (0-basiert) | prefix + nullaufgefüllt (startNumber + pageIndex) + suffix | string | — | Eine Zahl, die breiter als padding ist, wird nicht abgeschnitten. |
BatesNumberConfig::getRange | int $pageCount | Erster und letzter formatierter Stempel des Laufs | array{first: string, last: string} | — | Setzt pageCount >= 1 voraus; ein Wert von 0 formatiert den Seitenindex -1. |
BatesNumberer::__construct | BatesNumberConfig $config | Bindet die Konfiguration | BatesNumberer | — | Die Klasse ist final und readonly. |
BatesNumberer::generate | int $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1 | Statischer Schnellpfad mit Standarddarstellung | list<string> | — | Suffix, Position, Schrift, Deckkraft und Ebene bleiben bei ihren Standardwerten. |
BatesNumberer::generateStreams | int $pageCount, list<array{width: float, height: float}> $pageSizes | Ein eigenständiges Fragment pro Seite | list<string> | Löst nie aus; ein fehlender Größeneintrag fällt auf A4 Hochformat zurück | Die Fragmentanzahl entspricht pageCount; überzählige Größeneinträge werden ignoriert. |
BatesNumberer::buildPageStream | string $text, float $pageWidth, float $pageHeight | Erstellt das Stempelfragment einer Seite | string | — | In q/Q eingeschlossen; Stempeltext für die Literal-String-Syntax maskiert. |
BatesNumberer::getConfig | — | Gibt die gebundene Konfiguration zurück | BatesNumberConfig | — | — |
BatesPosition | Enum-Fälle BottomLeft, BottomCenter, BottomRight, TopLeft, TopCenter, TopRight | String-basiertes Positionsvokabular | — | — | Die Hintergrundwerte sind kebab-case (zum Beispiel bottom-right). |
BatesPosition::coordinates | float $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0 | X/Y für die Stempelgrundlinie im PDF-nativen Raum | array{x: float, y: float} | — | Der Ursprung liegt unten links; obere Zeilen platzieren die Grundlinie inset von der Oberkante entfernt. |
Einstiegspunkt-Signaturen
Abschnitt betitelt „Einstiegspunkt-Signaturen“public 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,): arrayVerhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“Nummerierung
Abschnitt betitelt „Nummerierung“BatesNumberConfig::formatNumber berechnet startNumber + pageIndex, füllt die Zahl links mit Nullen auf padding Stellen auf und umschließt sie mit prefix und suffix. getRange gibt den ersten und letzten formatierten Stempel für eine Seitenzahl zurück. Verwenden Sie es, um die Fortsetzungsnummerierung über Produktionen hinweg zu verketten.
Fragmentaufbau
Abschnitt betitelt „Fragmentaufbau“Jedes Fragment besteht der Reihe nach aus: einer Speicherung des Grafikzustands (q), einem Füllfarben-Operator, einem optionalen Beginn markierten Inhalts, einem Textblock, der den Stempel positioniert und anzeigt, einem optionalen Ende markierten Inhalts und einer Wiederherstellung (Q). Koordinaten und Schriftgröße werden mit sechs Nachkommastellen serialisiert, sodass identische Eingaben identische Bytes erzeugen. Der Stempeltext maskiert \, ( und ), bevor er in den Literal-String eintritt.
Schriftbindung
Abschnitt betitelt „Schriftbindung“Der Textblock wählt den festen Schriftressourcennamen /BatesFont. Das Ressourcenwörterbuch der einbettenden Seite muss diesen Namen einer Schrift zuordnen, die zur konfigurierten fontFamily passt, und die Familie muss sich in der Schriftregistrierung auflösen lassen. Die Fragmenterzeugung selbst greift nie auf die Registrierung zu.
Platzierung
Abschnitt betitelt „Platzierung“BatesPosition::coordinates berechnet die Stempelgrundlinie im PDF-nativen Raum; der Ursprung liegt unten links. Zentrierte und rechtsbündige Platzierung subtrahiert eine geschätzte Textbreite: Bytelänge mal 0,6 mal Schriftgröße, eine Monospace-Näherung. Proportionalschriften und Mehrbyte-Text verschieben diese Schätzung. Linksbündige Platzierung hängt nicht davon ab.
Bei aktiviertem useLayer (der Standard) klammert das Fragment den Text zwischen die Operatoren für markierten Inhalt BDC und EMC. Der Name des markierten Inhalts hat die Form /Lyr_<name>, abgeleitet aus layerName, wobei Nicht-Wortzeichen durch Unterstriche ersetzt werden. Die Klammerung erfolgt nur auf Fragmentebene: Die Registrierung der zugehörigen optionalen Inhaltsgruppe im Dokument — der Schritt, der die Ebene in einem Viewer umschaltbar macht — obliegt dem einbettenden Writer.
Deckkraft
Abschnitt betitelt „Deckkraft“Eine opacity unter 1.0 wird als hellere Graustufenfüllung ausgegeben. Ein vollständig deckender Stempel wird schwarz gerendert.
Geltungsbereich
Abschnitt betitelt „Geltungsbereich“Die Engine wendet die Bates-Nummerierung genau wie konfiguriert an. Sie sichert nicht zu, dass ein nummeriertes Dokument gerichtlich zulässig oder rechtsgültig ist. Nummerierungsschema, Aufbewahrung und beweisrechtliche Handhabung bleiben in der Verantwortung des Kunden; ziehen Sie Ihre Rechts- und Compliance-Teams für die verfahrensrechtliche Hinlänglichkeit hinzu.
Grenzfälle & Fehlerverhalten
Abschnitt betitelt „Grenzfälle & Fehlerverhalten“generateStreamslöst bei einerpageSizes-Diskrepanz nie aus. Ein fehlender Eintrag fällt auf A4 Hochformat zurück,595.276mal841.890Punkte; überzählige Einträge werden ignoriert.- Die Fragmentanzahl entspricht stets
pageCount. - Eine Zahl, die breiter als
paddingist, wird nicht abgeschnitten; der Stempeltext wächst einfach. getRangesetztpageCount >= 1voraus. Ein Wert von 0 formatiert den Seitenindex -1, das heißtstartNumber - 1.- Deckkraft ist eine Graustufen-Aufhellung, keine ExtGState-Transparenz; überlagerter Inhalt unter dem Stempel wird nicht gemischt.
- Andere Stempel-Bytes als
\,(und)werden unkodiert durchgereicht. Die Kodierungskorrektheit für Nicht-ASCII-Text hängt von der gebundenen Schrift ab. - Bates-Marken sind Overlay-Inhalt. Sie schwärzen, entfernen oder verschlüsseln nichts auf der Seite.
- Das Modul führt keine kryptografischen Operationen durch; der FIPS-Modus ändert sein Verhalten nicht.
Konformität
Abschnitt betitelt „Konformität“| Verhalten | Referenz | Status |
|---|---|---|
Ebenenklammerung über die Operatoren für markierten Inhalt BDC/EMC | ISO 32000-2:2020 §8.11.3.2 | Teilweise — das Fragment gibt die Klammerung aus; die Registrierung der optionalen Inhaltsgruppe ist der Schritt des einbettenden Writers |
Diese Zeilen erfassen die Spezifikation, gegen die das Modul entwickelt wurde, keine Zertifizierung; NextPDF besitzt keine Konformitätszertifizierung. Die Tabelle ist auch keine Aussage über Rechtsgültigkeit oder beweisrechtliche Hinlänglichkeit.
Entwicklungshinweise
Abschnitt betitelt „Entwicklungshinweise“- Fragmente sind reine String-Werte. Testen Sie sie durch direkten Byte-Vergleich; kein Dokumentkontext ist erforderlich.
buildPageStreamist öffentlich und isoliert unit-testbar: Übergeben Sie vorformatierten Text und explizite Seitenabmessungen.- Für die Fortsetzungsnummerierung über Produktionen hinweg leiten Sie
startNumberaus dem vorherigen Lauf ab und zeichnen Sie diegetRange-Ausgabe in Ihrem Produktionsprotokoll auf. - Ebenennamen werden auf Wortzeichen bereinigt. Bevorzugen Sie ASCII-Ebenennamen, damit der Name des markierten Inhalts in Inspektionswerkzeugen lesbar bleibt.
Veröffentlichungsgrenze
Abschnitt betitelt „Veröffentlichungsgrenze“Diese Seite dokumentiert ausschließlich das extern beobachtbare Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Geltungsbereichs.