牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Django で PDFを作成するメモ

(Django1.5, Python2.7)

reportlab を利用する

pip install reportlab

Django で動作確認用サンプルアプリを作成

プロジェクト作成している前提で

./manage.py startapp reports
reports/urls.py
from django.conf.urls import patterns, url

urlpatterns = patterns(
    'reports.views',
    url(r'^report/$', 'some_view', name='report'),
)
reports/views.py

とりあえずDjangoドキュメントに書いてあるコードそのまま

#!/usr/bin/env python
# *-# -*- coding: utf-8 -*-

from reportlab.pdfgen import canvas
from django.http import HttpResponse

def some_view(request):
    # 適切な PDF 用応答ヘッダを持った HttpResponse オブジェクトを
    # 作成します。
    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'

    # レスポンスオブジェクトを出力「ファイル」にして、 PDF オブジェクト
    # を作成します。
    p = canvas.Canvas(response)

    # PDF に描画します。 PDF 生成のキモの部分です。
    # ReportLab の詳しい機能は ReportLab ドキュメントを参照してください。
    p.drawString(100, 100, "Hello world.")

    # PDF オブジェクトをきちんと閉じて終わり。
    p.showPage()
    p.save()
    return response

確認

$ ./manage.py syncdb
$ ./manage.py runserver

リンクに行くとPDFがダウンロードされる