1

大家好,我正在做一个 Extjs 应用程序,当用户单击一个按钮时,我想用 ReportLab 打开一个 pdf。

我的脚本是:

xtype: 'button',
text: 'Print',
listeners: {
    click: function(evt, comp) {
        Ext.Ajax.request({
            url : 'get_pdf',
            method: 'GET',
            success: function ( result, request ) {
                var pdf = Ext.util.JSON.decode(result.responseText);
                if (pdf.success) {
                    console.log('It's ok'); 
                }
            });
        }
    }

和服务器端我有一个 django 视图:

def get_pdf(request):

    # Create the HttpResponse object with the appropriate PDF headers.
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'

    # Create the PDF object, using the response object as its "file."
    p = canvas.Canvas(response)

    # Draw things on the PDF. Here's where the PDF generation happens.
    # See the ReportLab documentation for the full list of functionality.
    p.drawString(100, 100, "Hello world.")

    # Close the PDF object cleanly, and we're done.
    p.showPage()
    p.save()
    return response

当我点击打印按钮时,Extjs 给我这个错误:语法错误(%PDF-1.3 我做错了什么?

4

1 回答 1

0

我不知道 Extjs 能给你一个完整的答案,但我可以告诉你的是响应文本不是 JSON,它是 PDF,因此是错误的原因。你真正想做的只是result在浏览器中显示,即显示你发起的HTTP请求的内容。如果要验证成功,请改为检查结果的 HTTP 头。

于 2011-07-14T22:38:55.587 回答