3

テーブルの左位置を設定するにはどうすればよいですか?

response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name
buffer = StringIO()
PAGESIZE = pagesizes.portrait(pagesizes.A4)
doc = SimpleDocTemplate(buffer, pagesize=PAGESIZE, leftMargin=1*cm)
story = []

story.append(Paragraph(header_part2, styleN))
table_row = ['Total Score:','']
data.append(table_row)
ts = [
    #header style    
    ('LINEABOVE', (0,0), (-1,0), 1, colors.gray),
    ('LINEBELOW', (0,0), (-1,0), 1, colors.gray)]
t = Table(data, (6*cm,6*cm), None, style=ts)
    story.append(t)
    doc.build(story)
    pdf = buffer.getvalue()
buffer.close()
response.write(pdf)

段落は左から 1 cm の位置に印刷されますが、表はページの左側の境界線までほとんど離さずに印刷されます。

テーブル位置の leftMargin をどこに設定する必要がありますか?

同じことが私が追加する画像にも当てはまります。どこかに印刷されているようです。

story.append(Image(path,35,10))
4

2 に答える 2

19

魔法の hAlign キーワードが見つかりました。

t = Table(data, (6*cm,6*cm,2*cm,2*cm,2*cm), None, style=ts, hAlign='LEFT')
于 2012-08-06T08:24:49.633 に答える
1

lineabovelinebelowを設定するのと同じように、 TableStyle で配置を設定することもできます。

これ自体は価値のある情報ではないかもしれませんが、水平方向の配置は「HALIGN」ではなくキーワード「ALIGN」で設定されることを知っておくことが重要です (垂直方向の配置が「VALIGN」と上記の解決策で設定されていることを考えると、簡単に推測できます)関数呼び出しにも hAlign があります)。一日中「HALIGN」と並べようとして気が狂いました。

以下は、水平方向の配置 ('ALIGN') をテストできるコード サンプルです。

from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus.tables import Table, TableStyle
from reportlab.lib import colors

doc = SimpleDocTemplate('align.pdf', showBoundary=1)

t = Table((('', 'Team A', 'Team B', 'Team C', 'Team D'),
   ('Quarter 1', 100, 200, 300, 400),
   ('Quarter 2', 200, 400, 600, 800),
   ('Total', 300, 600, 900, 1200)),
  (72, 45, 45, 45, 45),
  (25, 15, 15, 15)
  )

t.setStyle(TableStyle([
   ('ALIGN', (0, 0), (-1, -1), 'RIGHT'),
   ('GRID', (0, 0), (-1, -1), 0.25, colors.red, None, (2, 2, 1)),
   ('BOX', (0, 0), (-1, -1), 0.25, colors.blue),
   ]))

story = [t]
doc.build(story)

pdf の結果表

于 2017-01-19T14:26:57.193 に答える