Einfügen eines Bildes in Reportlab entweder aus PIL-Bild oder StringIO

Ich versuche, fügen Sie ein barcode-Bild in Reportlab. Ich weiß, es gibt eine Menge von Fragen auf, aber alle gehen davon ausdass Sie bereits die image-Datei in das Verzeichnis oder in das Dateisystem.

Aufgrund der Tatsache, dass Reportlab hat Probleme mit EAN13 barcodes, entschied ich mich für ein anderes Paket namens pyBarcode um das Bild zu erzeugen für mich.

Zunächst habe ich das Bild gespeichert in einem StringIO-Instanz und übergeben es direkt an reportlab.platypus.flowables.Image aber das schien nicht zu arbeiten. Dann lese ich die Dokumentation:

Formate unterstützt PIL/Java 1.4 (Python/Java Imaging Library) unterstützt werden.

Bedeutet dies, dass, wenn ich vorbeigehe, ein PIL-image, sollte dies funktionieren? Ich habe eine Ausnahme, wenn ich habe versucht, die folgenden:

>>> import PIL
>>> from reportlab.platypus.flowables import Image
>>> fp = StringIO(the_barcode.getvalue())
>>> barcode_image = PIL.Image.open(fp)
>>> doc = SimpleDocTemplate('barcode.pdf')
>>> story = [Image(barcode_image)]
>>> Traceback (most recent call last):
  File "create.py", line 57, in <module>
    main()
  File "create.py", line 24, in main
    save_pdf(fp, STYLE, ART, COLOR, SIZE)
  File "create.py", line 28, in save_pdf
    fp = StringIO(fp.getvalue())
  File "/home/mark/.virtualenvs/barcode/local/lib/python2.7/site-packages/reportlab-2.6-py2.7-linux-i686.egg/reportlab/platypus/flowables.py", line 402, in __init__
    if not fp and os.path.splitext(filename)[1] in ['.jpg', '.JPG', '.jpeg', '.JPEG']:
  File "/home/mark/.virtualenvs/barcode/lib/python2.7/posixpath.py", line 95, in splitext
    return genericpath._splitext(p, sep, altsep, extsep)
  File "/home/mark/.virtualenvs/barcode/lib/python2.7/genericpath.py", line 91, in _splitext
    sepIndex = p.rfind(sep)
  File "/home/mark/.virtualenvs/barcode/local/lib/python2.7/site-packages/PIL/Image.py", line 512, in __getattr__
    raise AttributeError(name)
AttributeError: rfind

Irgendwie PIL Bild scheint nicht zu funktionieren. Was soll ich übergeben Sie als erstes argument für Reportlab - Bild Funktion, wenn ich nicht den Dateinamen von dem Bild (da meine Bilder sind im Speicher erstellt)?

InformationsquelleAutor der Frage Mark | 2012-12-19

Schreibe einen Kommentar