Salta ai contenuti
getnextpdf.com

Enterprise edizione

Document E-Filing — Riferimento approfondito

  • EFilingOptimizer prepara un PDF per il deposito elettronico presso i tribunali in un unico passaggio a ordine fisso: sanitizza, linearizza, suddividi per dimensione.
  • EFilingProfile codifica i vincoli di giurisdizione. Le factory predefinite coprono US PACER, EU e-Justice e Taiwan Judicial Yuan.
  • SizeAwareSplitter impone un limite di byte per segmento con una nuova suddivisione secondo lo schema verifica-poi-correggi.
  • L’output è un artefatto di consegna. Non deve rientrare nelle pipeline di firma o di archiviazione.
  • Il modulo non esegue alcuna operazione crittografica e non effettua alcuna chiamata di rete in uscita.

Questa funzionalità viene distribuita in NextPDF Enterprise (nextpdf/enterprise) e si attiva con un envelope di licenza di livello Enterprise. Una distribuzione priva di tale entitlement non carica le classi della funzionalità. Confronta le edizioni e ottieni una licenza.

Il confine del pacchetto nextpdf/enterprise sottopone a gate questa superficie; non esiste alcun codice di capability separato per funzionalità. Nessuna edizione Core o Pro fornisce un ottimizzatore di deposito elettronico.

Terminal window
composer require nextpdf/enterprise:^3
SimboloParametriComportamento predefinitoRestituisceSolleva o fallisce conNote
EFilingOptimizer::optimize()string $pdfData, ?EFilingProfile $profile = nullIl profilo predefinito è EFilingProfile::pacer(); esegue sanitizza, linearizza, suddividi per dimensione in ordine fissoEFilingResultInvalidArgumentException dal passaggio di suddivisione quando un input oltre il limite non è un PDF valido; i fallimenti di sanitizzazione e linearizzazione degradano ad avvisiL’output è un artefatto di consegna
EFilingProfile::__construct()$name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = trueProfilo di giurisdizione immutabileEFilingProfileNon solleva eccezioniLimiti personalizzati per portali privi di una factory predefinita
EFilingProfile::pacer()nessunoLimite 25 MiB, qualità immagine 75EFilingProfileNon solleva eccezioniUS PACER
EFilingProfile::euJustice()nessunoLimite 10 MiB, qualità immagine 70EFilingProfileNon solleva eccezioniEU e-Justice Portal
EFilingProfile::taiwan()nessunoLimite 10 MiB, qualità immagine 70EFilingProfileNon solleva eccezioniTaiwan Judicial Yuan
SizeAwareSplitter::splitByMaxSize()string $pdfData, int $maxBytesSingolo segmento quando l’input rientra nel limite; altrimenti stima, verifica, nuova suddivisionelist<EFilingSegment>InvalidArgumentException quando un input oltre il limite è privo di un header %PDFUn input sotto il limite viene restituito come un unico segmento senza convalida
EFilingResult::isSplit()nessunotrue quando esiste più di un segmentoboolNon solleva eccezioni
EFilingResult::segmentCount()nessunoNumero totale di segmentiintNon solleva eccezioni
EFilingResult::compressionRatio()nessunooptimizedTotalSize / originalSizefloatNon solleva eccezioni; 0.0 per input originale vuotoPiù basso è, meglio è
EFilingSegment$pdfData, $pageRange, $sizeBytes, $segmentIndexSegmento di output immutabilevalue objectNon solleva eccezioniStringa di intervallo di pagine come 1-25 o all
public function optimize(string $pdfData, ?EFilingProfile $profile = null): EFilingResult
public 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(): self
public static function euJustice(): self
public static function taiwan(): self
public function splitByMaxSize(string $pdfData, int $maxBytes): array
public function __construct(
public array $segments,
public int $originalSize,
public int $optimizedTotalSize,
public array $optimizations = [],
public array $warnings = [],
) {}
public function isSplit(): bool
public function segmentCount(): int
public function compressionRatio(): float

EFilingOptimizer::optimize() esegue una pipeline a ordine fisso sui byte di input. Il primo passaggio rimuove i contenuti attivi quando removeJavaScript è impostato. Delega al motore di content-disarm-and-reconstruction con una policy specifica per il deposito: JavaScript, JavaScript con nome, azioni di lancio, invio di moduli e azioni di importazione dati vengono rimossi; le azioni URI vengono conservate (allowUriActions) perché i depositi possono contenere collegamenti legittimi; gli aggiornamenti incrementali vengono appiattiti in un’unica revisione (flattenIncrementalUpdates). Il secondo passaggio linearizza i byte sanitizzati tramite il NextPDF\Writer\Linearizer di Core quando linearize è impostato. Il terzo passaggio impone il maxFileSizeBytes del profilo tramite SizeAwareSplitter.

Lo splitter stima il numero di pagine per segmento a partire dalla dimensione media di pagina, suddivide, quindi verifica ogni segmento prodotto rispetto al limite. Qualsiasi segmento oltre il limite che copre ancora più di una pagina viene suddiviso ricorsivamente, dimezzando a ogni passaggio il proprio intervallo di pagine, finché ogni figlio non rientra nel limite o non è costituito da una singola pagina. Un limite di profondità della nuova suddivisione previene una non convergenza patologica. Gli indici di output vengono rinormalizzati per rimanere contigui e a base zero.

optimize() consuma tre campi del profilo: maxFileSizeBytes, removeJavaScript e linearize. I campi flattenForms, imageQuality e compressObjectStreams sono vincoli di profilo dichiarati su cui optimize() non agisce in 3.1.0.

L’output del deposito elettronico è un artefatto di consegna, non uno stato del ciclo di vita del documento. Un PDF ottimizzato o suddiviso è definitivo per la trasmissione e non deve rientrare in una pipeline di firma o di archiviazione; un riprocesso romperebbe le catene di hash e l’integrità probatoria.

Questo modulo prepara formati per il deposito presso tribunali elettronici / enti governativi così come configurato. Non garantisce l’accettazione da parte di alcun tribunale, registro, organo giurisdizionale o portale di deposito. I limiti dei profili predefiniti codificano per comodità i vincoli comunemente pubblicati, non un feed in tempo reale da ciascun portale; le regole dei portali variano per giurisdizione e cambiano nel tempo. La verifica rispetto alle regole correnti del registro di destinazione è responsabilità del depositante.

L’elaborazione è in-process e locale. Il trasporto verso un tribunale, un registro o un portale di deposito è esterno a questo modulo.

  • Input pari o inferiore al limite: un singolo segmento con intervallo di pagine all; il passaggio di suddivisione lascia i byte invariati.
  • Rifiuto della sanitizzazione (per esempio un input non analizzabile): viene registrato l’avviso CDR sanitization rejected: <reason> e la pipeline continua con i byte originali.
  • Passaggio di sanitizzazione senza minacce rilevate: i byte vengono comunque sostituiti dal PDF ricostruito e una voce di ottimizzazione registra il passaggio pulito.
  • Fallimento della linearizzazione: viene registrato l’avviso Linearization skipped: <message> e la pipeline continua con byte non linearizzati.
  • Singola pagina oltre il limite: genuinamente indivisibile, restituita invariata come un unico segmento oltre il limite. Per questo caso non viene registrato alcun avviso; confrontare il sizeBytes di ogni segmento con il limite del profilo prima del deposito.
  • Limite di profondità della nuova suddivisione raggiunto: il segmento oltre il limite passa invariato anziché entrare in ciclo.
  • compressionRatio() restituisce 0.0 quando l’input originale è vuoto.
  • Il modulo non esegue alcuna operazione crittografica; la modalità FIPS non è applicabile.
ComportamentoRiferimentoStato
Organizzazione dell’output linearizzato (dati della prima pagina all’inizio del file)ISO 32000-2:2020 Annex F / Annex GSviluppato rispetto a
Semantica della relazione dei file associatiISO 19005-3:2012 §6.7.8Rispettata ove si applicano i contenitori
Requisiti del contenitore di file incorporatiISO 19005-4:2020 Annex ARispettata ove si applicano i contenitori

La linearizzazione mira all’organizzazione Linearized PDF, che colloca tutti i dati necessari a visualizzare la prima pagina all’inizio del file per un accesso incrementale efficiente.

Queste righe descrivono una capability sviluppata rispetto alle clausole citate. Il supporto non è conformità e la conformità non è certificazione; NextPDF non detiene alcuna certificazione. Nessuna affermazione in questa pagina garantisce l’accettazione da parte di alcun portale di deposito.

Questa pagina è contrassegnata con export_control_class: legal-review-required. NextPDF non fornisce consulenza legale. Le regole di deposito variano per giurisdizione e cambiano nel tempo; soddisfarle è responsabilità del depositante. Consultare i propri consulenti legali e le indicazioni correnti del registro di destinazione.

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.
}
  • Ispezionare $result->warnings prima del deposito. Una sanitizzazione rifiutata o una linearizzazione saltata emergono lì, non come eccezione.
  • Firmare e archiviare prima il documento sorgente; quindi ottimizzare una copia per la consegna. Non firmare, timbrare o archiviare mai di nuovo un segmento ottimizzato.
  • Verificare il sizeBytes di ogni segmento rispetto al limite del profilo. Una pagina indivisibile oltre il limite raggiunge l’output silenziosamente.
  • Per i portali privi di una factory predefinita, costruire un EFilingProfile personalizzato con il limite pubblicato dal portale.

Questa pagina documenta esclusivamente il comportamento osservabile esternamente e la superficie API pubblica supportata. I percorsi di namespace interni, le classi helper, le tabelle dei meccanismi, i nomi di file dei runbook e i prefissi di ticket sono fuori ambito.