0

I'm doing a code for language translator app using tkinter and as an extra feature, I decided to add a function which lets you save the translated text as a pdf file. The problem is, if the translated text contains characters outside of latin unicode, I get errors.

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\vinit\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:/Users/vinit/PycharmProjects/LanguageTranslator/Translator/Translator.py", line 66, in savepdf
    pdf.output("Language.pdf")
  File "C:\Users\vinit\PycharmProjects\LanguageTranslator\venv\lib\site-packages\fpdf\fpdf.py", line 1065, in output
    self.close()
  File "C:\Users\vinit\PycharmProjects\LanguageTranslator\venv\lib\site-packages\fpdf\fpdf.py", line 246, in close
    self._enddoc()
  File "C:\Users\vinit\PycharmProjects\LanguageTranslator\venv\lib\site-packages\fpdf\fpdf.py", line 1636, in _enddoc
    self._putpages()
  File "C:\Users\vinit\PycharmProjects\LanguageTranslator\venv\lib\site-packages\fpdf\fpdf.py", line 1170, in _putpages
    p = self.pages[n].encode("latin1") if PY3K else self.pages[n]
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 87-91: ordinal not in range(256)

How do I go about so that if I want to translate text from English to Hindi or any other language that has different characters?

Vinit
  • 17
  • 4
  • Does this answer your question? [How to convert a string to utf-8 in Python](https://stackoverflow.com/questions/4182603/how-to-convert-a-string-to-utf-8-in-python) – tevemadar Jun 01 '21 at 08:30

1 Answers1

0

An unicode font should be set up and used by using .add_font().

Below is an example code of using arialuni.ttf:

...
pdf.add_font("arialuni", "", "C:/Windows/fonts/arialuni.ttf", uni=True)
pdf.set_font("arialuni", size=15)
...

Details can be referred to document.

acw1668
  • 40,144
  • 5
  • 22
  • 34