我一直在try 使用带有python-escpos包的SPRT热敏打印机打印阿拉伯字符,但似乎根本找不到任何解决方案,所以我决定将阿拉伯字符绘制到位图上,然后打印出来.但这也行不通..

以下是用于将文本转换为位图的代码: 说

from PIL import Image, ImageDraw, ImageFont

img = Image.new('L', (100, 10))
d = ImageDraw.Draw(img)
a = 'محمد'

d.text((1,1), f"{a}",255)
img.save('pil_text.png')

导致错误: UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)

此外,我还try 使用UTF-8和1256对字符串进行编码,但两者都没有给出正确的字符: b'\xd9\x85\xd8\xad\xd9\x85\xd8\xaf'

推荐答案

在这种情况下,您需要使用特定的字体.

from PIL import Image, ImageFont, ImageDraw

image = Image.new("RGB",[320,320])
draw = ImageDraw.Draw(image)
a = 'محمد'
font = ImageFont.truetype("arial-unicode-ms.ttf", 14)
draw.text((50, 50), a, font=font)
image.save("image.png")

Python相关问答推荐

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

如何使用symy打印方程?

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

数据抓取失败:寻求帮助

递归访问嵌套字典中的元素值

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

当我try 在django中更新模型时,模型表单数据不可见

下三角形掩码与seaborn clustermap bug

如何使用使用来自其他列的值的公式更新一个rabrame列?

在代码执行后关闭ChromeDriver窗口

不允许 Select 北极滚动?

使用嵌套对象字段的Qdrant过滤

有没有办法让Re.Sub报告它所做的每一次替换?

利用SCIPY沿第一轴对数组进行内插

按列表分组到新列中

Pandas:使列中的列表大小与另一列中的列表大小相同

关于数字S种子序列内部工作原理的困惑

生产者/消费者-Queue.get by list

如何在微调Whisper模型时更改数据集?