Python: как заставить Reportlab перейти к следующей строке в выводе PDF - PullRequest
0 голосов
/ 01 июня 2018

В настоящее время я запрашиваю данные из БД, перетаскиваю их в списки на Python, а затем перебираю эти списки, чтобы распечатать эти данные в PDF.Я прочитал документы на Документация ReportGab в формате PDFGen .

Проблема: Я не могу перейти на новую строку, когда текущая строка выходит за пределы правойграница страницы.Мне нужно «возврат».

Вот что у меня есть сейчас:

x = 72 #1 inch margin from
y = 720 #10 inch margin from bottom
mypdf = canvas.Canvas(response) #new canvas called 'mypdf'
mypdf.setPageSize(letter) #set size to 8.5x11
list1 = ['item 1.1', 'item 1.2', 'item 1.3',]
list2 = ['item 2.1', 'item 2.2', 'item 2.3',]

detaillist = [ list1, list2 ]

for details in detaillist:
    for line_item in details:
        mypdf.roundRect(x-15, y, 10, 10, 2, stroke=1) #each line item has a check box
        mypdf.drawString(x, y, line_item) #write the value for each line item at x,y coordinate
        y -= 14 #x, y coordinate goes down by 14/72s of an inch
        #if the current location is within bottom 1 inch margin
        if y < 72:
            y = 720 #reset y value
            page = canvas.Canvas(response) #create a new page
            mypdf.showPage() #show the new page
    mypdf.line(x,y,x*7.5,y) #draw a line to separate sections
    y -= 17 #add a buffer below the line

mypdf.save()

Прямо сейчас, это повторяет мои два списка.Когда содержимое попадает в нижнюю границу в один дюйм, я перехожу на новую страницу.Почти все элементы списка помещаются на странице.Однако, если я изменю свои элементы списка на супер длинные, например:

list1 = ['item 1.1 is a sentence that drags on and continues and talks about this or that or something else but at this point it is off the side of the page', 'item 1.2', 'item 1.3',]

, тогда мой текст выйдет с правой стороны страницы.

Что я могуделать? Буду рад услышать, как вы можете подойти к этому.У меня есть неизвестное количество списков для перебора, и каждый список содержит 10-20 точек данных, каждая (в настоящее время) напечатана в одной строке.

...