Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
526 views
in Technique[技术] by (71.8m points)

python - Report Lab can't handle hebrew (unicode)

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()
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...