我正在编写一个程序,它应该把一个段落变成一个PDF。很多段落中都有表情符号,我不知道如何让它们显示在PDF上。
每当段落中出现表情符号时,我就会收到以下错误信息。
File "C:\Python38\lib\site-packages\fpdf\fpdf.py", line 1449, in _putTTfontwidths
if (font['cw'][cid] == 0):
IndexError: list index out of range
现在根据我的理解,这基本上是说在字体的这个未编码位置没有找到表情符号。但是我详细看了一下字体,确实包含了emojis。
得到font['cw']的长度后发现,当相关表情符号位于128522位置时,它的长度达到了65536,几乎是两倍。
现在如果我编辑这个pdf代码
if (font['cw'][cid] == 0):
continue
对此
try:
if (font['cw'][cid] == 0):
continue
except:
continue
它打印了2个方框,而不是表情符号,但如果我将方框复制粘贴到网络浏览器中,它们就会正确显示。
我假设这是一个编码问题。但我还没有真正地干预过编码,所以我不知道如何继续。
似乎是一个已知的错误。https:/github.comreingartpyfpdfissues131
看起来Fpdf有一段时间没有更新了。显然有一个叫fpdf2的叉子。https:/pypi.orgprojectfpdf2
如果也失败了,你可以看看ReportLab或WeasyPrint库是否更适合你。