前提・実現したいこと
pythonで自分用の住所録を作成中です。住所録データを1人1葉でA5サイズでプリントアウトしようと考えています。reportlabを使いA5サイズのフォーマットPDFファイルを作り、ここにデータを流し込み、印字して保存しようと考えています。(下のコードはネットにあるA4サイズの例を拝借し、自分なりにA5サイズにしたつもりのものです)
発生している問題・エラーメッセージ
コードの先頭のfrom reportlab.lib.pagesizes import A5, portrait及びコードの
def set_info(filename):中でpdf_canvas.pagesize = portrait(A5)の記載でA5サイズを指定したつもりですが、出来たPDFファイルのプロパティを見るとA4サイズとなっています。実際に印字しても文字位置はコードをA4で想定で指定した時の位置に出力されています。
コードのどこが不足しているのでしょうか?ご教授ください。
該当のソースコード
コード from reportlab.lib.pagesizes import A5, portrait from reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from reportlab.lib.units import mm from reportlab.platypus import Table, TableStyle from reportlab.lib.units import mm from reportlab.lib import colors # 初期設定 def make(filename="test_prf"): # ファイル名 pdf_canvas = set_info(filename) # キャンバス名 print_string(pdf_canvas) pdf_canvas.save() # 保存 def set_info(filename): pdf_canvas = canvas.Canvas("./{0}.pdf".format(filename)) # 保存先 # 下の設定では白紙状態のPDFファイルが出力されるようになる #pdf_canvas.setPageSize((148,210)) pdf_canvas.pagesize = portrait(A5) pdf_canvas.setAuthor("") # 作者 pdf_canvas.setTitle("") # 表題 pdf_canvas.setSubject("") # 件名 return pdf_canvas #住所録フォーマット作成 def print_string(pdf_canvas): pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5')) # フォント #width, height = 148,210 # 用紙サイズ # (1)名前、区分 data = [ ['名 前', ' ', '区 分', ' ']] table = Table(data, colWidths=(15*mm, 80*mm, 15*mm, 30*mm), rowHeights=(7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 180*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 180*mm) # (2)郵便番号 data = [ ['〒', ' ', '―', ' '] ] table = Table(data, colWidths=(15*mm,20*mm,10*mm,20*mm), rowHeights=(7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 170*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 170*mm) # (3)住所 data = [ ['住 所', ' '], [' ', ' '], [' ', ' '] ] table = Table(data, colWidths=(15*mm,170*mm), rowHeights=(7.5*mm, 7.5*mm, 7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 145*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 145*mm) # (4)電話 data = [ ['電 話', ' '], ['電 話', ' '] ] table = Table(data, colWidths=(15*mm,170*mm), rowHeights=(7.5*mm, 7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 130*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 130*mm) # (5)アドレス data = [ ['アドレス', ' '] ] table = Table(data, colWidths=(15*mm,150*mm), rowHeights=(7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 120*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 120*mm) # (6)年賀状、歳暮 data = [ ['[年賀状] ', ' ', ' [歳暮]', ' '] ] table = Table(data, colWidths=(20*mm,20*mm,20*mm,20*mm), rowHeights=(7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 110*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 110*mm) # (7)備考 data = [ ['備 考', ' '], [' ', ' '] ] table = Table(data, colWidths=(15*mm,170*mm), rowHeights=(7.5*mm, 7.5*mm)) table.setStyle(TableStyle([ ('FONT', (0, 0), (-1, -1), 'HeiseiKakuGo-W5', 14) ])) table.wrapOn(pdf_canvas, 10*mm, 95*mm) # table位置 table.drawOn(pdf_canvas, 10*mm, 95*mm) # 1枚目終了 pdf_canvas.showPage() # 作成 if __name__ == '__main__': make()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/28 06:34
2020/06/28 08:07
2020/06/28 09:35