Что проверялось, а что нет?
Проверялся тот же неизменённый код сжатия, который использует инструмент сжатия 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 года на диаграмме
Диаграмма показывает все девять запусков нашего измерения с QPDF 12.2.0 (WASM) в Node.js под Windows 11. Фильтруй по тестовому файлу или методу и переключайся между точным количеством байтов и оставшимся размером в процентах.
Показано 9 из 9 запусков
Текст · Без потерь
Размер уменьшен
- Оригинал
- 3 029 Байт · 100 %
- Результат
- 2 721 Байт · 89,83 %
- Заданный лимит
- Лимит не задан
Изображение · Без потерь
Размер уменьшен
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 1 358 764 Байт · 99,98 %
- Заданный лимит
- Лимит не задан
Изображение · Сбалансированный режим
Размер уменьшен
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 179 708 Байт · 13,22 %
- Заданный лимит
- Лимит не задан
Изображение · Сбалансированный режим, повторная попытка
Тот же размер, другая контрольная сумма
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 179 708 Байт · 13,22 %
- Заданный лимит
- Лимит не задан
Изображение · Сильное сжатие
Размер уменьшен
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 125 710 Байт · 9,25 %
- Заданный лимит
- Лимит не задан
Изображение · Сильное сжатие
Цель достигнута
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 125 710 Байт · 9,25 %
- Заданный лимит
- 250 000 Байт
Изображение · Сильное сжатие
Цель не достигнута, предоставлен полный PDF
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 74 707 Байт · 5,5 %
- Заданный лимит
- 128 Байт
Изображение · Сильное сжатие
Цель уже была достигнута ранее
- Оригинал
- 1 359 079 Байт · 100 %
- Результат
- 1 358 764 Байт · 99,98 %
- Заданный лимит
- 1 359 079 Байт
Уже оптимизированный текст · Без потерь
Сохранить оригинал без изменений
- Оригинал
- 2 721 Байт · 100 %
- Результат
- 2 721 Байт · 100 %
- Заданный лимит
- Лимит не задан
Без изменений – сохранён оригинал
Историческое измерение: оно ничего не говорит о браузерах, телефонах, текущей версии или других инструментах. Проценты показывают оставшийся размер, а не экономию. Введённый лимит — это заданное число, а не обещание. Таблица ниже содержит все девять запусков независимо от фильтров.
Этот тест не позволяет предсказать, насколько уменьшится твой PDF. Это зависит от содержимого файла. Уже три тестовых файла показывают разброс результатов: небольшой текстовый файл в режиме lossless уменьшился на 10,17 процента, а файл с изображением в том же режиме — всего на 0,02 процента. Только перекодирование в JPEG дало для файла с изображением экономию в 86,78 процента. В таблице представлены все девять запусков, в том числе те, которые не дали заметной экономии.
Экономия всегда рассчитывается по фактическому числу байтов: число сэкономленных байтов делится на исходный размер. При запуске в режиме 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. У каждой проверки своя методика, и её результаты относятся только к этим тестовым файлам.
Уточнение о поле формы: его значение не всегда появляется при обычном извлечении текста в PDF.js, поэтому оно было прочитано через аннотации. Если ты ищешь в сжатом PDF введённое в форму значение и не находишь его, это ещё не означает, что оно отсутствует.
В режимах balanced и small изображение было перекодировано в JPEG с потерями, кроме запуска small с уже соблюдённым целевым размером. Декодированные инструкции содержимого для текста и линий при этом остались прежними, а данные изображения текстуры — нет. На отрисованных страницах результатов для файла с изображением положение и размеры изображения, а также поворот страницы остались такими же, как в оригинале. Важная деталь для самостоятельного просмотра файлов: уже в оригинале сгенерированное изображение перекрывает несколько строк текста. Это перекрытие — часть тестового файла, а не повреждение из-за сжатия. В результатах оно сохраняется. Из этого нельзя сделать вывод о читаемости каждой строки или дать оценку качества. Кроме того, сгенерированное изображение с текстурой и цветовым градиентом мало говорит о том, как фотографии, сканы или мелкий текст на сканах отреагируют на тот же уровень качества. По этой теме пригодится руководство Уменьшить отсканированный PDF.
Заглушка подписи показывает только то, что инструмент сжатия распознаёт файл со структурой подписи и не обрабатывает его. Согласно коду сжатия, зашифрованные и сертифицированные файлы тоже отклоняются. Этот тест не проверяет действительность настоящей подписи и не обходит никакую защиту. Подробнее — в руководстве Сжатие PDF с подписями и формами.
Ограничения и самостоятельная проверка
Этот инструмент лучше PDF24 или Adobe?
Эта страница не даёт ответа на такой вопрос. Мы не запускали другие программы или онлайн-сервисы с теми же файлами. Поэтому сравнительная оценка качества, скорости или цены была бы необоснованной. Рейтинги с процентами или ползунками тоже не заменяют такого сравнения. Для честного сравнения нужны один и тот же полный исходный файл, одни и те же страницы, зафиксированные настройки, точное число байтов и одинаковые проверки функций для всех результатов.
Как проверить свой PDF
- Сохрани неизменённую копию оригинала.
- Открой инструмент сжатия PDF и выбери файл. Если важны детали изображений, начни с режима без потерь.
- Запиши точный размер оригинала и результата в байтах, например из свойств файлов, и рассчитай экономию с помощью калькулятора степени сжатия.
- Начинай каждую следующую попытку снова с исходного файла, а не с уже сжатого результата. Сохраняй каждый результат под новым именем файла, чтобы ничего не перезаписать.
- Открой сохранённый файл в программе, которой пользуется и получатель. Проверь все страницы, выполни поиск по знакомому слову, проверь значения полей формы и ссылки, а также просмотри изображения и мелкий текст в исходном размере.
- Если твой PDF подписан цифровой подписью, зашифрован или сертифицирован, не сжимай его с помощью этого инструмента, а согласуй порядок действий с тем, кто его выдал.