Enterprise edycja
Document E-Filing — szczegółowa referencja
W skrócie
Dział zatytułowany „W skrócie”EFilingOptimizerprzygotowuje plik PDF do elektronicznego składania sądowego w jednym przebiegu o ustalonej kolejności: sanityzacja, linearyzacja, podział według rozmiaru.EFilingProfilekoduje ograniczenia jurysdykcji. Wbudowane fabryki obejmują US PACER, EU e-Justice oraz Taiwan Judicial Yuan.SizeAwareSplitteregzekwuje limit bajtów na segment z ponownym podziałem w trybie sprawdź-a-następnie-popraw.- Wynik jest artefaktem dostarczanym. Nie może ponownie wejść do potoków podpisywania ani archiwizacji.
- Moduł nie wykonuje żadnych operacji kryptograficznych ani nie wykonuje wychodzących wywołań sieciowych.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”Ta funkcjonalność jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną poziomu Enterprise. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcjonalności. Porównaj edycje i uzyskaj licencję.
Granica pakietu nextpdf/enterprise obejmuje tę powierzchnię bramą; nie ma osobnego kodu funkcjonalności dla poszczególnych funkcji. Żadna edycja Core ani Pro nie udostępnia optymalizatora składania elektronicznego.
Powierzchnia publicznego API
Dział zatytułowany „Powierzchnia publicznego API”composer require nextpdf/enterprise:^3| Symbol | Parametry | Zachowanie domyślne | Zwraca | Zgłasza lub kończy się błędem | Uwagi |
|---|---|---|---|---|---|
EFilingOptimizer::optimize() | string $pdfData, ?EFilingProfile $profile = null | Profil domyślnie EFilingProfile::pacer(); uruchamia sanityzację, linearyzację, podział według rozmiaru w ustalonej kolejności | EFilingResult | InvalidArgumentException z kroku podziału, gdy wejście przekraczające limit nie jest prawidłowym plikiem PDF; niepowodzenia sanityzacji i linearyzacji degradują się do ostrzeżeń | Wynik jest artefaktem dostarczanym |
EFilingProfile::__construct() | $name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = true | Niemutowalny profil jurysdykcji | EFilingProfile | Nie zgłasza wyjątków | Własne limity dla portali bez wbudowanej fabryki |
EFilingProfile::pacer() | brak | Limit 25 MiB, jakość obrazu 75 | EFilingProfile | Nie zgłasza wyjątków | US PACER |
EFilingProfile::euJustice() | brak | Limit 10 MiB, jakość obrazu 70 | EFilingProfile | Nie zgłasza wyjątków | EU e-Justice Portal |
EFilingProfile::taiwan() | brak | Limit 10 MiB, jakość obrazu 70 | EFilingProfile | Nie zgłasza wyjątków | Taiwan Judicial Yuan |
SizeAwareSplitter::splitByMaxSize() | string $pdfData, int $maxBytes | Pojedynczy segment, gdy wejście się mieści; w przeciwnym razie oszacuj, sprawdź, podziel ponownie | list<EFilingSegment> | InvalidArgumentException, gdy wejście przekraczające limit nie ma nagłówka %PDF | Wejście poniżej limitu jest zwracane jako jeden segment bez walidacji |
EFilingResult::isSplit() | brak | true, gdy istnieje więcej niż jeden segment | bool | Nie zgłasza wyjątków | — |
EFilingResult::segmentCount() | brak | Łączna liczba segmentów | int | Nie zgłasza wyjątków | — |
EFilingResult::compressionRatio() | brak | optimizedTotalSize / originalSize | float | Nie zgłasza wyjątków; 0.0 dla pustego wejścia pierwotnego | Mniej znaczy lepiej |
EFilingSegment | $pdfData, $pageRange, $sizeBytes, $segmentIndex | Niemutowalny segment wyjściowy | obiekt wartości | Nie zgłasza wyjątków | Ciąg zakresu stron, taki jak 1-25 lub 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(): floatKontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”EFilingOptimizer::optimize() uruchamia względem wejściowych bajtów potok o ustalonej kolejności. Krok pierwszy usuwa aktywną treść, gdy ustawiono removeJavaScript. Deleguje do silnika content-disarm-and-reconstruction z polityką właściwą dla składania: JavaScript, nazwany JavaScript, akcje launch, wysyłanie formularzy oraz akcje importu danych są usuwane; akcje URI są zachowywane (allowUriActions), ponieważ dokumenty składane mogą nieść prawidłowe odnośniki; aktualizacje przyrostowe są spłaszczane do jednej rewizji (flattenIncrementalUpdates). Krok drugi linearyzuje zsanityzowane bajty przez należący do Core NextPDF\Writer\Linearizer, gdy ustawiono linearize. Krok trzeci egzekwuje maxFileSizeBytes profilu przez SizeAwareSplitter.
Splitter szacuje liczbę stron na segment na podstawie średniego rozmiaru strony, dzieli, a następnie sprawdza każdy wytworzony segment względem limitu. Każdy segment przekraczający limit, który wciąż obejmuje więcej niż jedną stronę, jest dzielony ponownie rekurencyjnie, za każdym przebiegiem połowiąc własny zakres stron, aż każdy element potomny się zmieści lub będzie pojedynczą stroną. Ograniczona głębokość ponownego podziału chroni przed patologicznym brakiem zbieżności. Indeksy wyjściowe są ponownie normalizowane, aby pozostały ciągłe i liczone od zera.
optimize() wykorzystuje trzy pola profilu: maxFileSizeBytes, removeJavaScript oraz linearize. Pola flattenForms, imageQuality oraz compressObjectStreams są zadeklarowanymi ograniczeniami profilu, na które optimize() nie reaguje w 3.1.0.
Wynik składania elektronicznego jest artefaktem dostarczanym, a nie stanem cyklu życia dokumentu. Zoptymalizowany lub podzielony plik PDF jest ostateczny na potrzeby transmisji i nie może ponownie wejść do potoku podpisywania ani archiwizacji; ponowne przetworzenie zerwałoby łańcuchy skrótów oraz integralność dowodową.
Ten moduł przygotowuje formaty na potrzeby składania w e-sądzie / urzędach państwowych zgodnie z konfiguracją. Nie gwarantuje przyjęcia przez jakikolwiek sąd, rejestr, trybunał ani portal składania. Wbudowane limity profili kodują dla wygody powszechnie publikowane ograniczenia, a nie strumień aktualnych danych z każdego portalu; zasady portali różnią się w zależności od jurysdykcji i ulegają zmianom. Sprawdzenie ich względem aktualnych zasad rejestru docelowego jest obowiązkiem składającego.
Przetwarzanie odbywa się w obrębie procesu i lokalnie. Transport do sądu, rejestru lub portalu składania jest zewnętrzny względem tego modułu.
Przypadki brzegowe i tryby awarii
Dział zatytułowany „Przypadki brzegowe i tryby awarii”- Wejście na poziomie limitu lub poniżej: jeden segment z zakresem stron
all; krok podziału pozostawia bajty niezmienione. - Odrzucenie sanityzacji (na przykład wejście, którego nie da się sparsować): zapisywane jest ostrzeżenie
CDR sanitization rejected: <reason>, a potok kontynuuje z pierwotnymi bajtami. - Przebieg sanityzacji bez wykrytych zagrożeń: bajty i tak są zastępowane przez odbudowany plik PDF, a wpis optymalizacji odnotowuje czysty przebieg.
- Niepowodzenie linearyzacji: zapisywane jest ostrzeżenie
Linearization skipped: <message>, a potok kontynuuje z niezlinearyzowanymi bajtami. - Pojedyncza strona przekraczająca limit: faktycznie niepodzielna, zwracana bez zmian jako jeden segment przekraczający limit. W tym przypadku nie zapisuje się ostrzeżenia; porównaj
sizeByteskażdego segmentu z limitem profilu przed złożeniem. - Osiągnięto limit głębokości ponownego podziału: segment przekraczający limit przechodzi bez zmian zamiast wpadać w pętlę.
compressionRatio()zwraca0.0, gdy wejście pierwotne jest puste.- Moduł nie wykonuje żadnych operacji kryptograficznych; tryb FIPS nie ma zastosowania.
Zgodność
Dział zatytułowany „Zgodność”| Zachowanie | Odniesienie | Status |
|---|---|---|
| Organizacja wyjścia zlinearyzowanego (dane pierwszej strony na początku pliku) | ISO 32000-2:2020 Annex F / Annex G | Zbudowane względem |
| Semantyka relacji pliku powiązanego | ISO 19005-3:2012 §6.7.8 | Honorowane tam, gdzie mają zastosowanie nośniki |
| Wymagania nośnika pliku osadzonego | ISO 19005-4:2020 Annex A | Honorowane tam, gdzie mają zastosowanie nośniki |
Linearyzacja celuje w organizację Linearized PDF, która umieszcza wszystkie dane wymagane do wyświetlenia pierwszej strony na początku pliku, dla wydajnego dostępu przyrostowego.
Te wiersze opisują funkcjonalność zbudowaną względem cytowanych klauzul. Wsparcie nie jest zgodnością, a zgodność nie jest certyfikacją; NextPDF nie posiada żadnej certyfikacji. Żadne stwierdzenie na tej stronie nie gwarantuje przyjęcia przez jakikolwiek portal składania.
Ta strona jest oznaczona export_control_class: legal-review-required. NextPDF nie udziela porad prawnych. Zasady składania różnią się w zależności od jurysdykcji i ulegają zmianom; ich spełnienie jest obowiązkiem składającego. Skonsultuj się z doradcą prawnym oraz aktualnymi wytycznymi rejestru docelowego.
Uwagi programistyczne
Dział zatytułowany „Uwagi programistyczne”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.}- Sprawdź
$result->warningsprzed złożeniem. Odrzucona sanityzacja lub pominięta linearyzacja pojawia się tam, a nie jako wyjątek. - Najpierw podpisz i zarchiwizuj dokument źródłowy; następnie zoptymalizuj kopię do dostarczenia. Nigdy nie podpisuj ponownie, nie stempluj ponownie ani nie archiwizuj zoptymalizowanego segmentu.
- Zweryfikuj
sizeByteskażdego segmentu względem limitu profilu. Niepodzielna strona przekraczająca limit trafia na wyjście po cichu. - Dla portali bez wbudowanej fabryki skonstruuj własny
EFilingProfilez opublikowanym limitem portalu.
Granica publikacji
Dział zatytułowany „Granica publikacji”Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz wspieraną powierzchnię publicznego API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.