Python 添加表情符号';使用PyFPDF将s转换为PDF

Python 添加表情符号';使用PyFPDF将s转换为PDF,python,encoding,fpdf,emoji,pyfpdf,Python,Encoding,Fpdf,Emoji,Pyfpdf,我正在写一个程序,可以把一段文字转换成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 从我的理解来看,这基本上是说在字体中

我正在写一个程序,可以把一段文字转换成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
从我的理解来看,这基本上是说在字体中这个未编码的位置没有找到表情符号。但我已经详细研究了字体,它确实包含表情符号

获取字体['cw']的长度可以发现,当所讨论的表情符号位于128522位置时,其长度会上升到65536,这几乎是距离的两倍

现在,如果我从这里编辑fpdf代码

if (font['cw'][cid] == 0):
        continue
对此

try:
    if (font['cw'][cid] == 0):
        continue
except:
    continue
它会打印两个框而不是表情符号,但如果我将框复制粘贴到web浏览器中,它们会正确显示

我假设这是一个编码问题。但我并没有真正干预编码,所以我不确定如何继续。

似乎是一个已知的错误:

看起来Fpdf已经有一段时间没有更新了。显然有一个叉子叫做fpdf2:

如果同样失败,您可以查看ReportLab或WeasyPrint库是否更适合您。

似乎是一个已知的错误:

看起来Fpdf已经有一段时间没有更新了。显然有一个叉子叫做fpdf2:


如果同样失败,您可以查看ReportLab或WeasyPrint库是否更适合您。

该库不是为处理BMP之外的字符而设计的(即Unicode的前65536个字符)。此外,即使是,表情符号也会像其他字符一样以黑色打印。该库的设计目的不是处理BMP之外的字符(即Unicode的前65536个字符)。此外,即使是,表情符号也会像其他字符一样以黑色打印。