PIL ve reportlab ile anlamayacağım bir sorunla karşılaştım. Özellikle, bir PIL Image nesnesini kullanarak rapor dosyasında bir tuval üzerine drawImage kullanmak istiyorum. Ben ham verileri kullanarak web'den reportlab belgeler içine görüntüleri ekledikten Geçmişte ReportLab ve Python Görüntüleme Kitaplıktan hafıza görüntüleri sorunu
, StringIO ve reportlab en ImageReader sınıfı. Ne yazık ki, ImageReader bir dosya adı veya nesne gibi bir dosya tamponu alır.nihai amaç reportlab PDF QR kodları, (PIL nesneleri olan) koymak mümkün olmaktır. İş yapan bir şey şu şekildedir:
size, qrcode = PyQrcodec.encode('http://www.google.com')
qrcode.save("img.jpeg")
self.pdf.drawImage(ImageReader("img.jpeg"), 25, 25, width=125, height=125)
self.pdf.showPage()
Bu, görüntüyü kaydeder ve daha sonra pdf'ye okur. Açıkçası bunu böyle yapmak mantıklı değil.
çabalarım son sürümü (2.4) ile ilgili cevaplar bulmasını sağlar ReportLab nispeten uzun geliştirme tarihinin daha da ağırlaşmaktadır. Yardım için
teşekkürler.
Reportlab 2.4 için kaynak baktığımızda
Bu arada, yukarıdaki işlev raporlab içinde lib/utils.py dizinindedir. – philipk
+1 iyi yakalama. PIL modülünü PIL klasörüne site yolundan ayırmak PIL klasörünü sorgulanabilir bir karardır, ancak ReportLab buna güvenerek daha kötü bir hata yapar. Sadece Görüntüyü içe aktarıyor olmalı. Sorunun etrafından maymun-yamayla çalıştım: kendimi içe aktar ve “reportlab.lib.utils.Image = Image”. – bobince
@bobince burada doğru bir fikir var. ReportLab, PIL konumuyla ilgili gerçekten çok kötü varsayımlar yapar, ancak ReportLab koduyla uğraşmaktan ve dağıtımınızı karmaşıklaştırmaktan 'reportlab.lib.utils.Image = Resim' ile içe aktarma işleminden sonra yama yapmak daha temizdir. – dkamins