Enterprise Edition
Document E-Filing — Ausführliche Referenz
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“EFilingOptimizerbereitet ein PDF in einem Durchlauf mit fester Reihenfolge für die elektronische Gerichtseinreichung auf: bereinigen, linearisieren, größenbasiert aufteilen.EFilingProfilekodiert Jurisdiktions-Einschränkungen. Eingebaute Factories decken US PACER, EU e-Justice und Taiwan Judicial Yuan ab.SizeAwareSplittererzwingt eine Byte-Obergrenze pro Segment mit Prüfen-dann-Korrigieren-Neuaufteilung.- Die Ausgabe ist ein Zustellartefakt. Es darf keine Signier- oder Archivierungspipeline erneut durchlaufen.
- Das Modul führt keine kryptografischen Operationen durch und stellt keine ausgehenden Netzwerkaufrufe her.
Verfügbarkeit & Lizenzierung
Abschnitt betitelt „Verfügbarkeit & Lizenzierung“Diese Fähigkeit wird mit NextPDF Enterprise (nextpdf/enterprise) ausgeliefert und aktiviert sich mit einem Lizenz-Envelope der Enterprise-Stufe. Ein Deployment ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und Lizenz erwerben.
Die Paketgrenze von nextpdf/enterprise schränkt den Zugang zu dieser Oberfläche ein; es gibt keinen separaten funktionsbezogenen Fähigkeitscode. Keine Core- oder Pro-Edition stellt einen E-Filing-Optimierer bereit.
Öffentliche API-Oberfläche
Abschnitt betitelt „Öffentliche API-Oberfläche“composer require nextpdf/enterprise:^3| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
EFilingOptimizer::optimize() | string $pdfData, ?EFilingProfile $profile = null | Profil fällt standardmäßig auf EFilingProfile::pacer() zurück; führt Bereinigung, Linearisierung, größenbasierte Aufteilung in fester Reihenfolge aus | EFilingResult | InvalidArgumentException aus dem Aufteilungsschritt, wenn eine über dem Limit liegende Eingabe kein gültiges PDF ist; Fehler bei Bereinigung und Linearisierung werden zu Warnungen abgestuft | Ausgabe ist ein Zustellartefakt |
EFilingProfile::__construct() | $name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = true | Unveränderliches Jurisdiktionsprofil | EFilingProfile | Wirft nicht | Benutzerdefinierte Obergrenzen für Portale ohne eingebaute Factory |
EFilingProfile::pacer() | keine | 25-MiB-Obergrenze, Bildqualität 75 | EFilingProfile | Wirft nicht | US PACER |
EFilingProfile::euJustice() | keine | 10-MiB-Obergrenze, Bildqualität 70 | EFilingProfile | Wirft nicht | EU e-Justice Portal |
EFilingProfile::taiwan() | keine | 10-MiB-Obergrenze, Bildqualität 70 | EFilingProfile | Wirft nicht | Taiwan Judicial Yuan |
SizeAwareSplitter::splitByMaxSize() | string $pdfData, int $maxBytes | Einzelnes Segment, wenn die Eingabe passt; andernfalls schätzen, prüfen, neu aufteilen | list<EFilingSegment> | InvalidArgumentException, wenn einer über dem Limit liegenden Eingabe ein %PDF-Header fehlt | Eine Eingabe unter dem Limit wird ohne Validierung als ein Segment zurückgegeben |
EFilingResult::isSplit() | keine | true, wenn mehr als ein Segment vorhanden ist | bool | Wirft nicht | — |
EFilingResult::segmentCount() | keine | Gesamtzahl der Segmente | int | Wirft nicht | — |
EFilingResult::compressionRatio() | keine | optimizedTotalSize / originalSize | float | Wirft nicht; 0.0 bei leerer Ursprungseingabe | Niedriger ist besser |
EFilingSegment | $pdfData, $pageRange, $sizeBytes, $segmentIndex | Unveränderliches Ausgabesegment | Wertobjekt | Wirft nicht | Seitenbereichs-Zeichenkette wie 1-25 oder all |
public function optimize(string $pdfData, ?EFilingProfile $profile = null): EFilingResultpublic function __construct( public string $name, public int $maxFileSizeBytes = 26_214_400, public bool $flattenForms = true, public bool $removeJavaScript = true, public int $imageQuality = 75, public bool $linearize = true, public bool $compressObjectStreams = true,) {}
public static function pacer(): selfpublic static function euJustice(): selfpublic static function taiwan(): selfpublic function splitByMaxSize(string $pdfData, int $maxBytes): arraypublic function __construct( public array $segments, public int $originalSize, public int $optimizedTotalSize, public array $optimizations = [], public array $warnings = [],) {}
public function isSplit(): boolpublic function segmentCount(): intpublic function compressionRatio(): floatVerhaltensvertrag
Abschnitt betitelt „Verhaltensvertrag“EFilingOptimizer::optimize() führt eine Pipeline mit fester Reihenfolge gegen die Eingabebytes aus. Schritt eins entfernt aktive Inhalte, wenn removeJavaScript gesetzt ist. Er delegiert an die Content-Disarm-and-Reconstruction-Engine mit einer einreichungsspezifischen Richtlinie: JavaScript, benanntes JavaScript, Launch-Aktionen, Formularübermittlung und Datenimport-Aktionen werden entfernt; URI-Aktionen bleiben erhalten (allowUriActions), da Einreichungen legitime Links enthalten können; inkrementelle Aktualisierungen werden in eine Revision zusammengeführt (flattenIncrementalUpdates). Schritt zwei linearisiert die bereinigten Bytes über den Core-NextPDF\Writer\Linearizer, wenn linearize gesetzt ist. Schritt drei erzwingt das maxFileSizeBytes des Profils über SizeAwareSplitter.
Der Splitter schätzt die Seiten pro Segment aus der durchschnittlichen Seitengröße, teilt auf und prüft anschließend jedes erzeugte Segment gegen das Limit. Jedes über dem Limit liegende Segment, das noch mehr als eine Seite umfasst, wird rekursiv neu aufgeteilt, wobei sein eigener Seitenumfang mit jedem Durchlauf halbiert wird, bis jedes Kind passt oder eine einzelne Seite ist. Eine begrenzte Neuaufteilungstiefe schützt vor pathologischer Nicht-Konvergenz. Die Ausgabeindizes werden neu normalisiert, damit sie zusammenhängend und nullbasiert bleiben.
optimize() verbraucht drei Profilfelder: maxFileSizeBytes, removeJavaScript und linearize. Die Felder flattenForms, imageQuality und compressObjectStreams sind deklarierte Profil-Einschränkungen, auf die optimize() in 3.1.0 nicht reagiert.
Die E-Filing-Ausgabe ist ein Zustellartefakt, kein Zustand im Dokumentlebenszyklus. Ein optimiertes oder aufgeteiltes PDF ist endgültig für die Übermittlung und darf keine Signier- oder Archivierungspipeline erneut durchlaufen; eine erneute Verarbeitung würde Hash-Ketten und die beweistechnische Integrität brechen.
Dieses Modul bereitet Formate für die elektronische Einreichung bei Gericht / Behörden gemäß Konfiguration auf. Es garantiert keine Annahme durch ein Gericht, Register, Tribunal oder Einreichungsportal. Die eingebauten Profil-Obergrenzen kodieren der Bequemlichkeit halber häufig veröffentlichte Einschränkungen, keinen Live-Feed der einzelnen Portale; Portalregeln variieren je nach Jurisdiktion und ändern sich. Ihre Überprüfung anhand der aktuellen Regeln des Zielregisters liegt in der Verantwortung des Einreichenden.
Die Verarbeitung erfolgt in-process und lokal. Der Transport zu einem Gericht, Register oder Einreichungsportal liegt außerhalb dieses Moduls.
Randfälle & Fehlermodi
Abschnitt betitelt „Randfälle & Fehlermodi“- Eingabe auf oder unter dem Limit: ein Segment mit Seitenbereich
all; der Aufteilungsschritt lässt die Bytes unverändert. - Bereinigungsablehnung (zum Beispiel eine nicht parsbare Eingabe): die Warnung
CDR sanitization rejected: <reason>wird erfasst und die Pipeline fährt mit den ursprünglichen Bytes fort. - Bereinigungsdurchlauf ohne gefundene Bedrohungen: die Bytes werden dennoch durch das neu aufgebaute PDF ersetzt, und ein Optimierungseintrag hält den sauberen Durchlauf fest.
- Linearisierungsfehler: die Warnung
Linearization skipped: <message>wird erfasst und die Pipeline fährt mit nicht linearisierten Bytes fort. - Einzelne Seite über dem Limit: tatsächlich unteilbar, wird unverändert als ein über dem Limit liegendes Segment zurückgegeben. Für diesen Fall wird keine Warnung erfasst; vergleichen Sie das
sizeBytesjedes Segments vor der Einreichung mit der Profil-Obergrenze. - Obergrenze der Neuaufteilungstiefe erreicht: das über dem Limit liegende Segment wird unverändert durchgereicht, statt in eine Schleife zu geraten.
compressionRatio()gibt0.0zurück, wenn die Ursprungseingabe leer ist.- Das Modul führt keine kryptografischen Operationen durch; der FIPS-Modus ist nicht anwendbar.
Konformität
Abschnitt betitelt „Konformität“| Verhalten | Referenz | Status |
|---|---|---|
| Organisation der linearisierten Ausgabe (Daten der ersten Seite am Dateianfang) | ISO 32000-2:2020 Annex F / Annex G | Entwickelt gegen |
| Beziehungssemantik der zugeordneten Datei | ISO 19005-3:2012 §6.7.8 | Eingehalten, wo Carrier zutreffen |
| Anforderungen an den Einbettungs-Carrier | ISO 19005-4:2020 Annex A | Eingehalten, wo Carrier zutreffen |
Die Linearisierung zielt auf die Organisation eines linearisierten PDF ab, die alle zur Anzeige der ersten Seite erforderlichen Daten an den Dateianfang platziert, um effizienten inkrementellen Zugriff zu ermöglichen.
Diese Zeilen beschreiben eine Fähigkeit, die gegen die zitierten Klauseln entwickelt wurde. Unterstützung ist keine Konformität, und Konformität ist keine Zertifizierung; NextPDF hält keine Zertifizierung. Keine Aussage auf dieser Seite garantiert die Annahme durch ein Einreichungsportal.
Diese Seite ist mit export_control_class: legal-review-required gekennzeichnet. NextPDF bietet keine Rechtsberatung. Einreichungsregeln variieren je nach Jurisdiktion und ändern sich; ihre Einhaltung liegt in der Verantwortung des Einreichenden. Konsultieren Sie einen Rechtsbeistand und die aktuellen Vorgaben des Zielregisters.
Entwicklungshinweise
Abschnitt betitelt „Entwicklungshinweise“use NextPDF\Enterprise\Document\EFiling\EFilingOptimizer;use NextPDF\Enterprise\Document\EFiling\EFilingProfile;
$optimizer = new EFilingOptimizer();$result = $optimizer->optimize($pdfBytes, EFilingProfile::euJustice());
foreach ($result->segments as $segment) { // Persist $segment->pdfData; confirm $segment->sizeBytes fits the cap.}- Prüfen Sie
$result->warningsvor der Einreichung. Eine abgelehnte Bereinigung oder eine übersprungene Linearisierung erscheint dort, nicht als Ausnahme. - Signieren und archivieren Sie zuerst das Ausgangsdokument; optimieren Sie dann eine Kopie für die Zustellung. Signieren, stempeln oder archivieren Sie niemals ein optimiertes Segment erneut.
- Prüfen Sie das
sizeBytesjedes Segments gegen die Profil-Obergrenze. Eine unteilbare, über dem Limit liegende Seite erreicht die Ausgabe stillschweigend. - Konstruieren Sie für Portale ohne eingebaute Factory ein benutzerdefiniertes
EFilingProfilemit der veröffentlichten Obergrenze des Portals.
Veröffentlichungsgrenze
Abschnitt betitelt „Veröffentlichungsgrenze“Diese Seite dokumentiert ausschließlich extern beobachtbares 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.