그것은 당신의 단락 TABLESTYLE가 설정 한 정렬을 무시 것이 가능합니까? 자체 정렬이 적용된 스타일 [ 'Heading1']을 사용합니다.
단락은 reportlab.platypus.Flowable을 상속받으며 작성시 자체를 그립니다.
힌트 : reportlab.platypus.tables.py 테이블에 구현 참조
좀 더 힌트 :
사용 맞춤 기호 :
from reportlab.lib.enums import TA_JUSTIFY,TA_LEFT,TA_CENTER,TA_RIGHT
자기 정의 폰트 이름 :
_baseFontName ='Helvetica'
_baseFontNameB ='Helvetica-Bold'
_baseFontNameI ='Helvetica-Oblique'
_baseFontNameBI='Helvetica-BoldOblique'
사용 시도 :
sty= ParagraphStyle(name='Heading1',
parent=self.stylesheet['Normal'],
fontName = _baseFontNameB,
fontSize=18,
leading=22,
spaceAfter=6,
alignment=TA_CENTER)
alias='h1')
테이블 내에서 Paragraphs 및 ParagraphStyle을 사용하는 것이 좋습니다. 당신은 pdfmetrics 모듈을 사용하여 폭을 계산할 수 있습니다
from reportlab.pdfbase.pdfmetrics import stringWidth, getFont
또는 기능을 내장하여
:
para=Paragraph(text,sty)
para.minWidth()
print(para.__repr__())
모든 유동성해야 당신이 사용할 수있는 그 이유는, minWidth()
라는 기능이 있습니다
if isinstance(obj,Flowable):
return obj.minWidth()
마지막으로 :
from reportlab.lib.enums import TA_JUSTIFY,TA_LEFT,TA_CENTER,TA_RIGHT
from reportlab.pdfbase.pdfmetrics import stringWidth, getFont
_baseFontName ='Helvetica'
_baseFontNameB ='Helvetica-Bold'
_baseFontNameI ='Helvetica-Oblique'
_baseFontNameBI='Helvetica-BoldOblique'
from reportlab.platypus import Paragraph, Table, TableStyle, SimpleDocTemplate
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib import colors
from reportlab.lib.units import inch, cm, mm
styles = getSampleStyleSheet()
qn = "some title"
doc = SimpleDocTemplate("test.pdf")
elements = []
ttab_empty = ""
table_data = []
print(vars(styles['Heading1']))
# that's why you should use your own paragraph style:
sty = ParagraphStyle(name='Heading1',
parent=styles['Normal'],
fontName = _baseFontNameB,
fontSize=18,
leading=22,
spaceAfter=6,
alignment=TA_CENTER)
quote_title = Paragraph(qn, sty)
table_data.append([ttab_empty, quote_title, ttab_empty]) #tab_empy are empty strings
title_table = Table(table_data, colWidths=[5 * cm, 5 * cm, 5 * cm])
title_table.setStyle(TableStyle([('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
('BOX', (0, 0), (-1, -1), 0.25, colors.black),
('ALIGN', (0, 0), (-1, -1), "CENTER")]))
elements.append(title_table)
doc.multiBuild(elements)
나는 tables.py를 살펴 보았다. 테이블이 0 스타일로 구현 된 것을 발견했습니다. 나는 단락에 대해 아무것도 보지 못했다. 그래서'GetSampleStyleSheet()'를 기반으로 한 새로운 유형의 스타일을 만들려고했지만 그 중 하나는 작동하지 않았습니다. 좀 도와 주겠니? 나는 꽤 장고를 처음 사용했다. – GreenSaber
나는 더 정확하게하려고 노력했다. 나는 당신이 자신의 StyleClass를 구현해야한다고 생각한다. 내 구현에서는 GetSampleStyleSheet()의 결과를 사용하여 성공하지 못했다. – skidzo