UnicodeError при попытке создать файл PDF - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над сценарием Python, который использует NewsAPI (ссылка ниже) для получения статей из всевозможных источников на основе ключевого слова. Моя цель - создать pdf-файл с некоторой информацией о каждой статье, а затем отправить мне pdf по электронной почте.

Я использую для l oop, чтобы перебрать статьи, полученные из NewsAPI и выберите некоторую информацию там, которую я хочу в моем PDF. Я храню данные в каждой переменной, а затем записываю их в pdf в виде строки. ПДФ выглядит не очень хорошо, но я не могу найти лучшего решения на данный момент. Пожалуйста, не стесняйтесь предлагать другие альтернативные решения.

Теперь я могу записать первые три вариабеля в pdf, но получаю проблему с кодированием четвертого вариабеля, который в данном случае называется descrition . Я получаю UnicodeEncodeError. См. Ниже

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 1723: ordinal not in range(256)

Теперь кто-нибудь может помочь мне понять, в чем проблема? Я попытался следующее, чтобы решить проблему, но это не сработало.

pdf.output('tuto1.pdf','F').encode('latin-1', 'replace').decode('latin-1')

Вот полный код на случай, если это поможет. Как уже упоминалось, не стесняйтесь предлагать любые улучшения.

pdf = FPDF()
pdf.add_page()
count = 0
cell_pos = 40

for article in all_articles['articles']:
    count += 1
    print(f'Article number: {count}')

    published=('Article published : ', article['publishedAt'])
    pdf.set_font('Arial', '', 8)
    pdf.cell(cell_pos, 10, str(published), ln = 1)

    source=('Source : ',article['source']['name'])
    pdf.set_font('Arial', '', 8)
    pdf.cell(cell_pos, 10, str(source), ln = 1)

    artic=('Title : ',article['title'])
    pdf.set_font('Arial', '', 8)
    pdf.cell(cell_pos, 10, str(artic), ln = 1)

    #descrition.encode('latin-1', 'ignore') 
    descrition=('Description : ',article['description'])

    pdf.set_font('Arial', '', 8)
    pdf.cell(cell_pos, 10, str(descrition), ln = 1)
    '''

    link=('Link to the article : ', article['url'],'\n\n')
    pdf.set_font('Arial', '', 8)
    pdf.cell(cell_pos, 10, str(link), ln = 1)
    '''
    cell_pos += 20

#pdf.output('tuto1.pdf','F').encode('latin-1', 'replace').decode('latin-1')
pdf.output('tuto1.pdf', 'F').encode('latin-1')
...