どうやらPythonのPDF生成はReportLabがスタンダードっぽいので使う。
Unicodeでの縦書きが難しかったのでDjangoで表示する方法メモ。
views.py
... from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from reportlab.platypus import BaseDocTemplate, Table, Spacer, TableStyle, Frame, PageTemplate, Paragraph, Image from reportlab.lib import pagesizes, colors from reportlab.lib.styles import ParagraphStyle ... def create_pdf(request): if request.method == "POST": response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'inline;' fontname = "HeiseiKakuGo-W5" pdfmetrics.registerFont(UnicodeCIDFont(fontname)) #横書き vencoding = "UniJIS-UCS2-V" fontnameV = fontname + "-" + vencoding fontV = UnicodeCIDFont(fontname, isVertical=True) fontV.name = fontnameV fontV.fontName = fontnameV pdfmetrics.registerFont(fontV) #縦書き doc = BaseDocTemplate( response, leftMargin=10, rightMargin=10, topMargin=10, bottomMargin=10, pagesize = pagesizes.A4[::-1] ) #A4横型 elementList = [] # 色々ParagraphやらTableやらをelementListに追加 frame1 = Frame(x1=doc.leftMargin, y1=doc.height/2 + doc.bottomMargin, width=doc.width, height=doc.height/2, id="f1", showBoundary=1) frame2 = Frame(x1=doc.leftMargin, y1=doc.bottomMargin, width=doc.width, height=doc.height/2, id="f2", showBoundary=1) page = PageTemplate(id="p1", frames=[frame1, frame2]) doc.addPageTemplates([page]) doc.build(elementList) return response
まだ良く分からない。
- 作者: Alex Martelli,Anna Martelli Ravenscroft,David Ascher,鴨澤眞夫,當山仁健,吉田聡,吉宗貞紀
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/06/26
- メディア: 大型本
- 購入: 11人 クリック: 423回
- この商品を含むブログ (85件) を見る