Report Lab can't handle hebrew (unicode)

≡放荡痞女 提交于 2019-12-21 17:52:51

问题


I am trying to generate the pdf from following python programming but generated output doesn't display hebrew letters correctly

# -*- 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()

回答1:


This code (see below) works! All you need to do is place ArialHB.ttf (or any other font that supports Hebrew characters) into site-packages/reportlab/fonts...

The desired output will be at the bottom of the pdf page.

# -*- 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()



回答2:


If you use the proper decode call like "מה שלומך".decode("utf-8") it works.

# -*- 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()


来源:https://stackoverflow.com/questions/10958904/report-lab-cant-handle-hebrew-unicode

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!