Тест сжатия PDF: методика, размер файла и функции

Здесь представлены наши собственные измерения от 13 октября 2026 года: три самостоятельно созданных тестовых PDF, девять запусков сжатия с точным числом байтов и отдельные проверки функций. На их основе нельзя составить рейтинг в сравнении с другими инструментами или предсказать результат для твоего PDF.

Что проверялось, а что нет?

Проверялся тот же неизменённый код сжатия, который использует инструмент сжатия PDF на этом сайте. Однако для измерений он запускался напрямую в Node.js, а не в браузере. Это позволяет точно фиксировать исходные данные, настройки и сохранённый результат каждого запуска.

  • Модуль сжатия: QPDF 12.2.0 в виде WebAssembly, версия обёртки 0.3.0. Скрипт сборки обёртки задаёт QPDF 12.2.0, и установленный модуль при запросе версии также сообщает 12.2.0.
  • Среда: Node.js 24.18.1 в Windows 11, сборка 26200, x64.
  • Объём проверки: три синтетических исходных файла, девять запусков сжатия и один тестовый файл с заглушкой подписи, который должен быть отклонён.
  • Последующая проверка: двенадцать сохранённых PDF, всего 24 страницы; для каждого проверены структура и отрисованные страницы.

В эти измерения не входят:

  • время обработки — оно не измерялось,
  • поведение в отдельных браузерах или на реальных смартфонах и планшетах,
  • реальные фотографии, сканы, большие файлы или документы пользователей,
  • другие программы сжатия или онлайн-сервисы,
  • средняя экономия, которую можно было бы ожидать для твоего файла.

Тестовые файлы, настройки и скачивание

В тесте используются исключительно самостоятельно созданные PDF. Среди них нет клиентских документов, фотографий реального мира или подписей реальных людей. Изображение в файле с изображением также сгенерировано: это текстура с цветовым градиентом, а не фотография или скан.

  • Текстовый файл, 3 029 байт: две страницы с текстом, заполненным полем формы, ссылкой, поворотом страницы и меткой в дереве структуры.
  • Файл с изображением, 1 359 079 байт: те же элементы и дополнительно сгенерированное изображение размером 640 × 800 пикселей. Текстовый файл без изображения занимает всего 3 029 байт, поэтому основная часть размера этого файла приходится на изображение.
  • Уже оптимизированный текстовый файл, 2 721 байт: он используется для проверки случая, когда дальнейшее уменьшение невозможно.
  • Файл с заглушкой подписи, 3 139 байт: он содержит только структуру подписи, но не настоящую цифровую подпись. С его помощью проверяется, отклоняет ли инструмент сжатия подписанные файлы.

Одинаковые исходные условия для каждого запуска

  • Каждый запуск начинается с неизменённых байтов оригинала. Если для одного запуска требуется несколько попыток, каждая следующая попытка тоже начинается с оригинала, а не с предыдущего результата.
  • Все результаты содержат обе страницы целиком. Страницы не удалялись, ничего не упаковывалось в ZIP, количество пикселей в изображениях не уменьшалось, а целые страницы не преобразовывались в изображения. Только при таких условиях число байтов в разных режимах можно сравнивать.
  • Каждый результат сохранён под отдельным именем файла. Для исходного и выходного файлов зафиксированы число байтов и контрольная сумма SHA-256. Контрольная сумма — это отпечаток файла: если изменится хотя бы один байт, изменится и контрольная сумма.
  • Для каждого запуска записаны режим, целевой размер, если он задан, и фактически использованное качество JPEG.

Что технически делают три режима

В протоколе и таблицах режимы называются lossless, balanced и small. В инструменте ты найдёшь их под следующими названиями: lossless — «Оптимизация без потерь», balanced — «Сбалансированный режим», small — «Файл меньшего размера». Режим «Оптимизация без потерь» оптимизирует только структуру файла, то есть объекты и сжатые потоки данных. «Сбалансированный режим» дополнительно перекодирует подходящие изображения в JPEG с уровнем качества 80. Если целевой размер не достигнут, следует попытка с уровнем 70. Режим «Файл меньшего размера» начинает с уровня 65 и при недостижении цели переходит на 50, а затем на 40. Если ты указал целевой размер и уже оригинал или версия с оптимизированной структурой укладывается в него, попытка сжатия JPEG с потерями не нужна. В конце выбирается самая маленькая из проверенных версий. Если ни одна из них не меньше оригинала, сохраняется оригинал. Таким образом, определённая экономия не гарантируется.

Согласно документации QPDF 12.2, QPDF при этом не уменьшает разрешение изображений. Однако перекодирование в JPEG может создавать видимые артефакты, а QPDF использует перекодированные данные изображения только в том случае, если они меньше исходных. Что это означает для качества изображения, объясняется в руководстве Сжатие PDF без потери качества.

Файлы и контрольные суммы для самостоятельной проверки

В следующей таблице даны ссылки на все тестовые файлы и файлы результатов. После скачивания сравни контрольную сумму SHA-256 с помощью любого инструмента для проверки контрольных сумм. Если она совпадает, перед тобой именно тот файл, который использовался при измерении. Протокол reproducibility-manifest.json на английском языке содержит точные вызовы и настройки всех запусков.

Исходные файлы и файлы результатов измерений от 13 октября 2026 года с числом байтов и контрольной суммой SHA-256
ФайлСодержимоеБайтSHA-256
text-input.pdfИсходный файл: текстовый файл3 02935d8fa138b0343d3dd61e58fe7ba75c6c55581d8973294698c9a4e78f97eaa60
image-input.pdfИсходный файл: файл со сгенерированным изображением1 359 079bdb027a008a387cf82b8218c57ced81f00889042f7fad85a577ebbe1f779730a
alreadyOptimized-input.pdfИсходный файл: уже оптимизированный текстовый файл2 72151eac67f8c16f35a206c258f0b79ae6eb435170b73ecf893ecd9dea50d7dbeda
signed-placeholder-input.pdfИсходный файл: заглушка подписи, не настоящая подпись3 139a62f7a96b03f287ec8686c6908c98edf78f3116ea16060c49c767bc95c7dc3b0
text-lossless-output.pdfРезультат: текстовый файл, lossless2 721b775013b0dc458b3e8cf867a93bb94352452b04302eb1ecebab3ac5c0daafdfe
image-lossless-output.pdfРезультат: файл с изображением, lossless1 358 764f17192271ad99aeae5910991ec79e8ca21b1d0a124e6e40de9ed102892529146
image-balanced-output.pdfРезультат: файл с изображением, balanced179 708491bb1a46b2e6b098bb431882daf1526bd2f5e1041bf2a7d2b2a749315a01c57
image-balanced-repeat-output.pdfРезультат: файл с изображением, balanced, повторный запуск179 708ad1612e002465204b99a47815f54efe81c9fdf63580ac8ad53b991f193ce4c6f
image-small-output.pdfРезультат: файл с изображением, small125 710d5f9d6eae5829ef534e1033db8423dac42ea61373e924924f66b55a763473b17
image-small-met-250000-output.pdfРезультат: файл с изображением, small, цель 250 000 байт125 710d5f9d6eae5829ef534e1033db8423dac42ea61373e924924f66b55a763473b17
image-small-unmet-128-output.pdfРезультат: файл с изображением, small, цель 128 байт74 7071ff4d7db12907e5c716efffb282e27d805199ddd4766dc10aa64a08fa6593a7e
image-small-already-met-output.pdfРезультат: файл с изображением, small, цель 1 359 079 байт1 358 7646b5a9384b3871c6a7c6623e208975de6ac6226ea64b9f67ab07872b0283c4545
already-optimized-lossless-output.pdfРезультат: уже оптимизированный текстовый файл, lossless (сохранён оригинал)2 72151eac67f8c16f35a206c258f0b79ae6eb435170b73ecf893ecd9dea50d7dbeda
reproducibility-manifest.jsonПротокол с вызовами, настройками и результатами измерений (на английском языке)29 0100778b8a0482d73dbe686dac1cadc0ac990f78ced3a49a7f7183702ebfcb17aa4

Результаты: честные данные о размере файлов

Измерения от 13 октября 2026 года на диаграмме

Диаграмма показывает все девять запусков нашего измерения с QPDF 12.2.0 (WASM) в Node.js под Windows 11. Фильтруй по тестовому файлу или методу и переключайся между точным количеством байтов и оставшимся размером в процентах.

Показано 9 из 9 запусков

  1. Текст · Без потерь

    Размер уменьшен

    Оригинал
    3 029 Байт
    Результат
    2 721 Байт
    Заданный лимит
    Лимит не задан
  2. Изображение · Без потерь

    Размер уменьшен

    Оригинал
    1 359 079 Байт
    Результат
    1 358 764 Байт
    Заданный лимит
    Лимит не задан
  3. Изображение · Сбалансированный режим

    Размер уменьшен

    Оригинал
    1 359 079 Байт
    Результат
    179 708 Байт
    Заданный лимит
    Лимит не задан
  4. Изображение · Сбалансированный режим, повторная попытка

    Тот же размер, другая контрольная сумма

    Оригинал
    1 359 079 Байт
    Результат
    179 708 Байт
    Заданный лимит
    Лимит не задан
  5. Изображение · Сильное сжатие

    Размер уменьшен

    Оригинал
    1 359 079 Байт
    Результат
    125 710 Байт
    Заданный лимит
    Лимит не задан
  6. Изображение · Сильное сжатие

    Цель достигнута

    Оригинал
    1 359 079 Байт
    Результат
    125 710 Байт
    Заданный лимит
    250 000 Байт
  7. Изображение · Сильное сжатие

    Цель не достигнута, предоставлен полный PDF

    Оригинал
    1 359 079 Байт
    Результат
    74 707 Байт
    Заданный лимит
    128 Байт
  8. Изображение · Сильное сжатие

    Цель уже была достигнута ранее

    Оригинал
    1 359 079 Байт
    Результат
    1 358 764 Байт
    Заданный лимит
    1 359 079 Байт
  9. Уже оптимизированный текст · Без потерь

    Сохранить оригинал без изменений

    Оригинал
    2 721 Байт
    Результат
    2 721 Байт
    Заданный лимит
    Лимит не задан

    Без изменений – сохранён оригинал

Историческое измерение: оно ничего не говорит о браузерах, телефонах, текущей версии или других инструментах. Проценты показывают оставшийся размер, а не экономию. Введённый лимит — это заданное число, а не обещание. Таблица ниже содержит все девять запусков независимо от фильтров.

Этот тест не позволяет предсказать, насколько уменьшится твой PDF. Это зависит от содержимого файла. Уже три тестовых файла показывают разброс результатов: небольшой текстовый файл в режиме lossless уменьшился на 10,17 процента, а файл с изображением в том же режиме — всего на 0,02 процента. Только перекодирование в JPEG дало для файла с изображением экономию в 86,78 процента. В таблице представлены все девять запусков, в том числе те, которые не дали заметной экономии.

Измерения от 13 октября 2026 года: девять запусков с QPDF 12.2.0 (WebAssembly) в Node.js под Windows 11, синтетические тестовые файлы по две страницы каждый
Тестовый файлРежимЦелевой размерОригинал (байт)Результат (байт)ЭкономияКачество JPEGСтатус
Текстlosslessне задан3 0292 721308 байт (10,17 %)не использовалосьразмер уменьшен
Изображениеlosslessне задан1 359 0791 358 764315 байт (0,02 %)не использовалосьразмер уменьшен
Изображениеbalancedне задан1 359 079179 7081 179 371 байт (86,78 %)80размер уменьшен
Изображениеbalanced, повторный запускне задан1 359 079179 7081 179 371 байт (86,78 %)80тот же размер, другая контрольная сумма
Изображениеsmallне задан1 359 079125 7101 233 369 байт (90,75 %)65размер уменьшен
Изображениеsmall250 000 байт1 359 079125 7101 233 369 байт (90,75 %)65цель достигнута
Изображениеsmall128 байт1 359 07974 7071 284 372 байт (94,50 %)40цель не достигнута, выдан полный PDF
Изображениеsmall1 359 079 байт1 359 0791 358 764315 байт (0,02 %)не использовалось, без перекодирования в JPEGцелевой размер соблюдался ещё до сжатия
Уже оптимизированный текстlosslessне задан2 7212 7210 байт (0 %)не использовалосьоригинал сохранён без изменений

Экономия всегда рассчитывается по фактическому числу байтов: число сэкономленных байтов делится на исходный размер. При запуске в режиме balanced это 1 179 371 из 1 359 079 байт, то есть 86,78 процента. Для своего файла ты можешь проверить расчёт с помощью калькулятора степени сжатия.

Качество JPEG — это не процент экономии

Значения 80, 65 или 40 — это настройки кодировщика JPEG, а не проценты уменьшения размера. Здесь уровень качества 80 дал экономию в 86,78 процента, а уровень 65 — в 90,75 процента. Для другого файла те же уровни могут дать совершенно иные результаты.

Почему важен случай без экономии

Тест, показывающий только максимальную экономию, упускает важный случай: что происходит, когда дальнейшее уменьшение невозможно? Для уже оптимизированного текстового файла размером 2 721 байт режим lossless не дал версии меньшего размера. Поэтому инструмент сжатия сохранил оригинал: выходной файл — 2 721 байт, экономия — 0 байт, а исходный и выходной файлы имеют одинаковую контрольную сумму SHA-256. Таким образом, с помощью настоящего модуля сжатия подтверждено, что в этом случае ты не получишь перезаписанный без всякой пользы файл. О том, что можно сделать в такой ситуации, рассказывает руководство PDF не уменьшается.

Целевой размер достигнут, не достигнут или уже соблюдался

  • Цель 250 000 байт: уже первая попытка с уровнем 65 дала 125 710 байт. Таким образом, цель была достигнута, а результат даже побайтово совпадает с результатом запуска без целевого размера.
  • Цель 128 байт: для двух страниц с изображением это нереалистично мало. Даже последний уровень 40 дал только 74 707 байт. Инструмент сжатия сообщает, что цель не достигнута, но всё равно выдаёт файл. Для этого тестового файла сохранённый результат размером 74 707 байт содержит обе страницы и прошёл описанные ниже проверки функций. При этом данные изображения были перекодированы с потерями. Этот запуск не доказывает, что всё содержимое сохранится и в любом другом файле.
  • Цель 1 359 079 байт, то есть ровно исходный размер: целевой размер считался уже соблюдённым. Выполнялась только оптимизация структуры без потерь. Она дала 1 358 764 байта — тот же размер, что и запуск в режиме lossless. Изображение не перекодировалось в JPEG, поскольку записанные в протоколе вызовы не содержат настройки JPEG.

Тот же размер, другая контрольная сумма

Повторный запуск в режиме balanced снова дал ровно 179 708 байт, но другую контрольную сумму SHA-256. Запуск с уже соблюдённым целевым размером также дал тот же размер, что и запуск в режиме lossless, но собственную контрольную сумму. Одна из возможных причин — при записи PDF может, например, создаваться новый идентификатор документа. А вот результаты запусков в режиме small без целевого размера и с целью 250 000 байт совпали побайтово. Таким образом, контрольная сумма идентифицирует конкретный сохранённый файл. При повторном запуске, в том числе в браузере, ты не обязательно получишь побайтово идентичный файл, даже если размер останется тем же.

Отображение и функции проверялись отдельно

Меньший размер файла ещё не означает, что текст, форма и ссылка сохранились. Хороший предпросмотр этого тоже не доказывает. Поэтому сохранённые файлы проверялись двумя независимыми друг от друга библиотеками: pdf-lib читает сохранённую внутреннюю структуру, а PDF.js 6.4.299 отрисовывает страницы и извлекает текст и аннотации. Для этого PDF.js запускался в изолированном экземпляре Chromium версии 151.0.7922.34. Эта проверка готовых файлов отделена от сжатия, которое измерялось в Node.js под Windows 11. Сжатие в браузере или на мобильных устройствах не измерялось, а проверка ничего не говорит о поведении других программ для работы с PDF. У каждой проверки своя методика, и её результаты относятся только к этим тестовым файлам.

Проверки функций сохранённых тестовых файлов от 13 октября 2026 года и их ограничения
ПроверкаМетодикаРезультатЧего она не доказывает
Число страниц, размер страниц, поворотpdf-lib для всех девяти файлов результатовпройдено: две страницы, размер и поворот соответствуют ожидаемымничего о содержимом или изображениях
Содержимое страниц: текст и векторные элементыpdf-lib сравнивает декодированные инструкции содержимого обеих страницточное совпадение во всех девяти запускахничего о данных изображения; они были перекодированы в запусках с перекодированием в JPEG (balanced и small), но не в запуске small с уже соблюдённым целевым размером
Поле формыpdf-lib читает сохранённое значение поля reference, PDF.js — значение из аннотацийодно и то же заполненное значение DE-2026-4711 во всех проверенных файлахне проверяет редактирование, скрипты и поведение в каждой программе для работы с PDF
Ссылкаpdf-lib и PDF.js читают целевой адрес ссылкиссылка присутствует, тот же тестовый адрес https://example.test/unchangedпереход по ссылке не проверялся в каждой программе для работы с PDF
Поиск по текстуPDF.js извлекает известный фрагмент текста «Selectable text, page 1, row 0: test document.» со страницы 1 из всех двенадцати сохранённых PDFнайден во всех файлахне проверяет распознавание текста (OCR) и отсканированные страницы
Дерево структурыpdf-lib проверяет наличие дерева структурыприсутствуетне подтверждает корректность тегов и доступность по PDF/UA
ОтображениеPDF.js отрисовывает все 24 страницы двенадцати PDF в PNG, каждая страница просмотрена отдельнопройдено в пределах синтетических тестовых файловне даёт оценки качества, не проверяет фотографии и мелкий текст на сканах
Подписанный файлЗапуск сжатия файла с заглушкойотклонён с кодом SIGNED_PDF, выходной файл не созданне проверяет криптографически настоящие подписи

Уточнение о поле формы: его значение не всегда появляется при обычном извлечении текста в PDF.js, поэтому оно было прочитано через аннотации. Если ты ищешь в сжатом PDF введённое в форму значение и не находишь его, это ещё не означает, что оно отсутствует.

В режимах balanced и small изображение было перекодировано в JPEG с потерями, кроме запуска small с уже соблюдённым целевым размером. Декодированные инструкции содержимого для текста и линий при этом остались прежними, а данные изображения текстуры — нет. На отрисованных страницах результатов для файла с изображением положение и размеры изображения, а также поворот страницы остались такими же, как в оригинале. Важная деталь для самостоятельного просмотра файлов: уже в оригинале сгенерированное изображение перекрывает несколько строк текста. Это перекрытие — часть тестового файла, а не повреждение из-за сжатия. В результатах оно сохраняется. Из этого нельзя сделать вывод о читаемости каждой строки или дать оценку качества. Кроме того, сгенерированное изображение с текстурой и цветовым градиентом мало говорит о том, как фотографии, сканы или мелкий текст на сканах отреагируют на тот же уровень качества. По этой теме пригодится руководство Уменьшить отсканированный PDF.

Заглушка подписи показывает только то, что инструмент сжатия распознаёт файл со структурой подписи и не обрабатывает его. Согласно коду сжатия, зашифрованные и сертифицированные файлы тоже отклоняются. Этот тест не проверяет действительность настоящей подписи и не обходит никакую защиту. Подробнее — в руководстве Сжатие PDF с подписями и формами.

Ограничения и самостоятельная проверка

Этот инструмент лучше PDF24 или Adobe?

Эта страница не даёт ответа на такой вопрос. Мы не запускали другие программы или онлайн-сервисы с теми же файлами. Поэтому сравнительная оценка качества, скорости или цены была бы необоснованной. Рейтинги с процентами или ползунками тоже не заменяют такого сравнения. Для честного сравнения нужны один и тот же полный исходный файл, одни и те же страницы, зафиксированные настройки, точное число байтов и одинаковые проверки функций для всех результатов.

Как проверить свой PDF

  1. Сохрани неизменённую копию оригинала.
  2. Открой инструмент сжатия PDF и выбери файл. Если важны детали изображений, начни с режима без потерь.
  3. Запиши точный размер оригинала и результата в байтах, например из свойств файлов, и рассчитай экономию с помощью калькулятора степени сжатия.
  4. Начинай каждую следующую попытку снова с исходного файла, а не с уже сжатого результата. Сохраняй каждый результат под новым именем файла, чтобы ничего не перезаписать.
  5. Открой сохранённый файл в программе, которой пользуется и получатель. Проверь все страницы, выполни поиск по знакомому слову, проверь значения полей формы и ссылки, а также просмотри изображения и мелкий текст в исходном размере.
  6. Если твой PDF подписан цифровой подписью, зашифрован или сертифицирован, не сжимай его с помощью этого инструмента, а согласуй порядок действий с тем, кто его выдал.

Настройки конфиденциальности

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

Необходимые настройки

Обязательно

Ваш выбор и цветовая тема сохраняются локально. Инструменты для документов доступны и без необязательных сервисов.

Неактивно

Необязательный сбор статистики использования. Сейчас неактивен: согласие сохраняет ваш выбор, но не включает аналитические сервисы в этой предварительной версии.

Неактивно

Необязательная реклама. Сейчас неактивна: согласие сохраняет ваш выбор, но не включает рекламные сервисы в этой предварительной версии.

Необязательная аналитика и реклама отключены.