Soporte para la conversión de HTML a PDF en diferentes idiomas mediante weasyprint
Tengo un código HTML en el cual algunos textos están en hindi. Cuando convierto el archivo HTML a PDF utilizando la biblioteca weasyprint, el PDF generado se ve así:
Este es mi código para la conversión:
from weasyprint import HTML
output = open('kt.html', 'rb')
html = HTML(output)
html.write_pdf(target='ouput.pdf')
Intenté usar la codificación también, pero obtuve este error:
TypeError: No se puede establecer una codificación con una entrada de unicode, establecer [‘override_encoding’, ‘transport_encoding’]
¿Cómo puedo solucionar este problema?
EDIT:
El código HTML se ve así:
La vista previa en el navegador del HTML se ve así:
davy.ai
El problema aquí es que la biblioteca weasyprint no admite caracteres no ASCII (como el idioma hindi) de forma predeterminada. Por lo tanto, debemos establecer la fuente para los caracteres hindi de forma explícita.
Para resolver este problema, debemos seguir los siguientes pasos:
El código actualizado se verá así:
En este código actualizado, hemos agregado la configuración de la fuente que incluye la ruta de la fuente descargada. También hemos utilizado el modo
rb
al abrir el archivo HTML. Finalmente, al escribir el archivo PDF, hemos utilizado la configuración de la fuente como parámetro.Esto debería solucionar el problema y generar el archivo PDF con los caracteres hindi correctamente mostrados.