2016-12-05 64 views
0

我在互联网上遇到的所有示例都是从url(本地或网页)加载图像。我想要的是直接从原始字节到PDF格式的图像。如何使用ReportLab从原始字节中绘制图像?

UPDATE:

@georgexsh这是基于我在下面的评论的理解我的代码:

def PDF_view(request): 
    response = HttpResponse(content_type='application/pdf') 

    ... 

    page = canvas.Canvas(response, pagesize=A4) 
    page.setTitle("Sample PDF") 


    image = StringIO(raw_image_bytes) # raw_image_bytes is from external source 
    image.seek(0) 
    page.drawImage(image, 100, 100) 

    filename = 'document.pdf' 
    page.showPage() 
    page.save() 

    return response 

回答

1

report lab Image object source code,类文件obj是可以接受的,所以你可以用StringIO包裹的图像数据/ io.BytesIO,将其传递为filename


更新:

为你使用drawImage方法,它需要一个ImageReader OBJ:

from reportlab.lib.utils import ImageReader 
import io 
img = ImageReader(io.BytesIO(raw_image_bytes)) 
page.drawImage(image, ...) 
+0

能否请你告诉我该怎么做?我还没有用过'StringIO'。我得到错误,如“初始值必须是str或None,而不是字节”。 – someone

+0

粘贴你的代码 – georgexsh

+0

我编辑了我的问题。 – someone

相关问题