Что такое растеризация
Растеризация — превращение команд рисования в пиксельную картинку. Страница считается один раз при выбранном разрешении, результат кодируется как изображение и вкладывается обратно в PDF того же размера в пунктах. Внешне документ прежний, внутри — фотография документа: текст больше не выделяется и не ищется, ссылки не нажимаются, поля формы не заполняются. Обратной операции не существует.
Коротко о цифрах
- Что получается
- каждая страница — изображение внутри PDF того же размера в пунктах
- Диапазон
- 72–300 DPI, качество JPEG от 0,30 до 0,95
- Потолок канваса
- 4096 пикселей по стороне
- Память
- A4 при 300 DPI ≈ 33 МБ на страницу; iOS Safari убивает вкладку примерно на 1 ГБ
- Что не растеризует
- оптимизация: qpdf переписывает структуру, содержимое страниц не трогает
Что происходит со страницей
- Считается масштаб: выбранное разрешение делится на 72, потому что пункт равен одной семьдесят второй дюйма.
- Если сторона выходит за 4096 пикселей, масштаб зажимается — таков кросс-браузерный потолок канваса.
- Страница рисуется на канвасе и кодируется в JPEG с выбранным качеством.
- Картинка вкладывается в новый документ на страницу исходного размера в пунктах, чтобы при печати ничего не поехало.
- Канвас освобождается сразу же, а кеш страницы сбрасывается: A4 при 300 точках на дюйм — это около 33 МБ памяти на страницу.
Что теряется навсегда
- Текстовый слой: выделение, поиск и копирование перестают работать, потому что символов в файле больше нет.
- Интерактивность: поля форм, кнопки и внутренние переходы превращаются в рисунок кнопки.
- Закладки и оглавление: новый документ собирается с нуля, а дерево закладок в него не переносится.
- Метаданные из свойств файла: название и автор в новый документ тоже не попадают.
- Векторность: логотип, который раньше был резким на любом увеличении, становится набором пикселей.
Когда она уместна и чем её заменить
- Уместна, когда важен размер, а не содержимое: скан для загрузки в форму с жёстким лимитом, где текстового слоя всё равно не было.
- Уместна как способ окончательно убрать спрятанное: то, что скрыто обрезкой или невидимым слоем, в картинку не попадёт.
- Не нужна, если исходник текстовый: оптимизация структуры уменьшает файл, не трогая содержимое страниц.
- Не нужна, если по документу будут искать: после растеризации искать станет нечего.
Частые вопросы
Можно ли вернуть текст после растеризации?
Только распознаванием изображения, а его у нас нет. Символы физически удалены из файла: восстановить их можно лишь заново, по картинке, с ошибками, свойственными любому распознаванию.
Почему после сжатия пропали закладки и название документа?
Потому что сжатие с растеризацией собирает новый документ из готовых изображений. Дерево закладок и поля свойств живут в структуре исходного файла, а не на страницах, и в новый документ не переезжают.
Как сжать файл, ничего не растеризуя?
Взять оптимизацию структуры: она перекладывает объекты и не трогает содержимое страниц, поэтому текст, ссылки и шрифты остаются на месте. Выигрыш скромнее, зато документ остаётся полноценным.
Растеризация ухудшает качество печати?
Зависит от разрешения. На 300 точках на дюйм отличить отпечаток от исходника трудно, на 150 уже заметны мягкие края у мелкого шрифта, на 72 документ годится только для экрана.