python - Django reportlab latin2 编码

标签 python django encoding reportlab iso-8859-2

是否有任何选项可以以正确的方式转换 latin2 字母?我需要给我的学校项目写一封波兰信。这是我如何生成 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()

如果您想使用其他字体,您必须找到包含波兰语字符的字体。

希望对您有所帮助!

关于python - Django reportlab latin2 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008469/

相关文章:

python - 如何将值分配给列表中的 python 字典

python - 如何在同一标记上连续注册两个点击事件

python - 安装 Python 包文档

python - 在字典列表中编码

c++ - 调用 system() 的行为与在命令提示符 (cmd) 中的行为不同

python - 使用 python mysql 查找重复条目

python - Django 单元测试,未知列错误

python - 状态模式 - Django 模型

python - (重新)使用 PIP 检查依赖关系

php - 转换文件编码