Изображение ReportLab выходит зеркальное отображение на холсте PDF со следующим фрагментом кода:
from reportlab.pdfgen import canvas from reportlab.platypus import Image pdf = canvas.Canvas(filename, bottomup=0) logo_image = Image( "%s/images/wsp_logo.jpg" % settings.STATIC_ROOT, width=200, height=200) logo_image.drawOn(pdf, 100, 100)
Как нарисовать его «нормально», как можно было бы ожидать?
Используйте функцию canvas.scale, чтобы перевернуть изображение.
canvas.saveState() canvas.translate(x, y) canvas.scale(1,-1) canvas.drawImage(img_path, 0, 0, width=-width, height=-height, mask='auto') canvas.restoreState()
Я не могу проверить в данный момент, но это возможно из-за bottomup = 0 в вашем создании Canvas объекта.По умолчанию 1.Из документации :
bottomup = 0
Canvas
1
Аргумент bottomup переключает системы координат.Некоторые графические системы (например, PDF и PostScript) размещают (0,0) в левом нижнем углу страницы, другие (например, многие графические пользовательские интерфейсы [GUI]) размещают оригами в верхнем левом углу.Аргумент bottomup устарел и может быть отброшен в будущем Нужно посмотреть, действительно ли он работает для всех задач, а если нет, то избавиться от него
Аргумент bottomup переключает системы координат.Некоторые графические системы (например, PDF и PostScript) размещают (0,0) в левом нижнем углу страницы, другие (например, многие графические пользовательские интерфейсы [GUI]) размещают оригами в верхнем левом углу.Аргумент bottomup устарел и может быть отброшен в будущем
Нужно посмотреть, действительно ли он работает для всех задач, а если нет, то избавиться от него
Учитывая предупреждения в этомцитата, я предполагаю, что установка его на 0 является источником проблемы.
0
Чтобы нарисовать картинку с начальной точкой (0,0) в левом нижнем углу.
canvas.saveState() canvas.transform(1, 0, 0, -1, 0, H) draw_your_picture_code() canvas.restoreState()
H - высота страницы.
H