Поворот изображения после добавления в PDF с использованием Reportlab - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать PDF-документ с изображением, которое будет вращаться. Я могу успешно создать PDF-документ, добавить изображение и сохранить его, но как только я пытаюсь повернуть его, у меня возникает много проблем.

Одна вещь, которую я пытаюсь понять, это где топор для вращения, он в 0,0 (слева внизу для PDF) или где-то еще?

Вот мой текущий рабочий код:

output = BytesIO()
# create a new PDF with Reportlab
c = canvas.Canvas(output)

c.saveState()
c.translate(X?, Y?) # TODO find this !
c.rotate(45)

c.drawImage('path/to/image.png', position_left, position_top, width=img_width, height=img_height, mask='auto')
c.restoreState()
c.save()

(Так как точка PDF-документов (0,0) находится внизу справа, у меня есть position_left и position_top, которые относятся к верхней левой точке документа, где я хочу разместить изображение).

Моя проблема здесь заключается в том, что я не знаю, как задать значения c.translate(X?, Y?), чтобы изображение вращалось вокруг своей центральной оси, то есть оставалось в той же позиции на документе, но вращалось само от своей центральной точки. .

Будет ли работать c.translate(X?, Y?) сработает или мне нужно использовать продвинутые механизмы для поворота "просто" изображения в документе PDF? Если да, можете ли вы указать мне правильный путь?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете использовать технику, упомянутую ниже. SO Thread

Простой метод поворота изображений в reportlab

from reportlab.platypus.flowables import Image

class RotatedImage(Image):

    def wrap(self,availWidth,availHeight):
        h, w = Image.wrap(self,availHeight,availWidth)
        return w, h
    def draw(self):
        self.canv.rotate(90)
        Image.draw(self)

I = RotatedImage('../images/somelogo.gif')
...