如何使用reportlab将数千个图像添加到pdf中

时间:2013-08-26 08:59:31

标签: pdf reportlab

我有一千个PNG图像,并使用reportlab添加 这些图像变成了PDF, 代码是:

def pic_exits(pic_path):

if os.path.exists(pic_path):
    #print ('pic_exits')
    #print (pic_path)
    target = PIL.Image.open(pic_path)            
    #fp = open(pic_path,'rb')
    #target = PIL.Image.open(fp)
    #fp.close()        
    targetx,targety = target.size
    del target
    #print (targetx,targety)
    tx,ty = get_xy(targetx,targety)
    targetimg = Image(pic_path, tx, ty)
else:
    targetimg = Paragraph('<para align = center>not exist</para>',Bodystyle)      
return targetimg

def draw_sourcepic(self_dir,pic_list):

pic = [pic_list[i:i+3] for i in range(0,len(pic_list),3)]
data = []
i = 0
for val in pic:
    eachline = []

    for pic_path in val:
        i+=1
        pic_image = pic_exits(pic_path)
        eachline.append(pic_image)
    while len(eachline) < 3:
        eachline.append(None)
    data.append(eachline)       
pic_table = drawTable(data,(150,150,150),None)
Story.append(pic_table) 

但它有以下错误:     IOError:无法打开资源“C:\ workspace \ decode \ 2012 \ result \ pic \ 510.png 这可能意味着我打开了太多的图像,

官方文件说:     图像(数码照片)。 PIL / Java 1.4支持的格式(支持Python / Java Imaging Library。目前,作为flowables的图像始终以horozontally为中心 在框架中。我们允许两种懒惰允许文档中的许多图像 这可能导致文件处理饥饿。 lazy = 1在需要之前不要打开图像。 懒惰= 2需要时打开图像然后关闭它。

但是当我改为这个时:      targetimg =图像(pic_path,tx,ty,lazy = 2) 它有以下错误:      AttributeError:._ file

如何将数千张图片添加到PDF中?问题很长,

1 个答案:

答案 0 :(得分:0)

我知道这是迟了一年,但我最近遇到了类似的问题。我认为这是reportlab的问题 - 当lazy = 2时,在需要的文件属性被销毁后再次调用该图像。我已经报告了这个问题以及我的解决方法here。希望它有所帮助。