2014-01-30 2 views
0

문장과 함께 글꼴 크기를 인쇄하는 pdf를 생성하려고합니다. 그러나 pdf가 생성 된 후에는 중복됩니다.Python reportlab이 제대로 PDF를 생성하지 않습니다

from reportlab.lib.units import inch 
from reportlab.lib.colors import magenta, red 
from reportlab.pdfgen import canvas 

lyrics = ['This is first line', 'This is second line', 'This is third line', 'This is the fourth line', 'This is the fifth line'] 

def textsize(canvas): 
    canvas.setFont('Times-Roman', 20) 
    canvas.setFillColor(red) 
    canvas.drawCentredString(2.75*inch, 2.5*inch, "Font Size examples") 
    canvas.setFillColor(magenta) 

    size = 7 
    y = 2.3 * inch 
    x = 1.3 * inch 
    for line in lyrics: 
     canvas.setFont('Helvetica', size) 
    canvas.drawString(x, y, '%s points' % size) 
    canvas.drawString(x, y, line) 
    y = y - (size * 1.2) 
    size = size + 1.5 

c = canvas.Canvas('font.pdf') 
textsize(c) 
c.showPage() 
c.save() 

답변

0

잘못된 들여 쓰기가 있고 두 번째 줄의 drawString이 겹침을 일으키고 있습니다.

from reportlab.lib.units import inch 
from reportlab.lib.colors import magenta, red 
from reportlab.pdfgen import canvas 

lyrics = ['This is first line', 'This is second line', 'This is third line', 'This is the fourth line', 'This is the fifth line'] 

def textsize(canvas): 
    canvas.setFont('Times-Roman', 20) 
    canvas.setFillColor(red) 
    canvas.drawCentredString(2.75*inch, 2.5*inch, "Font Size examples") 
    canvas.setFillColor(magenta) 

    size = 7 
    y = 2.3 * inch 
    x = 1.3 * inch 
    for line in lyrics: 
     canvas.setFont('Helvetica', size) 
     canvas.drawString(x, y, '%s points' % size) 
     print x, y, line 
     canvas.drawString(x + 2*inch, y, line) 
     y = y - (size * 1.2) 
     size = size + 1.5 

c = canvas.Canvas('font.pdf') 
textsize(c) 
c.showPage() 
c.save() 
+0

해당 줄을 주석으로 추가하면 목록의 데이터가 인쇄되지 않습니다. 코드가 끝나면 크기가 인쇄됩니다. 목록 가사 –

+0

의 내용이 아니므로 첫 번째 drawString의 텍스트에 가사를 추가하십시오. – Jiri

+0

drawString은 3 개의 매개 변수를 취하므로 첫 번째 drawString에 전달되지 않습니다. 우리는 2 개의 drawString을 써야만합니다. 크기를 인쇄하고 두 번째는 목록의 내용을 인쇄합니다. 당신은 당신의 변화가 올 정확한 행을 말할 수 있습니까? –