es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

fpdf está dando un error de UnicodeEncodeError.

Estoy utilizando el paquete de Python fpdf para crear un archivo .pdf.

Este es mi código a continuación:

import fpdf
pdf = fpdf.FPDF(format='letter')  # formato del pdf
pdf.add_page()  # crear una nueva página
pdf.set_font("Arial", size=18)  # fuente y tamaño de texto
pdf.cell(200, 10, txt="Un Mejorado Python Interactivo", ln=1, align="C")
pdf.output("test.pdf")

Pero me está dando un error:

UnicodeEncodeError: El códec ‘latin-1’ no puede codificar el carácter ‘\u2019’ en la posición 74: ordinal no está dentro del rango(256)

No estoy seguro de por qué está apareciendo esto cuando quiero guardar el pdf utilizando pdf.output("test.pdf").

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque el texto en el método pdf.cell() contiene un carácter especial que no está dentro del rango de la codificación latin-1. En este caso, es el carácter \u2019 que representa una comilla simple derecha. Para solucionar este error, puedes eliminar el carácter especial del texto o cambiar la codificación para admitir caracteres Unicode estableciendo el parámetro unicodesubset=True al crear el objeto FPDF.

    Código actualizado con soporte Unicode:

    import fpdf
    pdf = fpdf.FPDF(format='letter', unicodesubset=True)  # formato pdf con soporte Unicode
    pdf.add_page()  # crear una nueva página
    pdf.set_font("Arial", size=18)  # fuente y tamaño de texto
    pdf.cell(200, 10, txt="Un Python interactivo mejorado", ln=1, align="C")
    pdf.output("test.pdf")
    

Comments are closed.