2016-04-18 11 views
0

Django 1.9文書にある以下の手法を使用してPDFを生成したいとします:https://docs.djangoproject.com/ja/1.9/howto/outputting-pdfここで Django 1.9でPDFを生成

は(私は、特別な私はgetメソッドを使用しようとしているので、

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)) 

のようなだけで別のURL名を何も必要としない、私のURLパターンである。これは、PDF出力の入力を求められたときにIヒット/ pdf、データは含まれていません - 空白のページだけです。出席/ pdf URLをヒットしたときにpdfページに表示するには、このurl/attendance /にあるデータを取得するにはどうすればよいですか?

+0

あなたが見ているの1以下の複雑なPDFファイルのチュートリアルを試してみてください、多分thatllが働きます。 –

+0

ええ、それも同じ結果を試しました –

答えて

1

私はあなたがする必要があると思う:

  1. ファインダーのHTML
  2. はレスポンスボディ
  3. 戻り応答

に設定されたPDFコンテンツが今、あなたのコードは、HTMLのように、テンプレートをレンダリングし、ヘッダーに「アプリケーション/ PDFのコンテンツタイプを追加し、通常の返し

  • 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"などを書くことができます。 –