pythonでReportLabを使ったPDFファイルの作り方
reportlabを利用してpdfファイルを作る
pdfを作ろうと思って調べてたんだけど、公式ドキュメントはpdfで提供されてるみたいで、なんか使いにくい。
よさげなまとめも見つけられなかったので、簡単にまとめてみる。
まずはキャンバスの宣言とテキスト周り。
フォントに日本語のTrueTypeを宣言するので、日本語もオッケーなはず。
reportlab公式系のリンク
ダウンロードはこちらから。
reportlab 3.3.0 : Python Package Index
ドキュメントはこちらの公式サイトから
ReportLab - Content to PDF Solutions
reportlabの利用準備
from reportlab.pdfgen import canvas from reportlab.lib.units import mm
TTフォントの利用準備
from reportlab.pdfbase.pdfmetrics import registerFont from reportlab.pdfbase.ttfonts import TTFont
利用フォントの宣言
#TakaoEXゴシック体を利用する場合 registerFont(TTFont('TakaoExGothic','TakaoExGothic.ttf'))
キャンバスの準備
# キャンバスと出力ファイルの初期化。 retCanvas = canvas.Canvas('./Output.pdf') retCanvas.saveState()
作者やタイトルなど基本情報(設定しなくてもOK)
retCanvas.setAuthor('Yuzu Tanakaa') retCanvas.setTitle('reportlabの使い方') retCanvas.setSubject('サブジェクトもつけれるみたい')
PDFのサイズを決定する
pdfWidth=240.0*mm pdfHeight=290.0*mm retCanvas.setPageSize((pdfWidth,pdfHeight))
文字の追加
利用フォント文字サイズの指定
下記文字の追加の前に行う。
途中でフォント・サイズを変えたい場合は、再度指定すればその後の追加文字に反映される様子。
retCanvas.setFont("TakaoExGothic", 16)
文字の追加
#x,yにテキスト追加 retCanvas.drawString(x, y, text) #x,yから右寄せでテキスト追加 retCanvas.drawRightString(x, y, text) #名前からして中央寄せなんだと思うけど、 #ドキュメントに記載があったが手元の環境では、 #メソッドが見当たらず…使えない。なぜ? retCanvas.drawCentredString(x, y, text)
キャンバスのx,y座標について
x,yはそれぞれ横縦を指定するんだけど、始点は左下。
一般的なグラフと同じ座標系なので要注意。
複数行をまとめて追加する。
textobject = canvas.beginText(x, y) #座標を指定する。 textobject.setTextOrigin(x, y) #もしくは座標をこう指定する。この場合、beginTextでは、引数は無し。 #使用するフォント・サイズの指定 textobject.setFont("TakaoExGothic", 8) #テキストの設定 textobject.textLines(''' ここにテキストを記述する。 改行も反映される様子。 ただし、自動改行はされないっぽい。なんか設定あるのかな。。。 ''') #キャンバスへの追加 canvas.drawText(textobject)