質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

3715閲覧

ReportLabを使ったテーブル作成時に文字が中央にこない

comeda

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/08/16 08:27

お世話になっています。
表題についてですが、現在勉強でReportLabを使ってpdfを作成しており、その中でテーブルを使用しようと思ってます。

一通りテーブルの表示はできたのですが、どうしても文字を縦幅で中央に来ません。
厳密には、setStyle()を使って、個別セルに対しては中央に来るように制御はできるのですが、これだとセルの数が増えた時に都度、セル分記述しないといけないことになります。

一応ソースコードを読んで、Table()のインスタンス時にvalign属性があったので、そこでMIDDLEと記述したのですが、なんの影響もなく中央に来ません。

どなたか文字を中央に来るようにできる方がいらっしゃいましたら教えていただけると嬉しいです。
よろしくお願いします。

###ソース

python

1from reportlab.lib.units import mm 2from reportlab.lib.pagesizes import A4 3 4from reportlab.pdfgen import canvas 5 6from reportlab.pdfbase import pdfmetrics 7from reportlab.pdfbase.ttfonts import TTFont 8 9from reportlab.platypus import Table 10 11pdfmetrics.registerFont(TTFont('GenShinGothic', './fonts/GenShinGothic-Monospace-Medium.ttf')) 12c = canvas.Canvas("HelloWorld.pdf", pagesize = A4) 13c.setFont('GenShinGothic', 10) 14data = [ 15 ["あああbbb", '01', '02', '03', '04'], 16 ['10', '11', '122221212', '13', '14'], 17 ['20', '21', '22', '23', '244444'], 18 ['30', '31', '32', '33', '34'] 19] 20 21t = Table(data, colWidths = [20 * mm, 38 * mm], rowHeights = 20 * mm, vAlign = 'MIDDLE', hAlign = 'CENTER') 22t.setStyle( 23 [ 24 ('TEXTCOLOR', (1, 1), (-2, -2), colors.red), 25 ('ALIGN', (1, 1), (-2, -2), 'RIGHT'), 26 ('VALIGN', (0, 0), (0, -1), 'TOP'), 27 ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), 28 ('BOX', (0, 0), (-1, -1), 0.25, colors.black), 29 ] 30) 31 32t.wrapOn(c, 20 * mm, 110 * mm) 33t.drawOn(c, 20 * mm, 110 * mm) 34 35c.showPage() 36c.save() 37

###現状のpdf
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問