2013-02-15 127 views
2

我正在尋找擴展功能的工具使用報告實驗室的pdfgen,目前只繪製字符串使用;如何使用Report Lab的畫布drawImage()插入圖像?

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,因爲我試圖記錄功能得到的參數&我什麼也沒有。

回答

4

我曾經使用過的方法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" 
},