Страницы PDF открываются не той стороной
Разберитесь сначала, что именно не так. Боком — угол поворота страницы равен четверти или трём четвертям оборота. Вверх ногами — половине оборота. Зеркально, то есть текст читается справа налево, — это не поворот вообще, а отрицательный масштаб в описании страницы, и никакой угол его не исправит. Четвёртый случай: страницы повёрнуты по-разному, потому что каждая хранит своё число.
Коротко о цифрах
- Где хранится угол
- у каждой страницы своё число, общего для файла нет
- Нестандартные значения
- сорок пять градусов от сканеров и минус три четверти оборота от старых программ
- Как мы их приводим
- округление до ближайшей четверти оборота и свёртка в диапазон 0–360
- Зеркальность
- не поворот, а отрицательный масштаб — углом не исправляется
- Система отсчёта
- видимая рамка страницы, а не полный лист
Три состояния и их признаки
- Боком. Текст идёт снизу вверх или сверху вниз, страница выглядит альбомной вместо книжной. Лечится четвертью оборота в нужную сторону.
- Вверх ногами. Строки читаются, если перевернуть монитор; порядок букв в словах правильный. Лечится половиной оборота.
- Зеркально. Буквы отражены, слово читается справа налево, знаки препинания стоят не с той стороны. Поворотом не лечится: отражение задано отрицательным масштабом в матрице страницы.
- Вразнобой. Одни страницы стоят правильно, другие боком — обычная картина для документа, собранного из нескольких источников: угол хранится у каждой страницы отдельно.
Откуда берутся нестандартные углы
По спецификации угол поворота обязан быть кратен четверти оборота, но в реальных файлах это правило нарушают регулярно. Драйверы сканеров записывают промежуточные значения вроде сорока пяти градусов, а старые генераторы — отрицательные вроде минус трёх четвертей оборота. Библиотека, которая обрабатывает такой документ буквально, на этом останавливается с ошибкой на английском языке, и пользователь получает красную плашку вместо результата.
Мы такие углы округляем до ближайшей четверти оборота и приводим к диапазону от нуля до полного круга. Операция от этого становится применимой к любому документу: косой угол превращается в ближайший законный, отрицательный — в равный ему положительный, а страница разворачивается ровно так, как её задумывали. Побочный эффект один: сорок пять градусов округлятся, а не сохранятся, — держать в PDF диагональную страницу мы не умеем и не обещаем.
Что помнить при работе с повёрнутыми страницами
- Поворот в просмотрщике и поворот в файле — разные вещи: первый живёт до закрытия окна, второй записывается в документ.
- Поля обрезки задаются визуально: на странице, повёрнутой на четверть оборота, ваш «верх» приходится на другую физическую сторону листа, и пересчёт делает инструмент.
- Отсчёт полей и якорей идёт от видимой рамки страницы, а не от полного листа — у сканов и типографских макетов они не совпадают.
- Раскладка нескольких страниц на лист доворачивает содержимое вручную: механизм вставки чужих страниц угол поворота игнорирует, и без ручного доворота три квадранта из четырёх встали бы неправильно.
- Автоматически определять «правильную» сторону мы не беремся: для этого нужно читать содержимое и решать за вас, где верх.
Частые вопросы
Как отличить поворот на половину оборота от зеркального отражения?
Прочитайте любое слово. При перевороте буквы стоят в правильном порядке и просто вверх ногами, при отражении порядок обратный, а сами знаки выглядят как в зеркале — это видно даже на цифрах.
Инструмент отказался поворачивать страницу с углом сорок пять градусов?
Не откажется. Такой угол округляется до ближайшей четверти оборота, после чего операция выполняется как обычно. Диагональное положение при этом не сохраняется — страница встаёт ровно.
Почему после объединения страницы стоят по-разному?
Потому что каждая принесла собственный угол из своего исходного файла. Объединение эти числа не выравнивает и не должно: выравнивание испортило бы документы, в которых альбомные страницы задуманы автором.
Можно ли повернуть только часть документа?
Да, выбор страниц задаётся диапазонами вида один-три, пять. Номера, выходящие за пределы документа, не применяются молча — вам показывают, какие именно были отброшены.