2014-01-30 5 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 firt напечатает размер, а второй напечатает содержимое из списка. Можете ли вы рассказать точную строку, где ваши изменения придут. –

Смежные вопросы