15
10

More than 5 years have passed since last update.

DjangoでPDFを出力する

Posted at

Djangoチュートリアルに則ってPDFを出力してみる

DjangoでPDF生成ができるということで、チュートリアルに則ってPDFを出力してみました。

準備

(virtualenv) $ sudo pip install reportlab
(virtualenv) $ django-admin startproject pdf_creater
(virtualenv) $ cd pdf_creater
(virtualenv) $ python manage.py startapp myapp
pdf_creater/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^myapp/', include('myapp.urls')),
    url(r'^', include('myapp.urls',namespace='myapp')),
    url(r'^admin/', admin.site.urls),
]
myapp/urls.py
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

というわけでindexでいきなりPDFをダウンロード開始させるようにしてます。

viewsの作成

チュートリアルのまんまです。

myapp/views.py
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

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

def index(request):
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment;filename="createdfile.pdf"'

    p = canvas.Canvas(response)
    p.drawString(100,100,'newPDF')

    create = p.showPage()
    p.save()

    return response

migrateして、runserver

createdfile.pdfという名前でPDFダウンロードが開始されます。
フォームからテキストファイル受け取ってPDFとかにも出来るような感じはしますね。

カスタマイズがうまく行けば領収書発行アプリ程度にはなりそう。

15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10