我正在尝试使用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()
它被打印为:
每个单词之间的一个■制表符
我该如何处理?
答案 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)