Aller au contenu
getnextpdf.com

Enterprise édition

Dépôt électronique de documents — Référence approfondie

  • EFilingOptimizer prépare un PDF pour un dépôt électronique auprès d’un tribunal en une seule passe à ordre fixe : assainir, linéariser, découper par taille.
  • EFilingProfile encode les contraintes de juridiction. Les fabriques intégrées couvrent US PACER, EU e-Justice et le Judicial Yuan de Taïwan.
  • SizeAwareSplitter impose un plafond d’octets par segment avec un redécoupage vérifier-puis-corriger.
  • La sortie est un artefact de livraison. Il ne doit pas réintégrer les pipelines de signature ou d’archivage.
  • Le module n’effectue aucune opération cryptographique et ne réalise aucun appel réseau sortant.

Cette capacité est fournie dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de niveau Enterprise. Un déploiement sans cette autorisation ne charge pas les classes de la capacité. Compare les éditions et obtiens une licence.

La frontière du paquet nextpdf/enterprise protège cette surface ; il n’existe pas de code de capacité distinct par fonctionnalité. Aucune édition Core ou Pro ne fournit d’optimiseur de dépôt électronique.

Fenêtre de terminal
composer require nextpdf/enterprise:^3
SymboleParamètresComportement par défautRetourneLève ou échoue avecNotes
EFilingOptimizer::optimize()string $pdfData, ?EFilingProfile $profile = nullLe profil vaut par défaut EFilingProfile::pacer() ; exécute assainir, linéariser, découper par taille dans un ordre fixeEFilingResultInvalidArgumentException depuis l’étape de découpage lorsqu’une entrée hors limite n’est pas un PDF valide ; les échecs d’assainissement et de linéarisation se dégradent en avertissementsLa sortie est un artefact de livraison
EFilingProfile::__construct()$name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = trueProfil de juridiction immuableEFilingProfileNe lève pasPlafonds personnalisés pour les portails sans fabrique intégrée
EFilingProfile::pacer()nonePlafond de 25 MiB, qualité d’image 75EFilingProfileNe lève pasUS PACER
EFilingProfile::euJustice()nonePlafond de 10 MiB, qualité d’image 70EFilingProfileNe lève pasPortail e-Justice de l’UE
EFilingProfile::taiwan()nonePlafond de 10 MiB, qualité d’image 70EFilingProfileNe lève pasJudicial Yuan de Taïwan
SizeAwareSplitter::splitByMaxSize()string $pdfData, int $maxBytesSegment unique quand l’entrée tient ; sinon estimer, vérifier, redécouperlist<EFilingSegment>InvalidArgumentException lorsqu’une entrée hors limite ne comporte pas d’en-tête %PDFUne entrée sous la limite est retournée en un seul segment sans validation
EFilingResult::isSplit()nonetrue lorsqu’il existe plus d’un segmentboolNe lève pas
EFilingResult::segmentCount()noneNombre total de segmentsintNe lève pas
EFilingResult::compressionRatio()noneoptimizedTotalSize / originalSizefloatNe lève pas ; 0.0 pour une entrée d’origine videPlus la valeur est basse, mieux c’est
EFilingSegment$pdfData, $pageRange, $sizeBytes, $segmentIndexSegment de sortie immuableobjet valeurNe lève pasChaîne de plage de pages telle que 1-25 ou 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() exécute un pipeline à ordre fixe sur les octets d’entrée. La première étape supprime le contenu actif lorsque removeJavaScript est activé. Elle délègue au moteur de content-disarm-and-reconstruction avec une politique propre au dépôt : le JavaScript, le JavaScript nommé, les actions de lancement, la soumission de formulaire et les actions d’import de données sont supprimés ; les actions URI sont conservées (allowUriActions) car les dépôts peuvent comporter des liens légitimes ; les mises à jour incrémentales sont aplaties en une seule révision (flattenIncrementalUpdates). La deuxième étape linéarise les octets assainis via le NextPDF\Writer\Linearizer de Core lorsque linearize est activé. La troisième étape impose le maxFileSizeBytes du profil via SizeAwareSplitter.

Le découpeur estime le nombre de pages par segment à partir de la taille moyenne des pages, découpe, puis vérifie chaque segment produit par rapport au plafond. Tout segment hors limite qui couvre encore plus d’une page est redécoupé récursivement, en divisant par deux sa propre étendue de pages à chaque passe, jusqu’à ce que chaque enfant tienne ou soit une page unique. Une profondeur de redécoupage bornée protège contre une non-convergence pathologique. Les indices de sortie sont renormalisés pour rester contigus et indexés à partir de zéro.

optimize() consomme trois champs du profil : maxFileSizeBytes, removeJavaScript et linearize. Les champs flattenForms, imageQuality et compressObjectStreams sont des contraintes de profil déclarées sur lesquelles optimize() n’agit pas en 3.1.0.

La sortie du dépôt électronique est un artefact de livraison, pas un état du cycle de vie du document. Un PDF optimisé ou découpé est définitif pour la transmission et ne doit pas réintégrer un pipeline de signature ou d’archivage ; un retraitement romprait les chaînes de hachage et l’intégrité probante.

Ce module prépare des formats pour le dépôt e-court / gouvernemental selon la configuration. Il ne garantit l’acceptation par aucun tribunal, registre, juridiction ou portail de dépôt. Les plafonds des profils intégrés encodent des contraintes couramment publiées à titre de commodité, et non un flux en direct de chaque portail ; les règles des portails varient selon la juridiction et changent. Les vérifier par rapport aux règles actuelles du registre de destination relève de la responsabilité du déposant.

Le traitement s’effectue au sein du processus et en local. Le transport vers un tribunal, un registre ou un portail de dépôt est externe à ce module.

  • Entrée au niveau du plafond ou en dessous : un seul segment avec la plage de pages all ; l’étape de découpage laisse les octets inchangés.
  • Rejet de l’assainissement (par exemple une entrée non analysable) : l’avertissement CDR sanitization rejected: <reason> est enregistré et le pipeline se poursuit avec les octets d’origine.
  • Passe d’assainissement sans menace détectée : les octets sont tout de même remplacés par le PDF reconstruit, et une entrée d’optimisation consigne la passe propre.
  • Échec de linéarisation : l’avertissement Linearization skipped: <message> est enregistré et le pipeline se poursuit avec des octets non linéarisés.
  • Page unique au-dessus du plafond : véritablement indivisible, retournée inchangée en un seul segment hors limite. Aucun avertissement n’est enregistré dans ce cas ; compare le sizeBytes de chaque segment au plafond du profil avant le dépôt.
  • Profondeur de redécoupage atteinte : le segment hors limite passe inchangé plutôt que de boucler.
  • compressionRatio() retourne 0.0 lorsque l’entrée d’origine est vide.
  • Le module n’effectue aucune opération cryptographique ; le mode FIPS n’est pas applicable.
ComportementRéférenceStatut
Organisation de la sortie linéarisée (données de première page en début de fichier)ISO 32000-2:2020 Annex F / Annex GConstruit d’après
Sémantique des relations de fichiers associésISO 19005-3:2012 §6.7.8Respecté là où des porteurs s’appliquent
Exigences relatives au porteur de fichier intégréISO 19005-4:2020 Annex ARespecté là où des porteurs s’appliquent

La linéarisation cible l’organisation du PDF linéarisé, qui place toutes les données requises pour afficher la première page au début du fichier pour un accès incrémental efficace.

Ces lignes décrivent une capacité construite d’après les clauses citées. La prise en charge n’est pas la conformité, et la conformité n’est pas la certification ; NextPDF ne détient aucune certification. Aucune affirmation de cette page ne garantit l’acceptation par un quelconque portail de dépôt.

Cette page porte export_control_class: legal-review-required. NextPDF ne fournit pas de conseil juridique. Les règles de dépôt varient selon la juridiction et changent ; les respecter relève de la responsabilité du déposant. Consulte un conseil juridique et les directives actuelles du registre de destination.

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.
}
  • Inspecte $result->warnings avant le dépôt. Un assainissement rejeté ou une linéarisation ignorée y apparaît, pas sous forme d’exception.
  • Signe et archive d’abord le document source ; optimise ensuite une copie pour la livraison. Ne resigne, ne re-tamponne et n’archive jamais un segment optimisé.
  • Vérifie le sizeBytes de chaque segment par rapport au plafond du profil. Une page hors limite indivisible atteint la sortie silencieusement.
  • Pour les portails sans fabrique intégrée, construis un EFilingProfile personnalisé avec le plafond publié du portail.

Cette page documente uniquement le comportement observable de l’extérieur et la surface de l’API publique prise en charge. Les chemins d’espaces de noms internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de tickets sont hors périmètre.