2012-08-05 4 views
1

Как установить левую позицию таблицы?reportlab set left table position

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) 

Принимая во внимание, что абзац напечатан на один см слева, таблица печатается почти без дальнейших расстояний до границы левой страницы.

Где я могу установить leftMargin для позиции таблицы?

То же самое верно для изображений, которые я добавляю. Кажется, они где-то печатаются.

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

ответ

9

Найдено волшебное hAlign ключевое слово:

t = Table(data, (6*cm,6*cm,2*cm,2*cm,2*cm), None, style=ts, hAlign='LEFT') 
1

Я хотел бы добавить, что вы можете также установить выравнивание в TableStyle так же, как вы установили lineabove и linebelow.

Хотя это не может быть ценная информация сама по себе, это важно знать, что горизонтальное выравнивание устанавливается с «ALIGN» ключевого слова, а не «HALIGN» (как вы могли бы легко предполагают, учитывая, что вертикальное выравнивание устанавливается с «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) 

Resulting table in pdf