我试图生成以下Python编程的PDF,但生成的输出不显示希伯来字母正确报告实验室无法处理希伯来语(Unicode)的
# -*- 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()
我试图生成以下Python编程的PDF,但生成的输出不显示希伯来字母正确报告实验室无法处理希伯来语(Unicode)的
# -*- 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()
如果你使用正确的解码调用,比如"מה שלומך".decode("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()
或者更简单的说,使用'u'ההשלומך“'。 –
Hrm,Reportlab声明支持'unicode'和'utf-8'编码的字符串,所以这不可能是答案。请参见[PDF用户指南](http://www.reportlab.com/docs/reportlab-userguide.pdf),第41页,第3.1节。 –
我的经验是,ReportLab在Unicode上有漏洞,你需要使用UTF-8。我通过确保所有内容都是UTF-8解决了非ASCII字符的许多问题。上面的解决方案 –
此代码(见下文)的作品!您所需要做的就是将ArialHB.ttf
(或任何其他支持希伯来字符的字体)放入site-packages/reportlab/fonts
...
所需输出将位于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()
我使用的是Ubuntu 11.10 – user634615
你有没有尝试在'drawString'之前用'setFont'改变字体? – jedwards
我没有得到我应该设置的字体类型 – user634615