Python Django reportlab拉丁2编码

Python Django reportlab拉丁2编码,python,django,encoding,reportlab,iso-8859-2,Python,Django,Encoding,Reportlab,Iso 8859 2,有没有合适的转换拉丁字母的方法?我需要一封波兰信给我的学校项目。下面是我如何生成pdf的一些代码 #!/usr/bin/python # -*- utf-8 -*- from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter, A4 def GenerujPustyArkusz(c): c.setFont("Times-Roman", 8) c.drawString(450,

有没有合适的转换拉丁字母的方法?我需要一封波兰信给我的学校项目。下面是我如何生成pdf的一些代码

#!/usr/bin/python
# -*- utf-8 -*-

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4



def GenerujPustyArkusz(c):
    c.setFont("Times-Roman", 8)
    c.drawString(450,750, u"Załącznik nr 2 do Regulaminu")


def test():
    c = canvas.Canvas("test.pdf", pagesize=letter)
    GenerujPustyArkusz(c)
    c.showPage()
    c.save()


test()
我明白了:

Za■■cznik nr 2 do Regulaminu

我尝试了几种编码技巧,但没有结果

我认为主要的问题是你使用的字体没有那些波兰语字符。 这段代码对我有效,并显示了您想要的字符:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont   

def GenerujPustyArkusz(c):
    pdfmetrics.registerFont(TTFont('Verdana', 'Verdana.ttf'))
    c.setFont("Verdana", 8)
    s = u"Załącznik nr 2 do Regulaminu"
    c.drawString(450,750, s)   

def test():
    c = canvas.Canvas("test.pdf", pagesize=letter)
    GenerujPustyArkusz(c)
    c.showPage()
    c.save()  

test()
如果你想使用其他字体,你必须找到包含波兰语字符的字体


我希望这有帮助

你从哪里得到错误的输出?在生成的pdf中?是的,我得到的是从pdf中复制的(我用黑色方块替换了复制的'nn',这是我在pdf中看到的)。在
generaujpustyaskuz
方法中尝试这一行:
c.drawString(450750,“Załącznik nr 2 do regulamu”。decode('utf-8'))
另外,为什么要将这个问题标记为拉丁2,我想你用的是utf-8?我需要的字母是拉丁文2(iso-8859-2),像łóżźćś。我试过这个把戏,但没有结果。真糟糕!它起作用了。非常感谢,你为我节省了很多时间。我很高兴,请接受这个答案,如果它对你有用的话: