簡體   English   中英

使用Django 1.9生成PDF

[英]Generating PDFs with Django 1.9

我想使用在Django 1.9 docs上找到的以下方法生成PDF: https : //docs.djangoproject.com/ja/1.9/howto/outputting-pdf

這是我的網址格式(我不需要任何特殊的東西,只需要這樣一個不同的網址名稱

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時,它提示輸入pdf輸出,但不包含任何數據-只是一個空白頁。 當您點擊/ attendance / pdf網址時,如何獲取該網址/ attendance /上存在的數據以顯示在pdf頁面上?

我認為您需要:

  1. 渲染HTML
  2. 轉換成PDF
  3. 將pdf內容設置為響應主體
  4. 返回響應

現在,您的代碼將模板呈現為html,將“ application / pdf”內容類型添加到標題中並返回正常的html頁面。

您需要類似PDFTemplateView的東西。 現在可以使用django-easy-pdfdjango-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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM