ReportLab Image是“在画布上绘制的.Canvas

时间:2011-05-26 10:06:45

标签: reportlab

ReportLab的图片将在PDF Canvas上显示镜像,其中包含以下代码段:

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 个答案:

答案 0 :(得分:4)

使用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()

答案 1 :(得分:3)

我目前无法测试,但可能是因为您创建bottomup = 0对象时Canvas。默认值为1。来自documentation

  

自下而上的参数可以切换坐标系。一些图形系统(如PDF和PostScript)在页面的左下角放置(0,0)其他(如许多图形用户界面[GUI])将origen放在左上角。 bottomup参数已弃用,将来可能会被删除

     

需要看看它是否真的适用于所有任务,如果没有,那就去除它

鉴于该引用中的警告,我的猜测是将其设置为0是问题的根源。

答案 2 :(得分:0)

使用左下角的原点(0,0)绘制图片。

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

H是页面的高度。