wiki.zope.jp
ReportLab
   
RecentChanges WikiHelp WikiPractice JumpSearch

ReportLab

LinuxにReportLabをインストールするには、作業用ディレクトリにて

PILをインストールする(これが無いと画像が処理できない)

Adobeのフォントパックがないと日本語表示がダメなのでこれをインストールする インストール途中でアクロバットリーダーのインストール場所を聞かれるのでそれを 先にインストールする

pdfを生成させてみる

zopeから呼び出してpdfを作ってみる

# -- coding: euc-jp --
from cStringIO import StringIO
from reportlab.pdfgen.canvas import Canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import CIDFont, findCMapFile, UnicodeCIDFont
from string import split

def genPDF(self): try: from reportlab.pdfbase.cidfonts import CIDFont, findCMapFile, UnicodeCIDFont findCMapFile(90ms-RKSJ-H) findCMapFile(90msp-RKSJ-H) findCMapFile(UniJIS-UCS2-H) findCMapFile(EUC-H) except: #don't have the font pack. return silently return

# shift-jis pdfmetrics.registerFont(CIDFont(HeiseiMin-W3,90ms-RKSJ-H)) pdfmetrics.registerFont(CIDFont(HeiseiKakuGo-W5,90ms-RKSJ-H)) # euc-jp pdfmetrics.registerFont(CIDFont(HeiseiMin-W3,EUC-H)) pdfmetrics.registerFont(CIDFont(HeiseiKakuGo-W5,EUC-H))

f = StringIO() c = Canvas(f) y = 700 myform = [ "T100;700;てすと01文字列;G;10", "T90;650;てすと01文字列;M;20", "T80;600;てすと01文字列;G;30", "T70;550;てすと01文字列;M;40", "T60;500;てすと01文字列;G;50", "T50;450;てすと01文字列;M;60", "T40;400;てすと01文字列;G;70", "T30;350;てすと01文字列;M;80"] for line in myform: command = line[0] if command == 'T': para = split(line[1:],;) x = int(para[0]) y = int(para[1]) message = para[2] t = para[3] p = int(para[4]) if t == 'M': c.setFont(HeiseiMin-W3-EUC-H, p) else: c.setFont(HeiseiKakuGo-W5-EUC-H, p) c.drawString(x, y, message ) c.roundRect(1, 1, 300, 420, 20, stroke=1, fill=0) c.roundRect(1, 1, 593, 840, 5, stroke=1, fill=0) c.showPage() c.save()

self.REQUEST.RESPONSE.setHeader(Content-Type, application/pdf) return (%s % f.getvalue() + .pdf)

   <dtml-var test01>

zopeとのインターフェースをでっちあげる

続く

Last edited Sun, 09 Dec 2007 16:45:10 +0900 Edit this page