2013-02-23 23 views
0

我不能输出PDF文件使用下面的示例代码如何ReportLab的SimpleDocTemplate使用与GAE

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter 
from reportlab.lib import colors 
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle 

def get_table(self, response): 
    buffer = StringIO() 
    doc = SimpleDocTemplate(buffer, pagesize=letter) 
    elements = [] 
    data= [['00', '01', '02', '03', '04'], 
      ['10', '11', '12', '13', '14'], 
      ['20', '21', '22', '23', '24'], 
      ['30', '31', '32', '33', '34']] 
    t=Table(data) 
    t.setStyle(TableStyle([('BACKGROUND',(1,1),(-2,-2),colors.green), 
        ('TEXTCOLOR',(0,0),(1,-1),colors.red)]))  
    elements.append(t) 
    doc.build(elements) 
    response.out.write(buffer.getvalue()) 
    buffer.close() 
    return response 

我使用webapp2.RequestHandler并且已经设置了响应头,像这样:

self.response.headers['Content-Type'] = 'application/pdf' self.response.headers['Content-Disposition'] = 'filename=my.pdf'

我得到的结果是一个空白的pdf页面。

回答

0

想通了!问题在于我也在请求处理程序中调用

c = canvas.Canvas(self.response.out, pagesize=letter) 
.... 
c.showPage() 
c.save() 

。我不知道你能不能兼得的

SimpleDocTemplate 

还有

canvas.Canvas 

反正现在的工作。