ReportLab Изображение нарисовано "на холсте. Канва - PullRequest
5 голосов
/ 26 мая 2011

Изображение 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)

Как нарисовать его «нормально», как можно было бы ожидать?

Ответы [ 3 ]

4 голосов
/ 03 августа 2012

Используйте функцию 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()
3 голосов
/ 27 мая 2011

Я не могу проверить в данный момент, но это возможно из-за bottomup = 0 в вашем создании Canvas объекта.По умолчанию 1.Из документации :

Аргумент bottomup переключает системы координат.Некоторые графические системы (например, PDF и PostScript) размещают (0,0) в левом нижнем углу страницы, другие (например, многие графические пользовательские интерфейсы [GUI]) размещают оригами в верхнем левом углу.Аргумент bottomup устарел и может быть отброшен в будущем

Нужно посмотреть, действительно ли он работает для всех задач, а если нет, то избавиться от него

Учитывая предупреждения в этомцитата, я предполагаю, что установка его на 0 является источником проблемы.

0 голосов
/ 19 октября 2016

Чтобы нарисовать картинку с начальной точкой (0,0) в левом нижнем углу.

canvas.saveState()
canvas.transform(1, 0, 0, -1, 0, H)
draw_your_picture_code()
canvas.restoreState()

H - высота страницы.

...