如何使用 Reportlab 编写制表符?
How to write tabs using 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()
打印为:
A■tab■between■each■word
我该如何处理?
编辑,我第一个添加显式 \t
字符的建议没有用。我查看了 reportlab 的文档,看起来他们使用 HTML 样式格式,因此您不会真正获得明确的制表符。相反,在 HTML 中,您通常会使用 table 来获得一致的单词间距(假设这就是您需要制表符的原因。)这是一个简单的示例:
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)
我正在尝试使用 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■tab■between■each■word
我该如何处理?
编辑,我第一个添加显式 \t
字符的建议没有用。我查看了 reportlab 的文档,看起来他们使用 HTML 样式格式,因此您不会真正获得明确的制表符。相反,在 HTML 中,您通常会使用 table 来获得一致的单词间距(假设这就是您需要制表符的原因。)这是一个简单的示例:
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)