2016-11-25 63 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'))