Перейти к содержимому
getnextpdf.com

Pro редакция

Optimizer

Optimizer анализирует PDF на наличие дублирующихся объектов и потенциала повторного сжатия изображений, затем сообщает оценочное уменьшение размера. Три уровня балансируют точность вывода и размер файла.

Эта возможность поставляется в NextPDF Pro (nextpdf/pro) и активируется лицензионным конвертом уровня Pro. Развёртывание без такого права не загружает классы этой возможности. Сравните редакции и получите лицензию.

Отдельного пофункционального лицензионного флага нет. Уровень оптимизации (lossless, balanced, aggressive) — это параметр времени выполнения, а не лицензионный переключатель.

Окно терминала
composer require nextpdf/pro:^3

Код находится в пространстве имён NextPDF\Pro\Optimizer.

PdfOptimizer координирует дедупликатор объектов и средство повторного сжатия изображений. По «сырым» байтам PDF он находит группы дублирующихся объектов (когда уровень это допускает), анализирует изображения и оценивает сжатие для каждого изображения при целевом качестве уровня. Он агрегирует находки в OptimizationResult, сообщающий исходный размер, оценочный оптимизированный размер, число удалённых объектов и количество изображений до и после.

OptimizationLevel определяет компромисс: lossless сохраняет качество изображений и пропускает дедупликацию для байт-стабильного вывода; balanced дедуплицирует и нацеливается на 75 процентов качества изображений; aggressive дедуплицирует, понижает разрешение и нацеливается на 50 процентов качества.

Optimizer анализирует, а не переписывает. analyze() оценивает потенциальную экономию и возвращает OptimizationResult, не изменяя вход. Это делает проход неразрушающим и позволяет вам решить, применять ли его через Writer. Абстракция уровня удерживает компромисс в одном месте: lossless возвращает false из deduplicateStreams(), чтобы вывод мог оставаться байт-идентичным, тогда как balanced и aggressive повторно сжимают потоки изображений при более низких целях качества. Достижимая экономия зависит от того, как документ уже кодирует свои потоки и изображения, поэтому модуль сообщает оценку по реально присутствующим объектам, а не фиксированный заявленный показатель. Проектный контекст: Потоки и фильтры.

  • analyze($pdfData) возвращает OptimizationResult; он не изменяет вход.
  • Уровень lossless пропускает дедупликацию потоков, чтобы вывод мог оставаться байт-стабильным; balanced и aggressive включают дедупликацию.
  • Целевые значения качества изображений составляют 100, 75 и 50 процентов для lossless, balanced и aggressive соответственно.
  • Оценочный оптимизированный размер никогда не опускается ниже нуля и никогда не превышает исходный.
  • withLevel($level) возвращает новый оптимизатор на запрошенном уровне; экземпляры не изменяются.

Следующее отражает документированный публичный API. Репозиторий не поставляет исполняемый пример для этого модуля.

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() оценивает потенциал; дополните его модулем Writer, чтобы создать оптимизированный документ.
  • Уровень lossless намеренно даёт малое уменьшение размера, потому что сохраняет качество и пропускает дедупликацию.
  • Количество изображений «после» отражает изображения, удалённые при дедупликации, а не отброшенные изображения.

Анализ линеен по размеру входа плюс стоимость сканирования структур объектов и изображений. Уровень управляет тем, насколько агрессивны оценки дедупликации и повторного сжатия. Опубликованного фиксированного показателя уменьшения размера нет; результаты зависят исключительно от документа. Измеряйте на репрезентативных документах.

Считайте вход недоверенным. Анализ остаётся только для чтения и не исполняет встроенное содержимое. Этот модуль не журналирует содержимое документа.

Оптимизация работает с моделью объектов и изображений PDF, определённой ISO 32000-2; источник аннотирует соответствующие пункты. На момент написания корпус RAG был недоступен, поэтому эта страница не утверждает внешних идентификаторов пунктов и ограничивает заявления о соответствии поведением, проверенным тестами модуля.

Enterprise не меняет поведение Optimizer. Enterprise добавляет возможности соответствия требованиям и архивирования более высокого уровня, документированные отдельно; они не требуются для анализа потенциала оптимизации.

Без Pro используйте базовую оптимизацию NextPDF Core; дедупликация объектов и настраиваемый анализ повторного сжатия изображений — дополнения Pro. См..

Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую поверхность публичного API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы тикетов выходят за рамки.