Как правильно нарисовать арабский c текст в PDF-файле, используя drawString? (Reportlab.pdfgen) - PullRequest
0 голосов
/ 24 января 2020

Я использую python reportlab (window10, python3 .6), чтобы писать текст на странице, когда текст Engli sh, это работает, но когда я использую текст Arabi c, он пишет грязный код в изображение.

Ниже мой код:

from reportlab.lib.units import mm
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
page = canvas.Canvas("test.pdf", pagesize=A4)
page.drawString(10*mm, 267*mm, "اللغة العربية") 
page.showPage()
page.save()

введите описание изображения здесь

1 Ответ

0 голосов
/ 24 января 2020

Вы должны использовать шрифт, поддерживающий арабские c символы. Я взял здесь шрифт Scheherazade в качестве примера (вам нужно скопировать Scheherazade-Regular.ttf в site-packages\reportlab\fonts):

from reportlab.lib.units import mm
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont 

pdfmetrics.registerFont(TTFont('Scheherazade', 'Scheherazade-Regular.ttf'))

page = canvas.Canvas("test.pdf", pagesize=A4)
page.setFont('Scheherazade', 12)
page.drawString(10*mm, 267*mm, "اللغة العربية") 
page.showPage()
page.save()

Ref: Лаборатория отчетов не может обрабатывать иврит (Unicode)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...