2016-04-18 2 views
0

Я хочу сгенерировать PDF-файл, используя следующий подход, использованный в документах Django 1.9: https://docs.djangoproject.com/ja/1.9/howto/outputting-pdf.Создание PDF-файлов с Django 1.9

Вот мой шаблон URL (я не нужно ничего особенного, просто другое название URL-адрес, как так

urlpatterns = [ 
    url(r'^people/$', PeopleTemplate.as_view(), name='people'), 
    url(r'^people/pdf/$', some_view), 
] 

    def some_view(request): 
     response = HttpResponse(content_type='application/pdf') 
     response['Content-Disposition'] = 'attachment; filename="example.pdf"' 
     p = canvas.Canvas(response) 
     p.drawString(100, 100, "Hello world.") 
     p.showPage() 
     p.save() 

     def get(self, request, *args, **kwargs): 
      context = locals() 
      context['response'] = self.response 
      context['p'] = self.p 
      return render_to_response(self.response_template, context, context_instance=RequestContext(request)) 

Я пытаюсь использовать метод GET. Это наводит на вывод в формате PDF, когда я hit/pdf, но не содержит никаких данных - просто пустую страницу. Как мне получить данные, которые существуют в этом URL-адресе/посещаемости/для показа на странице pdf, когда вы нажимаете URL-адрес/посещаемость/pdf?

+0

попробовать сложную PDFS учебник ниже тот, который вы смотрите, может быть, Thatll работать. –

+0

Да, пробовал это тоже, тот же результат –

ответ

1

Я думаю, вам необходимо:

  1. render h TML
  2. преобразовать его в PDF
  3. содержания набора PDF для тела ответа
  4. ответ возвращения

Теперь ваш код делает шаблон как HTML, добавляет «приложение/PDF» типа содержимого заголовков и возвращает нормальный HTML стр.

Вам нужно что-то вроде PDFTemplateView. Есть готовые к использованию пакеты django-easy-pdf или django-wkhtmltopdf.

UPD:

def some_view(request): 
     response = HttpResponse(content_type='application/pdf') 
     response['Content-Disposition'] = 'attachment; filename="example.pdf"' 
     p = canvas.Canvas(response) 

     // simple but visual result is not pretty at all 
     for i, obj in enumerate(People.objects.all()): 
      p.drawString(100, 50*(i+1), str(obj)) 

     p.showPage() 
     p.save() 

     def get(self, request, *args, **kwargs): 
      context = locals() 
      context['response'] = self.response 
      context['p'] = self.p 
      return render_to_response(self.response_template, context, context_instance=RequestContext(request)) 
+0

Я обновил свой вопрос. Теперь я могу получить приглашение в формате pdf, но никаких данных в нем нет. Проверьте мой обновленный вопрос. –

+0

Попробуйте сохранить и оценить размер файла. Попробуйте открыть сохраненный файл с помощью другого средства просмотра. Попробуйте сделать что-то еще на холсте pdf и повторите первые шаги. – Chikiro

+0

Да, я могу написать материал на нем «hello world» и т. Д. ... –

Смежные вопросы