Moh*_*mdy 1 reportlab python-3.x
我有二维码PIL Image和一些阿拉伯文本,并尝试将二维码图像放入 pdf 文件中。\n我正在使用reportlab.pdfgen\'s canvas。
经过大量搜索arabic_reshaper,我发现有人的项目不起作用,并且在阅读源代码后textobject.py我发现我需要安装pyfribidi,安装了它,然后使用drawString(x,y,"\xd9\x85\xd8\xb1\xd8\xa8\xd8\xad\xd8\xa7",RTL)没有任何反应。
我正在按照arabic_reshaper存储库中的描述使用,并且RTL来自pyfribidi
import arabic_reshaper\n\nreshaped = arabic_reshaper.reshape(exam_name)\nc.drawString(x - 100, y - 20, reshaped, direction=RTL)\n\nRun Code Online (Sandbox Code Playgroud)\n\n结果总是相同的,正如您在右侧看到的那样,英语字符串正常显示,阿拉伯语字符串显示为黑色像素:
\n\n
如果您对另一个图书馆有任何其他建议,我们也将不胜感激。
\n感谢一些开发人员指出问题是由字体引起的,我能够修复它。
\n\n首先,我下载了一种阿拉伯TTF字体,当我使用时,linux我将其放入,\'/usr/share/fonts\'然后执行了以下操作:
import reportlab\nimport arabic_reshaper\nfrom bidi.algorithm import get_display\nfrom reportlab.pdfbase import pdfmetrics\nfrom reportlab.pdfbase.ttfonts import TTFont\n// BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\nreportlab.rl_config.TTFSearchPath.append(str(settings.BASE_DIR))\npdfmetrics.registerFont(TTFont(\'Arabic\', \'/usr/share/fonts/tradbdo.TTF\'))\n\nar = arabic_reshaper.reshape(u\'\xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a\xd8\xa9\')\nar = get_display(ar)\ncanvas.setFont(\'Arabic\', 32)\ncanvas.drawString(x - 100, y, ar)\nRun Code Online (Sandbox Code Playgroud)\n\n现在一切正常。
\n\n\n| 归档时间: |
|
| 查看次数: |
1962 次 |
| 最近记录: |