Salta ai contenuti
getnextpdf.com

Pro edizione

Optimizer

L’Optimizer analizza un PDF alla ricerca di oggetti duplicati e del potenziale di ricompressione delle immagini, poi riporta la riduzione di dimensione stimata. Tre livelli bilanciano la fedeltà dell’output rispetto alla dimensione del file.

Questa funzionalità è inclusa in NextPDF Pro (nextpdf/pro) e si attiva con un envelope di licenza di tier Pro. Un deployment privo di questo diritto non carica le classi della funzionalità. Confronta le edizioni e ottieni una licenza.

Non esiste un flag di licenza separato per ciascuna funzionalità. Il livello di ottimizzazione (lossless, balanced, aggressive) è un parametro a runtime, non un interruttore di licenza.

Terminal window
composer require nextpdf/pro:^3

Il codice risiede sotto il namespace NextPDF\Pro\Optimizer.

PdfOptimizer coordina un deduplicatore di oggetti e un ricompressore di immagini. Dati i byte grezzi del PDF, individua i gruppi di oggetti duplicati (quando il livello lo consente), analizza le immagini e stima la compressione di ciascuna immagine alla qualità di destinazione del livello. Aggrega i risultati in un OptimizationResult che riporta la dimensione originale, la dimensione ottimizzata stimata, gli oggetti rimossi e il conteggio delle immagini prima e dopo.

OptimizationLevel definisce il compromesso: lossless preserva la qualità delle immagini e salta la deduplica per un output byte-stabile; balanced deduplica e punta al 75 percento della qualità dell’immagine; aggressive deduplica, riduce il campionamento e punta al 50 percento della qualità.

L’optimizer analizza anziché riscrivere. analyze() stima il risparmio potenziale e restituisce un OptimizationResult senza mutare l’input. Ciò mantiene il passaggio non distruttivo e lascia decidere se applicarlo tramite il Writer. L’astrazione del livello concentra il compromesso in un unico punto: lossless restituisce false da deduplicateStreams() così che l’output possa restare byte-identico, mentre balanced e aggressive ricomprimono gli stream di immagini con obiettivi di qualità inferiori. Il risparmio ottenibile dipende da come un documento già codifica i propri stream e immagini, perciò il modulo riporta una stima basata sugli oggetti effettivamente presenti anziché una cifra fissa in evidenza. Approfondimento progettuale: Stream e filtri.

  • analyze($pdfData) restituisce un OptimizationResult; non muta l’input.
  • Il livello lossless salta la deduplica degli stream così che l’output possa restare byte-stabile; balanced e aggressive abilitano la deduplica.
  • Gli obiettivi di qualità dell’immagine sono 100, 75 e 50 percento rispettivamente per lossless, balanced e aggressive.
  • La dimensione ottimizzata stimata non scende mai sotto lo zero e non supera mai l’originale.
  • withLevel($level) restituisce un nuovo optimizer al livello richiesto; le istanze non vengono mutate.

Quanto segue rispecchia l’API pubblica documentata. Il repository non include un esempio eseguibile per questo modulo.

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() stima il potenziale; abbinarlo al modulo Writer per produrre un documento ottimizzato.
  • Il livello lossless produce intenzionalmente una scarsa riduzione di dimensione perché preserva la qualità e salta la deduplica.
  • Il conteggio delle immagini dopo l’operazione riflette le immagini rimosse tramite deduplica, non le immagini scartate.

L’analisi è lineare rispetto alla dimensione dell’input più il costo della scansione delle strutture degli oggetti e delle immagini. Il livello controlla quanto sono aggressive le stime di deduplica e ricompressione. Non esiste una cifra fissa pubblicata di riduzione di dimensione; i risultati dipendono interamente dal documento. Misurare con documenti rappresentativi.

Trattare l’input come non attendibile. L’analisi resta in sola lettura e non esegue il contenuto incorporato. Questo modulo non registra alcun contenuto del documento.

L’ottimizzazione opera sul modello di oggetti e di immagini del PDF definito da ISO 32000-2; la sorgente annota le clausole pertinenti. Il corpus RAG non era disponibile al momento della stesura, quindi questa pagina non asserisce alcun identificatore di clausola esterno e limita le dichiarazioni di conformità al comportamento verificato dai test del modulo.

Enterprise non modifica il comportamento di Optimizer. Enterprise aggiunge funzionalità di compliance e archiviazione di tier superiore documentate separatamente; non sono richieste per analizzare il potenziale di ottimizzazione.

Senza Pro, usare l’ottimizzazione di base di NextPDF Core; la deduplica degli oggetti e l’analisi regolabile di ricompressione delle immagini sono aggiunte di Pro..

Questa pagina documenta esclusivamente il comportamento osservabile dall’esterno e la superficie dell’API pubblica supportata. Percorsi di namespace interni, classi helper, tabelle di meccanismo, nomi di file di runbook e prefissi di ticket sono fuori ambito.