Я пытаюсь создать PDF-файлы с изображениями.reportlab Изображение в формате PDF: «пожалуйста, назовите tobytes()»
im = ImageReader('00001.png')
c = canvas.Canvas('networkanalyze.pdf', pagesize=A4)
c.drawImage(im, 10, 10, mask='auto')
c.showPage()
c.save()
Traceback:
Traceback (most recent call last):
File "pdf.py", line 9, in <module>
c.drawImage(im, 10, 10, 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:
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, 256, 720, width=100, 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", line 699, in tostring
"Please call tobytes() instead.")
Exception: tostring() has been removed. Please call tobytes() instead.
Так что, кажется, не код относящийся.
Я бегу питона на сервере:
Python 2.6.6 (r266: 84292, 21 ноября 2013, 10:50:32) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] на linux2
Версия подушки: Подушка-3.2.0-py2.6-линукс-x86_64.egg
Версия ReportLab: ReportLab-2,7-py2.6-линукс-x86_64.egg
Я искал эту ошибку без ошибок, Что делать, чтобы решить эту проблему ?
понижены до 3,1 таких же ошибки. Я бы обновился до python 2.7, но я боюсь, что мне придется переустановить все мои модули python на 2.6, например, bs4 и т. Д. Я не могу использовать pip, потому что firewall на virtualenv. –
О версии, извините за ошибку, но 2,9 вместо 3.1 должны быть хорошими (у вас должно быть предупреждение, но не исключение). Об обновлении Python вы правы: если вы не можете получить доступ к pip, вам придется переустановить все модули. Я бы сказал, что по-прежнему стоит потратить время на модернизацию, потому что Python 2.6 становится действительно старым;) – filaton
Устранена проблема. Огромное спасибо. Я обновляю свой env, но у меня есть презентация в пятницу, и я не могу рисковать своим приложением. Любой способ скрыть предупреждение? –