2017-03-14 5 views
0

reportlab을 사용하여 보고서를 만듭니다. 다음은 보고서reportlab의 textobject에 너비를 설정하십시오.

c = canvas.Canvas("reports/abc.pdf", pagesize=A4) 
t = c.beginText() 
t.setFont('Times-Roman', 14) 
t.setTextOrigin(0.3*inch,6.5*inch) 
wraped_text = "\n".join(wrap(Desc,100)) # 100 is line width 
t.textLines(wraped_text) 
c.drawText(t) 

이 코드는 일반 문자열로 작동하지만 일부 대문자 텍스트에 올 때 그 폭이 증가 할 것이며,이 페이지를 벗어나 텍스트를 삽입하는 코드입니다. 그래서 숫자 문자가 아닌 페이지 너비와 관련하여 텍스트 너비를 설정할 수 있습니까?

답변

1

캔버스에 그림을 그리는 대신 reportlab.platypus.Paragraph을 사용하면 문자 배치가 무료로 제공됩니다.

Paragraph과 HTML의 <div>을 비교할 수 있습니다. Paragraph의 너비는 문서의 너비 100 %이고 높이는 내용을 기준으로합니다.

from reportlab.lib.pagesizes import A4 
from reportlab.platypus import SimpleDocTemplate, Paragraph 
from reportlab.lib.styles import getSampleStyleSheet 

very_long_text = "Your very long text here ..." 

styles = getSampleStyleSheet() 
doc = SimpleDocTemplate("my_doc.pdf", pagesize=A4) 
Story=[] 
Story.append(Paragraph(very_long_text, styles["Normal"])) 
doc.build(Story) 
+0

나는 이것을 시도 할 것이다. 보고서에 추가 할 작은 문자열과 이미지 같은 다른 콘텐츠가 있습니다.이 메서드를 사용하여 해당 콘텐츠를 추가 할 수 있습니까? – Rajadip

+0

오리너구리에 이미지 클래스가 있습니다. 다른 설정 (늘이기, 크기 조절, ...)이 있습니다. 문서를 읽으십시오.) –

+0

자, 고맙습니다. 고맙습니다. – Rajadip