Добавление эмодзи в PDF с помощью 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
Теперь, насколько я понимаю, это в основном означает, что смайлик не был найден в этом месте некодирования в шрифте. Но я подробно рассмотрел шрифт, и он действительно содержит смайлы.
Получение длины шрифта ['cw'] показывает, что она увеличивается до 65536, когда рассматриваемый смайлик находится в позиции 128522, что почти вдвое больше.
Теперь, если я отредактирую код fpdf из этого
if (font['cw'][cid] == 0):
continue
к этому
try:
if (font['cw'][cid] == 0):
continue
except:
continue
Он печатает 2 поля вместо смайликов, но если я скопирую и вставлю поля в веб-браузер, они будут отображаться правильно.
Я предполагаю, что это проблема с кодировкой. Но я особо не вмешивался в кодирование, поэтому не знаю, как действовать дальше.
1 ответ
Кажется, это известная ошибка: https://github.com/reingart/pyfpdf/issues/131
Похоже, что Fpdf уже давно не обновлялся. Очевидно, есть вилка под названием fpdf2: https://pypi.org/project/fpdf2/
Если и это не удастся, вы увидите, подходят ли вам библиотеки ReportLab или WeasyPrint.