AffineTransform at = new AffineTransform(w, 0, 0, h, 20, 20);
at.translate(0.5, 1);
at.rotate(Math.toRadians(90));
Ширина и высота должны быть крошечным, чтобы сохранить изображение на странице, вращать собой хлюпает изображение, и перевести до того поворота, кажется, масштабировать изображение огромно.
Это ошибка, или я просто не понимаю PDFBox?
Это не ошибка, это просто математика. Вам просто нужно знать, что если у вас есть AffineTransform at
, а затем позвоните по номеру at.translate(...)
или at.rotate(...)
, вы не сделаете значение перевода/вращения аффинного преобразования в заданные значения, но вместо этого замените ваше преобразование на состав преобразование и перевод/вращение.
Это означает, что, например,
AffineTransform at = new AffineTransform(w, 0, 0, h, 20, 20);
at.translate(0.5, 1);
является не то же самое, как
AffineTransform at = new AffineTransform(w, 0, 0, h, 20.5, 21);
, как вы могли бы ожидать, но вместо
AffineTransform at = new AffineTransform(w, 0, 0, h, 20 + w/2, 20 + h);
Поэтому ширина и высота должны быть крошечным, чтобы сохранить изображение на странице - translate(0.5, 1)
нажатие очень далеко в противном случае.
Как порядок, в котором вы составляете вопросы трансформации, вы могли бы быть более счастливым, если вы создали преобразования в следующем порядке:
AffineTransform at = AffineTransform.getTranslateInstance(0.5, 1);
at.rotate(Math.toRadians(90));
af.concatenate(new AffineTransform(w, 0, 0, h, 20, 20));
PS: Как сказал Тильман: Помните, что вращение вокруг дна -left, поэтому эта композиция будет вращаться и за кадром. Просто добавьте h+20
в координату x исходного перевода.
Итак, вы создаете матрицу преобразования. Но как вы его используете? И какой эффект вы ожидаете от своих значений трансформации? – mkl
Согласно моему первому предложению: «Я хочу, чтобы страница была ландшафтной, а также поворот изображения». Но и перевод, и вращение имеют смехотворные эффекты масштабирования. – djb
@djb: Я обновил свой ответ. Вчера я не тестировал поворот страницы на 90 °, и, используя его, я получил описанный вами эффект. –