2016-11-25 35 views
0

我的代码应该插入一个文本到pdf模板中。可变文本用Python插入非ASCII字符到pdf reportlab

text = u"Gęślą JaźńZażółć" 

首先,我创建一个空的PDF,然后用该文件作为一个参数一个Canvas实例,然后结合文本与 canvas_instance.drawString(10, 10, text.decode('utf-8') 并保存。 而我的原始pdf文件确实包含一个正确的位置文本 - 但我得到ASCII字符+整齐的黑色方块,而不是非ASCII字母。 我曾尝试将字体设置为'Times-Bold'和'Helvetica',但它们似乎也不起作用。 我有一个编码声明,在我的Python文件,太:

# -*- coding: utf-8 -*- 

我将如何能够将文本插入到一个PDF模板?

的Python:2.7 库:ReportLab的,pyPdf Ubuntu的14

+0

看来我应该用setfont程序的字体设置为某些字体支持波兰,导致text = decode('utf-8')太少... – fanny

回答

1

OK,支持波兰的一个TTF解决了这个问题:

name = u"{} {}".format(unicode(mydata['firstname']), unicode(mydata['lastname'])) 
pdfmetrics.registerFont(TTFont('Theano', '<path>/TheanoOldStyle-Regular.ttf')) 

can.setFont('Theano', 16) 

can.drawString(175, 400, name.decode('utf-8'))