CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python] pyfpdf impossible d'écrire le charactère euro

Nirostreetlourd
Nirostreetlourd
Niveau 26
20 mai 2022 à 18:57:01

J'essaye de créer dynamiquement des rapports pdf.
J'ai besoin d'ajouter le symbole € mais ça à l'air impossible et je reçois l'erreur suivante :
"UnicodeEncodeError: 'latin-1' codec can't encode character '\u20ac' in position 201: ordinal not in range(256)"

pdf.set_text_color(220, 50, 50) # Add text # w = width # h = height # txt = your text # ln (0 False; 1 True - move cursor down to next line) # border (0 False; 1 True - add border around cell) pdf.cell(120, 100, 'Hello World!', ln=True, border=True) pdf.cell(120, 100, "€") pdf.set_font('times', '', 12) pdf.output('pdf_1.pdf').encode('utf-8')
Une idée ?

Nirostreetlourd
Nirostreetlourd
Niveau 26
20 mai 2022 à 19:23:48

.encode('latin-1', 'replace').decode('latin-1') j'arrive a remplacer les symboles faisant planter mais impossible de résoudre l'erreur d'encodage. J'ai des points d'interrogations à la place du symbole

Azerban
Azerban
Niveau 16
20 mai 2022 à 19:39:44

https://stackoverflow.com/questions/67130517/fpdf-unicodeencodeerror-latin-1-codec-cant-encode-character-u2013-in-pos#answer-70013577

It's because the default fonts for pyfpdf are latin-1 encoded.

You will need to download a utf-8 encoded font like Arial (https://www.freefontspro.com/14454/arial.ttf), place it in the same directory as the python file, and add the font using

 fpdf.add_font("Arial", "", "arial.ttf", uni=True)

when you set the font use 'Arial'

Azerban
Azerban
Niveau 16
20 mai 2022 à 19:53:14

Je viens de regarder le repo Github de PyFPDF et il n'y as plus de màj depuis des années.

Utilise plutôt ce fork à la place : https://pyfpdf.github.io/fpdf2/ (si tu utilisais l'ancienne version).

Nirostreetlourd
Nirostreetlourd
Niveau 26
20 mai 2022 à 19:54:59

J'ai cherché sur stackoverflow avec toutes les tournures de phrases que mon anglais permettait.
Que ton nom soit sanctifié Azerban.
Je te dois un café !

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment