Я работаю над сценарием 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')