Чем сжатие PDF отличается от оптимизации
Это две разные операции, которые часто называют одним словом. Сжатие перерисовывает каждую страницу в JPEG и собирает из картинок новый документ: вес падает в разы, текстовый слой, ссылки и закладки исчезают навсегда. Оптимизация переписывает файл через qpdf, меняя только порядок объектов: содержимое остаётся байт в байт, вес почти не меняется, зато первая страница открывается до докачки остального.
Коротко о цифрах
- Сжатие
- растеризация: каждая страница становится JPEG, вес падает в разы
- Оптимизация
- qpdf --linearize: порядок объектов меняется, содержимое — нет
- Потери при сжатии
- текстовый слой, поиск, ссылки, закладки и поля форм не переносятся
- Выигрыш оптимизации
- первая страница показывается до докачки файла
- Где выполняется
- сжатие — в браузере, оптимизация — на сервере через qpdf
Что делает каждая из операций
- Сжатие: рендер страницы в канвас, кодирование в JPEG, вставка картинки в новый документ. Работает в браузере, файл не уходит на сервер.
- Оптимизация: qpdf переписывает файл с ключом линеаризации, объекты первой страницы уходят в начало. Работает на сервере, файл загружается.
- Сжатие уменьшает вес кратно, оптимизация — почти нет, а иногда добавляет байты из-за таблиц подсказок.
- Сжатие необратимо: из картинки текст обратно не собрать. Оптимизацию можно применять сколько угодно раз без потерь.
Что теряется и что остаётся
После сжатия в документе не остаётся ничего, кроме изображений страниц: ни выделяемого текста, ни поиска, ни ссылок, ни закладок, ни полей форм. Причина простая и структурная — новый документ собирается с нуля, и переносить в него всё перечисленное просто нечем. Внешне файл выглядит так же, поэтому потерю замечают позже, когда пытаются что-нибудь найти в нём поиском.
После оптимизации не теряется ничего. Шрифты, разметка, выделение текста, гиперссылки и оглавление остаются на месте, потому что qpdf не пересчитывает содержимое, а только перекладывает его в другом порядке. Ровно поэтому оптимизация не может служить заменой сжатию: она решает другую задачу.
Как выбрать за минуту
- Ответьте на один вопрос: нужен ли вам поиск по тексту в этом документе.
- Нужен — значит, сжатие исключено, остаются оптимизация и удаление лишних страниц.
- Не нужен, а файл состоит из сканов — берите сжатие, терять там нечего.
- Файл лежит в вебе и его открывают в браузере — линеаризуйте, даже если вес вас устраивает.
- Нужны и вес, и текст — делайте две версии документа вместо одного компромиссного файла.
Частые вопросы
Можно ли применить обе операции подряд?
Да, и порядок имеет значение: сначала сжатие, потом линеаризация готового файла. В обратном порядке результат сжатия придётся линеаризовать заново.
Почему оптимизация иногда увеличивает файл?
Потому что к документу добавляются таблицы подсказок, сопоставляющие страницам диапазоны байт. Это плата за возможность показать первую страницу до загрузки остального.
Какая операция безопаснее для важного документа?
Оптимизация: она не трогает содержимое и не меняет ни одного пикселя. Сжатие следует применять только к копии, сохранив исходник в неприкосновенности.
Что выбрать, если файл просто долго открывается?
Сначала линеаризацию: медленное открытие часто вызвано порядком объектов, а не весом. Если после этого всё ещё медленно, причина в размере, и тогда нужно сжатие.