Wie verwende ich reportlab ist mit der Methode drawImage ein Bild url?
Wenn ich versuche die folgende:
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen.canvas import Canvas
import urllib
import StringIO
import PIL.Image
image_file = urllib.urlopen('https://www.google.com/images/srpr/logo11w.png')
image_string = StringIO.StringIO(image_file.read())
logo = PIL.Image.open(image_string)
canvas = Canvas('output.pdf', pagesize=letter)
canvas.drawImage(logo, 10, 10)
canvas.showPage()
canvas.save()
Bekomme ich diesen Fehler:
Traceback (most recent call last):
File "imagefromurl.py", line 12, in <module>
canvas.drawImage(logo, 10, 10)
File "/usr/lib/python2.7/dist-packages/reportlab/pdfgen/canvas.py", line 857, in drawImage
imgObj = pdfdoc.PDFImageXObject(name, image, mask=mask)
File "/usr/lib/python2.7/dist-packages/reportlab/pdfbase/pdfdoc.py", line 2090, in __init__
ext = string.lower(os.path.splitext(source)[1])
File "/usr/lib/python2.7/posixpath.py", line 96, in splitext
return genericpath._splitext(p, sep, altsep, extsep)
File "/usr/lib/python2.7/genericpath.py", line 91, in _splitext
sepIndex = p.rfind(sep)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 515, in __getattr__
raise AttributeError(name)
Reportlab ist die version 2.5.
- Ich denke, Sie sind fehlt den rest Ihres traceback...
- auch,
reportlab
ist bis zu der version 3.1.8 und ist verteilt als ein Rad, so lange, wie Sie ein up-to-datepip
Sie sollten in der Lage sein zu aktualisieren, ganz einfach. - danke, behoben
- bedeutet das, dass Sie versucht, es in 3.1.8 und es funktionierte?
- Nein, ich arbeite war es, als ich rief für eine Weile Weg. Ich habe nur vorgeschlagen das upgrade, weil ich mag glänzende neue Dinge, und auch, weil ich dachte, dass es in Fall war es ein Fehler mit reportlab, es könnte korrigiert wurden. Ach, ich hab im Grunde den gleichen Fehler, den Sie haben...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war, es zu tun die harte Weise. Das funktioniert (auch Hinzugefügt die notwendige Maske zu vermeiden, immer schwarz, transparent):
Obwohl der harte Weg würde mir erlaubt haben, um einen Fehler erkennen zu Holen, die Bild-url und behandeln (z.B. indem ein lokales Bild), und das geht nicht.