2012-05-25 9 views
8

Resimleri bir PDF dosyasına koymak istiyorum. Benim kodum ...img = Resim.open (fp) AttributeError: class Görüntünün "açık" özelliği yok

import sys 
import xlrd 
from PIL import Image 
import ImageEnhance 
from reportlab.platypus import * 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.rl_config import defaultPageSize 
PAGE_HEIGHT=defaultPageSize[1] 

styles = getSampleStyleSheet() 

Title = "Integrating Diverse Data Sources with Gadfly 2" 

Author = "Aaron Watters" 

URL = "http://www.chordate.com/" 

email = "[email protected]" 

from reportlab.lib.units import inch 

pageinfo = "%s/%s/%s" % (Author, email, Title) 

def myFirstPage(canvas, doc): 
    canvas.saveState() 
    #canvas.setStrokeColorRGB(1,0,0) 
    #canvas.setLineWidth(5) 
    #canvas.line(66,72,66,PAGE_HEIGHT-72) 
    canvas.setFont('Times-Bold',16) 
    canvas.drawString(108, PAGE_HEIGHT-108, Title) 
    canvas.setFont('Times-Roman',9) 
    canvas.drawString(inch, 0.75 * inch, "First Page/%s" % pageinfo) 
    canvas.restoreState() 

def myLaterPages(canvas, doc): 
    #canvas.drawImage("snkanim.gif", 36, 36) 
    canvas.saveState() 
    #canvas.setStrokeColorRGB(1,0,0) 
    #canvas.setLineWidth(5) 
    #canvas.line(66,72,66,PAGE_HEIGHT-72) 
    canvas.setFont('Times-Roman',9) 
    canvas.drawString(inch, 0.75 * inch, "Page %d %s" % (doc.page, pageinfo)) 
    canvas.restoreState() 

def go(): 
    Elements.insert(0,Spacer(0,inch)) 
    doc = SimpleDocTemplate('ss.pdf') 
    doc.build(Elements,onFirstPage=myFirstPage, onLaterPages=myLaterPages) 

Elements = [] 

HeaderStyle = styles["Heading1"] # XXXX 

def header(txt, style=HeaderStyle, klass=Paragraph, sep=0.3): 
    s = Spacer(0.2*inch, sep*inch) 
    Elements.append(s) 
    para = klass(txt, style) 
    Elements.append(para) 

ParaStyle = styles["Normal"] 

def p(txt): 
    return header(txt, style=ParaStyle, sep=0.1) 

def open_excel(file= 'exc.xls'): 
    try: 
     data = xlrd.open_workbook(file) 
     return data 
    except Exception,e: 
     print str(e) 

#pre = p # XXX 

PreStyle = styles["Code"] 

def pre(txt): 
    s = Spacer(0.1*inch, 0.1*inch) 
    Elements.append(s) 
    p = Preformatted(txt, PreStyle) 
    Elements.append(p) 
p("""\ 
Relational databases manipulate and store persistent 
table structures called relations, such as the following 
three tables""") 

fp = open("/pdf-ex/downloadwin7.png","rb") 
img = Image.open(fp) 
img.show() 
# HACK 
Elements.append(PageBreak()) 


go() 
+0

Bize anlatın ve bize sorunu gösteren en küçük miktarda kod verin. – kindall

cevap

14

Ad alanı çakışması var. İçe aktarma ifadelerinizden biri, Image adında bir sınıfla PIL.Image (bir sınıf değil, bir modül) maskelemesidir. Daha sonra kodunuzda sonra yerine

...

from PIL import Image 

deneyin ...

import PIL.Image 

...

fp = open("/pdf-ex/downloadwin7.png","rb") 
img = PIL.Image.open(fp) 
img.show() 

ithalatının LOT ile çalışan, ad alanı çakışmaları dikkat edin. Ben genellikle from some_module import * ifadeleri çok dikkatli değilim.

Projeniz ve başarılarınız için iyi şanslar.

+0

Yorumunuz için teşekkürler. Programı çalıştırmak için yanlış bir şey yok. Ancak resim açılamadı. – wangling

+0

Resim, PDF dosyasında gösterilemedi – wangling

+0

@Webling çözümü, yazının başlığının açıkladığı sorunu çözüyor. Görüntülerin .pdf dosyasına eklenmesiyle ilgili genel sorunla ilgili olarak, postada sunulanın ötesinde FAR olduğunu bildirmek için gereken bilgiler olarak yanıtlayamıyorum. Bununla birlikte, rapor yazım bilgimden, doğru yolda olduğunuzu düşünüyorum. Çalışmaya devam et ve yakında çözmen gerekecek. – parselmouth

İlgili konular