我正在尝试使用reportlab drawImage方法将PIL图像对象插入到pdf中。
im=Image.open('back_ground.png')
side_im=im.crop((2,2,277,819))
c=canvas.Canvas('report.pdf')
c.drawImage(side_im,200,700)
我收到此错误
AttributeError: 'Image' object has no attribute 'rfind'
答案 0 :(得分:2)
这对我有用:
import StringIO
from reportlab.lib.utils import ImageReader
im=Image.open('back_ground.png')
side_im=im.crop((2,2,277,819))
c=canvas.Canvas('report.pdf')
#c.drawImage(side_im,200,700)
side_im_data = StringIO.StringIO()
side_im.save(side_im_data, format='png')
side_im_data.seek(0)
side_out = ImageReader(side_im_data)
c.drawImage(side_out,200,700)
答案 1 :(得分:0)
仅作为更新,因为Python3中不推荐使用StringIO。导入io而不是StringIO并使用io.BytesIO()
import io
from reportlab.lib.utils import ImageReader
im=Image.open('back_ground.png')
side_im=im.crop((2,2,277,819))
c=canvas.Canvas('report.pdf')
#c.drawImage(side_im,200,700)
side_im_data = io.BytesIO()
side_im.save(side_im_data, format='png')
side_im_data.seek(0)
side_out = ImageReader(side_im_data)
c.drawImage(side_out,200,700)
答案 2 :(得分:0)
这个问题我持续了大约3个月。将python升级到3.8,将reportlab升级到3.5.42,将Pillow升级到7.0.0之后,它又开始在Amazon EC2实例上工作。以前它使Django gunicorn服务器崩溃,导致502错误。