Добавление эмодзи в PDF с помощью PyFPDF - PullRequest
1 голос
/ 07 мая 2020

Я пишу программу, которая должна превратить абзац в 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 Ответ

0 голосов
/ 07 мая 2020

Кажется, это известная ошибка: https://github.com/reingart/pyfpdf/issues/131

Похоже, что Fpdf давно не обновлялся. По-видимому, существует форк под названием fpdf2: https://pypi.org/project/fpdf2/

Если это тоже не удастся, вы можете увидеть, подходят ли вам библиотеки ReportLab или WeasyPrint.

...