Aller au contenu
getnextpdf.com

Pro édition

Optimiseur

L’Optimizer analyse un PDF à la recherche d’objets dupliqués et de potentiel de recompression d’images, puis rapporte la réduction de taille estimée. Trois niveaux arbitrent entre fidélité de sortie et taille de fichier.

Cette fonctionnalité est livrée dans NextPDF Pro (nextpdf/pro) et s’active avec une enveloppe de licence de palier Pro. Un déploiement sans ce droit ne charge pas les classes de la fonctionnalité. Comparer les éditions et obtenir une licence.

Il n’existe pas d’indicateur de licence distinct par fonctionnalité. Le niveau d’optimisation (lossless, balanced, aggressive) est un paramètre d’exécution, et non un commutateur de licence.

Fenêtre de terminal
composer require nextpdf/pro:^3

Le code se trouve sous l’espace de noms NextPDF\Pro\Optimizer.

PdfOptimizer coordonne un déduplicateur d’objets et un recompresseur d’images. Étant donné des octets PDF bruts, il trouve les groupes d’objets dupliqués (lorsque le niveau le permet), analyse les images et estime la compression de chaque image à la qualité cible du niveau. Il agrège les constats dans un OptimizationResult qui rapporte la taille originale, la taille optimisée estimée, les objets supprimés et le nombre d’images avant et après.

OptimizationLevel définit le compromis : lossless préserve la qualité d’image et saute la déduplication pour une sortie stable au niveau des octets ; balanced déduplique et vise une qualité d’image de 75 pour cent ; aggressive déduplique, sous-échantillonne et vise une qualité de 50 pour cent.

L’Optimizer analyse plutôt qu’il ne réécrit. analyze() estime les économies potentielles et renvoie un OptimizationResult sans modifier l’entrée. Cela garde la passe non destructive et te laisse décider de l’appliquer ou non via le Writer. L’abstraction de niveau regroupe le compromis en un seul endroit : lossless renvoie false depuis deduplicateStreams() afin que la sortie puisse rester identique au niveau des octets, tandis que balanced et aggressive recompriment les flux d’images vers des qualités cibles inférieures. Les économies atteignables dépendent de la façon dont un document encode déjà ses flux et ses images, si bien que le module rapporte une estimation à partir des objets réellement présents plutôt qu’un chiffre fixe affiché. Contexte de conception : Flux et filtres.

  • analyze($pdfData) renvoie un OptimizationResult ; il ne modifie pas l’entrée.
  • Le niveau lossless saute la déduplication de flux afin que la sortie puisse rester stable au niveau des octets ; balanced et aggressive activent la déduplication.
  • Les qualités d’image cibles sont de 100, 75 et 50 pour cent pour lossless, balanced et aggressive respectivement.
  • La taille optimisée estimée ne descend jamais sous zéro et ne dépasse jamais l’original.
  • withLevel($level) renvoie un nouvel optimiseur au niveau demandé ; les instances ne sont pas modifiées.

Ce qui suit reflète l’API publique documentée. Le dépôt ne livre pas d’exemple exécutable pour ce module.

use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);
use NextPDF\Pro\Optimizer\PdfOptimizer;
use NextPDF\Pro\Optimizer\OptimizationLevel;
$optimizer = new PdfOptimizer(OptimizationLevel::Aggressive);
$result = $optimizer->analyze($pdfBytes);
$savings = $result->originalSize > 0
? (1 - $result->optimizedSize / $result->originalSize) * 100
: 0.0;
  • analyze() estime un potentiel ; associe-le au module Writer pour produire un document optimisé.
  • Le niveau lossless ne produit intentionnellement qu’une faible réduction de taille parce qu’il préserve la qualité et saute la déduplication.
  • Le nombre d’images après reflète les images supprimées par déduplication, et non les images abandonnées.

L’analyse est linéaire en taille d’entrée, plus le coût de parcours des structures d’objets et d’images. Le niveau contrôle l’agressivité des estimations de déduplication et de recompression. Il n’existe pas de chiffre fixe publié de réduction de taille ; les résultats dépendent entièrement du document. Mesure avec des documents représentatifs.

Traite l’entrée comme non fiable. L’analyse reste en lecture seule et n’exécute pas de contenu incorporé. Ce module ne journalise aucun contenu de document.

L’optimisation opère sur le modèle d’objets et d’images PDF défini par ISO 32000-2 ; la source annote les clauses pertinentes. Le corpus RAG était indisponible au moment de la rédaction, si bien que cette page n’affirme aucun identifiant de clause externe et limite les déclarations de conformité au comportement vérifié par les tests du module.

Enterprise ne change pas le comportement de l’Optimizer. Enterprise ajoute des fonctionnalités de conformité et d’archivage de palier supérieur documentées séparément ; elles ne sont pas requises pour analyser le potentiel d’optimisation.

Sans Pro, utilise l’optimisation de base de NextPDF Core ; la déduplication d’objets et l’analyse ajustable de recompression d’images sont des ajouts Pro..

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