ryotankの備考録日記

趣味の電子工作についての備考録などなど

基板作りチェックリストその23

日本語を含むpdfファイルを生成する
動作確認その1

A4縦のヘッダー部分に基板名とリスト作成年月日を描画する

ちなみにA4サイズは、縦が29.7cm 横が21.0cmとし
PDFファイル名は、基板作りチェックヘッダー部分描画テスト1.pdf
とする

文字の書き込みなどをする前に
最初に対象のPDFを生成する必要がある

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait

file_name = '基板作りチェックヘッダー部分描画テスト1.pdf'    # ファイル名を設定
pdf = canvas.Canvas(file_name, pagesize=portrait(A4))    # PDFを生成、サイズはA4
pdf.saveState()    # セーブ

上記のようにPDFサイズを指定したい場合は、setPageSizeメソッドを使う

次にPDFのファイル情報を設定する
これは、PDFのプロパティから確認出来る情報

pdf.setAuthor('python_checktest')    # 作成者情報
pdf.setTitle('ヘッダー部分描画テスト1')    #タイトル情報
pdf.setSubject('TEST1')    #件名情報

文字を書き込む
次に生成したPDFに文字を書き込む方法は

rom reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.lib.units import cm

### フォント、サイズを設定 ###
pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))
pdf.setFont('HeiseiKakuGo-W5', 12)

### 文字を描画 ###
pdf.drawString(1*cm, 26*cm, 'ヘッダー部分描画テスト1')

pdf.setFont('HeiseiKakuGo-W5', 16)    # フォントサイズの変更
width, height = A4  # A4用紙のサイズ
pdf.drawCentredString(width / 2, height - 2*cm, 'テスト1')

ここでは文字の描画にdrawStringメソッドを使用しています。

drawString(左からの位置、下からの位置、文字列)

reportlabには日本語フォントとして、
「HeiseiMin-W3」と「 HeiseiKakuGo-W5」が用意されています。

線を描画する

線を描画する場合、まずは線の太さをsetLineWidthメソッドで指定する

setLineWidth(線の太さ)

次に線を描画するのにlineメソッドを使用します。
lineメソッドでは線のスタート位置(縦、横)と終了位置(縦、横)を
指定する必要があるので、4つの引数を指定します。

line(線のスタート位置縦、横、線の終了位置縦、横)
### 線の描画 ###
pdf.setLineWidth(1)
pdf.line(10*cm, 20*cm, 10*cm, 10*cm)


図形を描画する
 図形を描画する場合、最初に色をsetFillColorRGBメソッドで指定します。

図形の描画が終了したら色を元に戻すことを忘れないように

### 図形の描画 ###
pdf.setFillColorRGB(54, 54, 0)
pdf.rect(1*cm, 1*cm, 4*cm, 4*cm, stroke=1, fill=1) #長方形を描画する
pdf.setFillColorRGB(0, 0, 0)

長方形のほかにも色々な図形を描画するためのメソッドがある


次回は、実際にヘッダー部分を描画するテストコードを作成する