Как сжать PDF и не потерять текстовый слой
Если по документу должен работать поиск, обычное сжатие вам не подходит — и это не настройка, которую можно найти в интерфейсе. Наш компрессор перерисовывает каждую страницу в JPEG и собирает новый файл из картинок: текста в нём после этого нет физически. Вес в таком случае снимают другими способами: выбрасывают ненужные страницы, извлекают нужный диапазон и пересохраняют структуру файла, оставляя содержимое нетронутым.
Коротко о цифрах
- Что делает сжатие
- новый документ из одних JPEG: текста, ссылок и закладок в нём нет
- Как проверить слой
- извлечение текста: пустой результат означает, что терять нечего
- Что сохраняет структуру
- qpdf --linearize: содержимое не пересчитывается
- Безопасное уменьшение
- удалить страницы или извлечь нужный диапазон — ноль потерь качества
Сначала проверьте, что терять
- Прогоните документ через извлечение текста.
- Текст извлёкся — слой есть, растеризация его уничтожит, действуйте по этой странице.
- Пусто или один мусор — слоя нет, документ и так набор картинок, и сжимать его можно смело.
- Извлеклась часть — значит, документ смешанный: часть страниц свёрстана, часть отсканирована.
- В смешанном случае разделите файл и обрабатывайте половины по-разному.
Что реально уменьшает такой документ
- Удаление страниц. Приложения, дубли и пустые листы между разделами весят столько же, сколько содержательные страницы.
- Извлечение диапазона. Если адресату нужны три листа из ста, отдайте три: остальные девяносто семь просто не поедут.
- Пересохранение структуры. Оно убирает дубли ресурсов и мусор от прошлых правок, не меняя ни одного символа.
- Замена вставленных изображений на облегчённые до сборки документа — если исходник у вас, а не только готовый PDF.
Почему у нас нет кнопки «сжать с сохранением текста»
Потому что честной такой кнопки не бывает. Сжатие с сохранением текстового слоя означает пересжатие только картинок внутри документа с сохранением всей остальной структуры: шрифтов, потоков содержимого, ссылок. Наш компрессор устроен иначе — он работает через рендер страницы, и текст в нём теряется по устройству метода, а не по недосмотру.
Показать ползунок, который обещает сохранить текст, и не сохранить его — хуже, чем сказать прямо. Поэтому страница с текстовым слоем отправляет вас к оптимизации и удалению страниц, а страница про сканы — наоборот, к сжатию: там терять нечего, и совет там противоположный не случайно.
Частые вопросы
Есть ли режим сжатия, который не трогает текст?
У нашего компрессора нет: он работает через перерисовку страниц. Уменьшить документ с сохранением текста можно только удалением страниц и пересохранением структуры.
Я сжал файл и потерял поиск. Можно ли вернуть?
Только из исходного файла до сжатия. Из готовых картинок текст восстанавливается лишь распознаванием, и это уже другая задача с другими ошибками.
Как понять, что в документе есть текстовый слой?
Попробуйте выделить строку мышью в просмотрщике или прогоните файл через извлечение текста. Если выделяется прямоугольник вместо букв, перед вами картинка.
Что делать со смешанным документом?
Разделить его: страницы со сканами сжать растеризацией, свёрстанные оставить как есть, а потом при необходимости собрать обратно в один файл.