python – reportlab图像到PDF:“请致电tobytes()”
发布时间:2020-12-20 11:51:09 所属栏目:Python 来源:网络整理
导读:我正在尝试使用图像生成PDF. im = ImageReader('00001.png')c = canvas.Canvas('networkanalyze.pdf',pagesize=A4)c.drawImage(im,10,mask='auto')c.showPage()c.save() 追溯: Traceback (most recent call last): File "pdf.py",line 9,in module c.drawIm
我正在尝试使用图像生成PDF.
im = ImageReader('00001.png') c = canvas.Canvas('networkanalyze.pdf',pagesize=A4) c.drawImage(im,10,mask='auto') c.showPage() c.save() 追溯: Traceback (most recent call last): File "pdf.py",line 9,in <module> c.drawImage(im,mask='auto') File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/pdfgen/canvas.py",line 909,in drawImage rawdata = image.getRGBData() File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/lib/utils.py",line 656,in getRGBData annotateException('nidentity=%s'%self.identity()) File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/lib/utils.py",line 653,in getRGBData self._data = im.tostring() File "/usr/lib/python2.6/site-packages/Pillow-3.2.0-py2.6-linux-x86_64.egg/PIL/Image.py",line 699,in tostring "Please call tobytes() instead.") Exception: tostring() has been removed. Please call tobytes() instead. 第二种方法: def generate_pdf(c): """ letter :- (612.0,792.0) """ im = Image.open("00001.png") c.drawInlineImage(im,256,720,width=100,height=60) c = canvas.Canvas("report_image.pdf",pagesize=letter) generate_pdf(c) c.save() 追溯: Traceback (most recent call last): File "pdf2.py",line 14,in <module> generate_pdf(c) File "pdf2.py",line 11,in generate_pdf c.drawInlineImage(im,height=60) File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/pdfgen/canvas.py",line 837,in drawInlineImage img_obj = PDFImage(image,x,y,width,height) File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/pdfgen/pdfimages.py",line 42,in __init__ self.getImageData() File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/pdfgen/pdfimages.py",line 156,in getImageData imagedata,imgwidth,imgheight = self.PIL_imagedata() File "/usr/lib/python2.6/site-packages/reportlab-2.7-py2.6-linux-x86_64.egg/reportlab/pdfgen/pdfimages.py",line 117,in PIL_imagedata raw = myimage.tostring() File "/usr/lib/python2.6/site-packages/Pillow-3.2.0-py2.6-linux-x86_64.egg/PIL/Image.py",in tostring "Please call tobytes() instead.") Exception: tostring() has been removed. Please call tobytes() instead. 所以它似乎与代码无关. 我在服务器上运行python: Python 2.6.6(r266:84292,2013年11月21日,10:50:32) 枕头版:Pillow-3.2.0-py2.6-linux-x86_64.egg reportlab的版本:reportlab-2.7-py2.6-linux-x86_64.egg 我没有成功搜索这个特殊的错误, 解决方法
从回溯中,您可以看到reportlab正在调用tostring()方法,该方法在Pillow中被
that commit弃用.
因此,如果将Pillow降级到3.1版,您的代码可能会有效. 但是,您的版本的reportlab已经过时,因为您的版本为2.7并且version 3.3已发布.我没试过,但我想他们已经解决了这个问题,至少,值得一试! reportlab的最新版本与Python 2.6不兼容,但你应该至少升级到Python 2.7,甚至升级到Python 3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |