Как я могу повернуть в центре reportlab.graphics.shapes.DrawingPython

Программы на Python
Ответить
Anonymous
 Как я могу повернуть в центре reportlab.graphics.shapes.Drawing

Сообщение Anonymous »

Кажется, я не могу повернуть рисунок в центре.
У меня есть рисунок svg: Drawing.getBounds()=(14.173228346456694, 14.173228346456654, 581.1023622047245, 581.1023622047245), Drawing.width=595.2755905511812, Drawing.height=595.2755905511812, Drawing.transform=(1, 0, 0, 1, 0, 0), Drawing.hAlign='LEFT', Drawing.vAlign='BOTTOM'
Я поворачиваю и помещаю несколько рисунков в ряд*col массив:

Код: Выделить всё

            r = i // col
c_idx = i % col
x = c_idx * cell_w + padding
y = page_height - ((r + 1) * cell_h) + padding

drawing = svg2rlg(svg_path)
if drawing is None:
raise ValueError("Could not convert SVG to drawing object.")
# Scale to fit within cell
print(f"{drawing.getBounds()=}, {drawing.width=}, {drawing.height=}, {drawing.transform=}, {drawing.hAlign=}, {drawing.vAlign=}")
if rotate_x_y[0] > 0:
drawing.rotate(rotate_x_y[0], rotate_x_y[1]*drawing.width, rotate_x_y[2]*drawing.height)

max_w = cell_w - 2 * padding
max_h = cell_h - 2 * padding
scale_x = max_w / drawing.width
scale_y = max_h / drawing.height
scale = min(scale_x, scale_y)
drawing.width *= scale
drawing.height *= scale
drawing.scale(scale, scale)
# Center in cell
dx = x + (max_w - drawing.width) / 2
dy = y + (max_h - drawing.height) / 2
renderPDF.draw(drawing, c, dx, dy)
но я не могу заставить draw.rotate() работать
Я попробовал вызвать draw.rotate(90), похоже, это то же самое, что и Drawing.rotate(90, 0, 0)
центр вращения также не находится в w/2, h/2
Я всегда получаю очень странные результаты, что бы я ни пробовал.
исходный PDF-файл выглядит так:
Изображение

повернутые результаты:
Изображение
Изображение
Изображение
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... es-drawing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»