belun.app Блог
EN

Как превратить страницы PDF в картинки, ничего никуда не загружая

Почему разрешение важнее формата, когда JPG выигрывает у PNG на сканах и как браузер сам, без сервера, растеризует страницу PDF.

Распечатанные страницы документа на столе — конвертация PDF в изображения JPG

Причины превратить PDF в картинки обычно скучные. Форма принимает только JPG. Нужна одна страница для презентации. Заказчик просит «просто картинку счёта», потому что открывать PDF с телефона неудобно. Конвертер PDF в JPG делает это прямо во вкладке, которая у вас уже открыта.

Важен вот какой момент. Обычные сайты для такой задачи забирают документ, загружают его на сервер, обрабатывают там и обещают удалить через час. Для меню кафе — нормально. Для подписанного договора, результата анализов или скана паспорта это обещание и есть вся защита.

Разрешение важнее формата

Почти все жалобы на конвертацию — мыльный текст, рваные линии таблиц, нечитаемые сноски — упираются в разрешение, а не в выбор между JPG и PNG.

Страницы PDF измеряются в пунктах, их 72 на дюйм. Обычный A4 — это 595×842 пункта. При 72 DPI получится картинка 595×842 пикселя, меньше экрана телефона. Общий вид разобрать можно, мелкий шрифт в 9 пунктов превращается в кашу.

Трёх значений хватает почти всегда:

  • 72 DPI — миниатюра или сетка превью
  • 150 DPI — всё, что читают с экрана: A4 становится примерно 1240×1754, мелкий шрифт остаётся разборчивым
  • 300 DPI — если картинку будут печатать или распознавать через OCR

300 DPI на длинном документе обходятся дорого. Двадцать страниц A4 — это по 2480×3508 пикселей каждая, и каждую нужно отрисовать, закодировать и удержать в памяти. На телефоне именно здесь начинаются тормоза.

JPG или PNG

Для скана — всего, что прошло через планшетный сканер или камеру телефона, — JPG выигрывает без вопросов. В исходнике уже есть шум матрицы и фактура бумаги, так что сжатию с потерями есть где развернуться. Файлы выходят в три-пять раз меньше PNG, и при 150 DPI разницы не видно.

Для страниц из векторного содержимого — текст, таблицы, графики, схемы — PNG стоит лишних килобайт. JPG сжимает блоками 8×8, а резкая граница чёрного и белого — ровно то, что страдает сильнее всего: вокруг букв появляется сероватый ореол. При 300 DPI это перестаёт быть заметным, при 72 DPI выглядит дёшево.

Ползунок качества влияет только на JPG. Ниже 70% артефакты становятся видны, выше 90% файл растёт быстро, а картинка почти не меняется. 85% — разумное значение по умолчанию.

Как браузер рисует страницу PDF

Страница PDF — это не картинка. Это маленькая программа: перейди сюда, поставь такой цвет заливки, проведи кривую, покажи такую-то строку таким-то шрифтом и кеглем. Отрисовка означает выполнение этой программы.

Конвертер читает поток содержимого страницы, следит за матрицей преобразований и превращает каждую инструкцию в команду рисования на canvas. Контуры, области обрезки, пунктиры, прозрачность, встроенные изображения в полудюжине цветовых пространств — всё это проходит насквозь.

Единственное место, где браузеру приходится идти на компромисс, — текст. Растеризация встроенной шрифтовой программы требует интерпретации контуров глифов, а такого API браузеры не дают. Поэтому каждый символ рисуется ближайшим системным шрифтом и ставится по отдельности — по таблице ширин, которая хранится в самом PDF. Переносы строк, границы колонок и геометрия страницы оказываются ровно там, где их задал документ; на страницах с необычной гарнитурой формы букв могут отличаться. Сканы этой проблемы лишены — они и так изображения и выходят пиксель в пиксель.

Чего конвертер не умеет

Зашифрованные PDF отклоняются сразу, а не превращаются в стопку пустых страниц. Ещё два формата изображений остаются нераспознанными: JPEG 2000 и факсовое сжатие CCITT, которые попадаются в выводе старых сканеров. Если пустыми вышли все страницы, причина почти наверняка в этом.

Всё остальное — подсчёт страниц, отрисовка, кодирование JPEG, сборка ZIP — происходит на вашей машине. Откройте страницу, отключите сеть, и конвертер продолжит работать.

Перетащите файл в конвертер PDF в JPG и выберите 150 DPI, если точно не нужно больше.

Попробуйте инструмент

PDF в JPG →