お世話になっています。
表題についてですが、現在勉強で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
あなたの回答
tips
プレビュー