Как открыть PDF с Django ExtJs и ReportLab - PullRequest
1 голос
/ 14 июля 2011

Привет, люди, я работаю с приложением Extjs и хочу открыть PDF-файл с ReportLab, когда пользователь нажимает кнопку.

Мой сценарий:

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 Что я делаю неправильно?

1 Ответ

0 голосов
/ 15 июля 2011

Я не знаю, как насчет Extjs, чтобы дать вам полный ответ, но я могу сказать, что текст ответа - это не JSON, это PDF, отсюда и причина ошибки. Что вы действительно хотите сделать, так это просто отобразить result в браузере, то есть отобразить содержимое HTTP-запроса, который вы инициировали. Если вы хотите проверить успешность, вместо этого проверьте HTTP-заголовок результата.

...