pythonpyfpdf

Pyfpdf Turkish Character in Python


I want to create a pdf in my Python application using a text that contains Turkish characters, but I get an error. My codes are below. How can I fix this?

# -*- coding: utf-8 -*-
from fpdf import FPDF
import os

def add_image(image_path):
    pdf = FPDF()
    pdf.add_page()

    epw = pdf.w - 2 * pdf.l_margin
    pdf.set_font('Arial', 'B', 14.0)
    txt = u'ATATÜRK LİSESİ 2019 2020 EĞİTİM ÖĞRETİM YILI 11C SINIFI'
    stxt = txt.encode('iso-8859-9')
    pdf.cell(epw, 0.0, stxt, align='C')

I get an 'UnicodeEncodeError: 'latin-1' codec can't encode character '\u0130' in position 60: ordinal not in range(256)' error if I use the codes below

epw = pdf.w - 2 * pdf.l_margin
pdf.set_font('Arial', 'B', 14.0)
txt = 'ATATÜRK LİSESİ 2019 2020 EĞİTİM ÖĞRETİM YILI 11C SINIFI'
#stxt = txt.encode('iso-8859-9')
pdf.cell(epw, 0.0, txt, align='C')

Solution

  • I downloaded 'tr-arial.ttf' font to the application folder and i found this solution:

    epw = pdf.w - 2 * pdf.l_margin
    txt = u'ATATÜRK LİSESİ 2019 2020 EĞİTİM ÖĞRETİM YILI 11C SINIFI'
    pdf.add_font('tr-arial', '', 'tr-arial.ttf', uni=True)
    pdf.set_font('tr-arial', '', 11)
    pdf.cell(epw, 0.0, txt, align='C')