Что такое CropBox и MediaBox
У страницы PDF не один размер, а до пяти прямоугольников. MediaBox — физический лист, на котором всё нарисовано; CropBox — область, которую просмотрщик показывает и печатает. По умолчанию они совпадают, но у сканов и печатных макетов CropBox почти всегда меньше. Инструмент, который считает от MediaBox, а показывает пользователю CropBox, промахивается молча: файл открывается, содержимое просто оказывается не там.
Коротко о цифрах
- MediaBox
- физический размер листа, единственный обязательный прямоугольник
- CropBox
- видимая область; при отсутствии равен MediaBox
- Пример расхождения
- MediaBox 595×842 при CropBox [50,100,400,600] — видимое кончается на x=450
- Что пишет обрезка
- и CropBox, и MediaBox — иначе файл печатается в исходном размере
- Минимальная сторона
- 1 пункт: страницы, от которых ничего не осталось бы, не трогаются
Пять прямоугольников одной страницы
- MediaBox — физические границы листа. Обязателен, остальные при отсутствии берутся из него.
- CropBox — видимая область. Именно её показывает просмотрщик и в неё вписывает страницу при печати.
- BleedBox — область с запасом под обрез, нужна типографии, чтобы краска доходила до края.
- TrimBox — размер готового изделия после обрезки.
- ArtBox — значимое содержимое макета; в обычных документах встречается редко.
Ошибка, из-за которой это перестало быть теорией
Водяной знак в правом нижнем углу когда-то считался так: размер брался у MediaBox, а начало координат — у CropBox. На файле с MediaBox 595 на 842 и CropBox [50, 100, 400, 600] знак уезжал на x = 525, тогда как видимая полоса заканчивается на x = 450. Интерфейс при этом рапортовал об успехе, а пользователь получал документ, на котором знака не видно.
Теперь все инструменты размещения — водяной знак, нумерация, подпись — меряют в одной системе: размеры берутся у CropBox, и к результату добавляется смещение его начала. Поворот учитывается отдельно, потому что «верх» для пользователя и «верх» для файла на странице с /Rotate 90 — разные стороны.
Как это работает в наших инструментах
- Обрезка отсчитывает поля от CropBox: у скана он часто уже MediaBox, и отсчёт от листа срезал бы то, что человек видит.
- В результат пишутся оба прямоугольника — просмотрщику хватило бы CropBox, но принтеры и часть программ ориентируются на MediaBox, и файл печатался бы в исходном размере.
- Поля пользователя визуальные: на странице с поворотом «сверху» отображается на другую сторону прямоугольника, и это пересчитывается по квадрантам.
- Раскладка N-up вписывает в ячейку CropBox, иначе на лист попали бы поля под обрез и типографские метки.
- Страница, от которой после обрезки осталось бы меньше пункта, пропускается и остаётся нетронутой.
Частые вопросы
Почему водяной знак оказался за краем страницы?
Классическая причина — расчёт от MediaBox на файле, где CropBox меньше. Знак ставится по координатам физического листа и попадает в область, которую просмотрщик не показывает, хотя в файле он есть.
Обрезка действительно удаляет содержимое?
Нет. Она меняет прямоугольники страницы, а объекты за новой границей остаются в файле. Если рамку потом расширить, спрятанное вернётся — поэтому обрезка не годится как способ скрыть данные.
Как тогда убрать то, что скрыто обрезкой?
Нужна растеризация: сжатие с перерисовкой страниц или экспорт в JPG заново рисуют только видимую область, и всё, что было за рамкой, в новый файл не попадает.
Почему в разных программах один PDF выглядит по-разному?
Часть просмотрщиков показывает CropBox, часть — MediaBox, а некоторые редакторы при сохранении подгоняют их друг под друга. На файле, где прямоугольники расходятся, это и даёт разные поля вокруг содержимого.