问题
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