Как писать вкладки, используя Reportlab? - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь использовать Reportlab (python 3.5.2) для записи текста и рисунков в PDF, но кажется, что символ табуляции не распознается, он печатается в виде черного квадрата.Код ниже воспроизводит эту проблему.

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def tabs_reportlab():
    my_canvas = canvas.Canvas("tab_test.pdf",
                              pagesize=letter)

    textobject = my_canvas.beginText()

    textobject.setTextOrigin(10, 730)
    textobject.setFont('Times-Roman', 12)
    textobject.textLine(text='A tab between each    word.')

    my_canvas.drawText(textobject);

    my_canvas.save()

if __name__ == '__main__':
    tabs_reportlab()

Он печатается как:

A ■ табуляция ■ между ■ каждым ■ словом

Как мне с этим справиться?

1 Ответ

0 голосов
/ 30 ноября 2018

Правка, мое первое предложение добавить явный символ \t не сработало.Я посмотрел на документы reportlab, и похоже, что они используют форматирование в стиле HTML, поэтому вы не получите явного символа табуляции.Вместо этого в HTML вы обычно используете таблицу для получения одинакового расстояния между словами (при условии, что вам нужна вкладка.) Вот быстрый пример:

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

doc = SimpleDocTemplate("simple_table.pdf", pagesize=letter)
# container for the 'Flowable' objects
elements = []

data= [['A', 'tab', 'between', 'each', 'word'],
        ['A', 'tab', 'between', 'each', 'word']]

t=Table(data)

elements.append(t)

doc.build(elements)
...