Zum Inhalt springen
getnextpdf.com

Pro Edition

Legal — Detailreferenz

  • 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.

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.

Terminal-Fenster
composer require nextpdf/pro:^3
SymbolParameterStandardverhaltenRückgabeLöst aus oder scheitert mitHinweise
BatesNumberConfig::__constructstring $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.0Unveränderliche Darstellungs- und NummerierungskonfigurationBatesNumberConfigAlle elf Eigenschaften sind public und readonly.
BatesNumberConfig::formatNumberint $pageIndex (0-basiert)prefix + nullaufgefüllt (startNumber + pageIndex) + suffixstringEine Zahl, die breiter als padding ist, wird nicht abgeschnitten.
BatesNumberConfig::getRangeint $pageCountErster und letzter formatierter Stempel des Laufsarray{first: string, last: string}Setzt pageCount >= 1 voraus; ein Wert von 0 formatiert den Seitenindex -1.
BatesNumberer::__constructBatesNumberConfig $configBindet die KonfigurationBatesNumbererDie Klasse ist final und readonly.
BatesNumberer::generateint $pageCount, array $pageSizes, string $prefix = '', int $startFrom = 1Statischer Schnellpfad mit Standarddarstellunglist<string>Suffix, Position, Schrift, Deckkraft und Ebene bleiben bei ihren Standardwerten.
BatesNumberer::generateStreamsint $pageCount, list<array{width: float, height: float}> $pageSizesEin eigenständiges Fragment pro Seitelist<string>Löst nie aus; ein fehlender Größeneintrag fällt auf A4 Hochformat zurückDie Fragmentanzahl entspricht pageCount; überzählige Größeneinträge werden ignoriert.
BatesNumberer::buildPageStreamstring $text, float $pageWidth, float $pageHeightErstellt das Stempelfragment einer SeitestringIn q/Q eingeschlossen; Stempeltext für die Literal-String-Syntax maskiert.
BatesNumberer::getConfigGibt die gebundene Konfiguration zurückBatesNumberConfig
BatesPositionEnum-Fälle BottomLeft, BottomCenter, BottomRight, TopLeft, TopCenter, TopRightString-basiertes PositionsvokabularDie Hintergrundwerte sind kebab-case (zum Beispiel bottom-right).
BatesPosition::coordinatesfloat $pageWidth, float $pageHeight, float $textWidth, float $inset = 15.0X/Y für die Stempelgrundlinie im PDF-nativen Raumarray{x: float, y: float}Der Ursprung liegt unten links; obere Zeilen platzieren die Grundlinie inset von der Oberkante entfernt.
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,
): array
public function generateStreams(int $pageCount, array $pageSizes): array
public function buildPageStream(string $text, float $pageWidth, float $pageHeight): string
public function coordinates(
float $pageWidth,
float $pageHeight,
float $textWidth,
float $inset = 15.0,
): array

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.

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.

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.

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.

Eine opacity unter 1.0 wird als hellere Graustufenfüllung ausgegeben. Ein vollständig deckender Stempel wird schwarz gerendert.

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.

  • generateStreams löst bei einer pageSizes-Diskrepanz nie aus. Ein fehlender Eintrag fällt auf A4 Hochformat zurück, 595.276 mal 841.890 Punkte; überzählige Einträge werden ignoriert.
  • Die Fragmentanzahl entspricht stets pageCount.
  • Eine Zahl, die breiter als padding ist, wird nicht abgeschnitten; der Stempeltext wächst einfach.
  • getRange setzt pageCount >= 1 voraus. Ein Wert von 0 formatiert den Seitenindex -1, das heißt startNumber - 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.
VerhaltenReferenzStatus
Ebenenklammerung über die Operatoren für markierten Inhalt BDC/EMCISO 32000-2:2020 §8.11.3.2Teilweise — 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.

  • Fragmente sind reine String-Werte. Testen Sie sie durch direkten Byte-Vergleich; kein Dokumentkontext ist erforderlich.
  • buildPageStream ist öffentlich und isoliert unit-testbar: Übergeben Sie vorformatierten Text und explizite Seitenabmessungen.
  • Für die Fortsetzungsnummerierung über Produktionen hinweg leiten Sie startNumber aus dem vorherigen Lauf ab und zeichnen Sie die getRange-Ausgabe in Ihrem Produktionsprotokoll auf.
  • Ebenennamen werden auf Wortzeichen bereinigt. Bevorzugen Sie ASCII-Ebenennamen, damit der Name des markierten Inhalts in Inspektionswerkzeugen lesbar bleibt.

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.