如何使用Report Lab的canvas drawImage()插入图像?

2024-06-12 14:56:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望使用report lab的pdfgen扩展工具的功能,该工具目前只使用

if json_data[definition["field"]] != "":
    c.drawString(
        definition["x"] * cm,
        definition["y"] * cm,
        json_data[definition["field"]]
)

以及json

{
    "field":"name",
    "x":1.8,
    "y":10
},

所以为了画图像而不是字符串,我做了如下的工作

if json_data[definition["field"]] != "":
    if definition.has_key("image"):
        c.drawImage(
            os.path.join(os.getcwd(), "images", "successIcon.gif"),
            definition["x"] * cm,
            definition["y"] * cm,
            width=16, height=16,
        )
    else:
        c.drawString(
            definition["x"] * cm,
            definition["y"] * cm,
            json_data[definition["field"]]
)

将json更新为

{
    "field":"name",
    "x":1.8,
    "y":10,
    "image":"name"
},

drawImage的调用有问题吗?根据文档,它看起来是正确的,但它无法到达drawImage,因为我试图记录函数获取的参数&;我什么也得不到。


Tags: 工具nameimagereportjsonfielddataif
1条回答
网友
1楼 · 发布于 2024-06-12 14:56:52

我以前使用的方法没有任何问题,drawImage,下面的代码目前正在成功使用中

# If we have an image attribute
if definition.has_key("image"):
    if str(json_data[definition["field"]]) == 'True':
        # need to replace this with url on attribute
        filename = os.path.join(
            os.getcwd(),
            "static",
            "images",
            definition["image"]
        )
        c.drawImage(filename, definition["x"] * cm, definition["y"] * cm, 10, -10)

以及相应的json来指定图像文件名

{
    "field":"name",
    "x":1.66,
    "y":19.45,
    "image":"image.jpg"
},

相关问题 更多 >