如何使用Reportlab编写标签?

时间:2018-11-30 19:45:05

标签: python python-3.x reportlab

我正在尝试使用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()

它被打印为:

  

每个单词之间的一个■制表符

我该如何处理?

1 个答案:

答案 0 :(得分:1)

编辑,我第一个建议添加显式\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)