Фото с телефона в PDF: почему файл получается огромным, а страница повёрнута набок
«Изображения в PDF» помещает каждое фото на отдельную страницу в полном размере в пикселях: три JPEG по 3,2 МБ с телефона превратились в PDF на 41,5 МБ, а портретное фото попало на альбомную страницу. Уменьшите фото перед конвертацией, а повёрнутую страницу поверните потом.
Изображения в PDF превращает файлы JPEG, PNG, GIF или BMP в один PDF: одно изображение на страницу, в порядке загрузки. Ничего при этом не уменьшается, а флаг поворота, который телефоны записывают в портретные фото, игнорируется. В одном тестовом прогоне три JPEG по 3,2 МБ вернулись PDF на 41,5 МБ, а фото с портретным флагом оказалось на альбомной странице. Уменьшите фото перед загрузкой, а повёрнутую страницу исправьте потом через «Повернуть PDF».
Разбор на примере
Исходник: три JPEG размером 4032 × 3024 пикселя, около 3,2 МБ каждый (9,7 МБ вместе), то есть размер обычного кадра с камеры телефона. Это были синтетические изображения с мелким шумом, поэтому они сжимаются хуже большинства реальных фото; считайте все размеры ниже результатом одного прогона 2026-10-04 на локальном сервере, собранном из текущего исходного кода, а не обещанием. Запрос:
curl -s -o IMG_0001.pdf \
-F fileInput=@IMG_0001.jpg -F fileInput=@IMG_0002.jpg -F fileInput=@IMG_0003.jpg \
https://pdf123.xyz/api/v1/convert/img/pdf
| Шаг | Результат |
|---|---|
| 3 JPEG, 4032 × 3024 px | 9,7 МБ всего |
| Изображения в PDF | 3 страницы, 41,5 МБ, каждая страница 4032 × 3024 pt |
| Сжать PDF для этого PDF | 39,9 МБ, примерно на 4% меньше |
| Те же 3 фото, сначала уменьшенные до 1600 px по длинной стороне | 1,7 МБ всего |
| Изображения в PDF для уменьшенных фото | 3 страницы, 6,2 МБ, каждая страница 1600 × 1200 pt |
| Сжать PDF для этого PDF | 6,2 МБ, меньше не стало |
Выходной файл называется по первому файлу, поэтому скачанный выше файл — IMG_0001.pdf.
Почему 10 МБ фото превращаются в 41 МБ
JPEG хранит фото как сжатые с потерями блоки. «Изображения в PDF» не копирует эти байты в PDF. Оно декодирует каждое изображение, переводит его в 8-битный RGB и сохраняет сырые пиксели с lossless-сжатием Flate. Один кадр 4032 × 3024 — это 36,6 миллиона байт RGB (4032 × 3024 × 3). Flate уменьшил это примерно до 13,8 МБ на страницу, что всё равно больше чем в четыре раза превышает исходный JPEG. Девять копий тех же трёх фото дали PDF на 124,6 МБ.
Это объясняет и строки со сжатием. «Сжать PDF» пережимает потоки и упаковывает объекты; оно не понижает разрешение изображений и не кодирует их заново. Пиксели уже сжаты Flate, так что убирать почти нечего (почему). Путь к меньшему файлу — меньше пикселей до сборки PDF.
Есть и вторая цена. Каждая страница получает размер своего изображения, один пиксель на один пункт, поэтому фото в 4032 пикселя даёт страницу шириной 56 дюймов. Просмотрщики подгоняют её под окно, а принтеры масштабируют под бумагу, но границы страницы не равны A4 или Letter. В форме нет параметров размера бумаги, вписывания, типа цвета или автоповорота, а поля API fitOption, colorType и autoRotate сервер не читает.
Сначала уменьшите, потом конвертируйте
Измените размер фото перед загрузкой. На Mac это делает sips -Z 1600 IMG_0001.jpg --out small1.jpg. С ImageMagick в любой системе:
magick IMG_0001.jpg -resize 1600x1600 -quality 85 small1.jpg
Оба способа превращают фото 4032 × 3024 в 1600 × 1200. В этом прогоне три JPEG уменьшились с 9,7 МБ до 1,7 МБ, а трёхстраничный PDF — с 41,5 МБ до 6,2 МБ. На листе Letter 1600 пикселей на 11 дюймов — это около 145 dpi: читаемо для сфотографированной формы, грубо для мелкого шрифта. Выбирайте размер по самому мелкому тексту, который нужно прочитать, а не только по целевому размеру файла.
Размер важен дважды, потому что у следующих инструментов тоже есть потолок. Тело одного запроса ограничено 100 MiB. PDF на 124,6 МБ выше был отклонён с 413 (payload_too_large) при отправке в «Сжать PDF». Как это обойти, читайте в материале Когда большой PDF не загружается.
Страница, повёрнутая набок
Многие телефоны сохраняют портретное фото как альбомные пиксели и добавляют EXIF-тег ориентации, который велит просмотрщику повернуть его. Приложения для фото обычно этому тегу подчиняются. «Изображения в PDF» его не читает: JPEG 1600 × 1200 с тегом ориентации 6 (поворот на 90° по часовой стрелке) дал альбомную страницу 1600 × 1200.
Исправляется это через Повернуть PDF: введите номер страницы, здесь 1, и угол 90. В результате у этой страницы стоял /Rotate 90, так что просмотрщик показывает её прямо. Для фото с тегом в другую сторону (ориентация 8) используйте 270, для перевёрнутых (ориентация 3) — 180; здесь проверена только ориентация 6. «Повернуть PDF» задаёт у страницы абсолютный угол, а не прибавляет к текущему, и изображение заново не кодирует. Если не хочется исправлять страницы по одной, поверните фото в приложении для фото и сохраните копию перед конвертацией.
От чего этот инструмент откажется
- HEIC и другие форматы. Страница принимает
.png,.jpg,.jpeg,.gifи.bmp. Настоящий файл HEIC вернул 400,unsupported_file_type; сначала экспортируйте его в JPEG. - Файл, не являющийся изображением. Загрузка PDF на этот эндпоинт вернула тот же 400 с сообщением «The file is not a supported image.»
- SVG. Файл SVG получил тот же 400.
- Текст с возможностью поиска. Текст на сфотографированной странице остаётся пикселями. OCR возвращает текст в Markdown; текстовый слой в этот PDF он не добавляет (как это работает).
- Прозрачность. Изображения переводятся в RGB, альфа-канал отбрасывается.
Проверьте перед отправкой
Откройте PDF и сверьте число страниц с фото по порядку. Порядок страниц равен порядку загрузки; в тесте при загрузке портретного PNG перед альбомным портретная страница оказалась первой. Затем посмотрите на размер файла, прежде чем прикреплять его.