1

我正在编写一个应该将段落转换为 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

现在根据我的理解,这基本上表示在字体的这个未编码位置找不到表情符号。但我已经详细查看了字体,它确实包含表情符号。

获取 font['cw'] 的长度表明,当相关表情符号位于几乎两倍远的位置 128522 时,它会上升到 65536。

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

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

对此

try:
    if (font['cw'][cid] == 0):
        continue
except:
    continue

它打印 2 个框而不是表情符号,但如果我将这些框复制粘贴到 Web 浏览器中,它们会正确显示。

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

4

1 回答 1

0

似乎是一个已知的错误:https ://github.com/reingart/pyfpdf/issues/131

看起来Fpdf有一段时间没有更新了。显然有一个名为 fpdf2 的叉子:https ://pypi.org/project/fpdf2/

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

于 2020-05-07T11:46:45.867 回答