Python 报告实验室可以';t处理希伯来语(unicode)
我试图通过以下python编程生成pdf,但生成的输出不能正确显示希伯来文字母Python 报告实验室可以';t处理希伯来语(unicode),python,reportlab,non-ascii-characters,Python,Reportlab,Non Ascii Characters,我试图通过以下python编程生成pdf,但生成的输出不能正确显示希伯来文字母 # -*- coding: utf-8 -*- from reportlab.pdfgen import canvas def hello(c): c.drawString(100,100, "מה שלומך") c = canvas.Canvas("hello.pdf") hello(c) c.showPage() c.save() 如果您使用适当的解码调用,如“מהשלהך”。解码(“utf-8”),
# -*- coding: utf-8 -*-
from reportlab.pdfgen import canvas
def hello(c):
c.drawString(100,100, "מה שלומך")
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
如果您使用适当的解码调用,如
“מהשלהך”。解码(“utf-8”)
,它会工作
# -*- coding: utf-8 -*-
from reportlab.pdfgen import canvas
def hello(c):
c.drawString(100,100, "מה שלומך".decode("utf-8"))
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
此代码(见下文)有效!您只需将ArialHB.ttf
(或任何其他支持希伯来文字符的字体)放入site packages/reportlab/font
所需的输出将位于pdf页面的底部
# -*- coding: utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('Hebrew', 'ArialHB.ttf'))
def hello(c):
c.setFont("Hebrew", 14)
c.drawString(10,10, u"מה שלומך".encode('utf-8'))
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
在
drawString
之前您是否尝试过使用setFont
更改字体?我不知道应该设置哪种字体类型,或者更简单地说,使用u“משלךמך”
。Hrm、Reportlab声明unicode
和utf-8
编码字符串都受支持,因此这不是答案。请参阅,第41页,第3.1节。我的经验是ReportLab在Unicode上会出错,您需要使用UTF-8。通过确保所有内容都是UTF-8,我已经解决了许多非ASCII字符的问题。上述解决方案不适合我。我已经尝试过这些排列和组合。