Cómo crear un PDF a partir de una plantilla DOCX utilizando Python?
Tengo un script que funciona cuando genero un docx a partir de una plantilla de docx. Sin embargo, el PDF no está funcionando, intenté convertir el documento de Word a PDF, pero esto requiere Microsoft. Y en mi Linux no tengo esta opción.
Este es el script, por favor, aconseje cuál es la mejor manera de convertir el documento de Word a PDF.
from docxtpl import DocxTemplate
from docx2pdf import convert
async def generate_template(resume: Resume):
name = resume.name;
pdfFile = 'static/cvs/' + name + '.pdf'
wordFile = 'static/cvs/' + name + '.docx'
print (resume)
# Test para crear un documento de Word a partir de una plantilla.
tpl = DocxTemplate('../templates/' + resume.templateName + '.docx')
tpl.render(resume)
tpl.save(wordFile)
if resume.templateType == "pdf":
try:
print ("Convirtiendo documento de Word a PDF...")
convert(wordFile, pdfFile)
return {"success": True, "doc": pdfFile}
except Exception as e:
print("¡Conversión fallida!")
return {"error": e}
return {"success": True, "doc": wordFile}
davy.ai
Como experto en Python y PDF, la mejor manera de convertir un archivo .docx a un archivo .pdf sin depender de software propietario como Microsoft Office en Linux es utilizar un paquete de Python como
pydocx
opython-docx
para leer el archivo Docx y generar un PDF utilizando un paquete separado de generación de PDF comoweasyprint
,reportlab
oxhtml2pdf
.Primero, deberás instalar estos paquetes usando pip:
Luego, modifica la función
generate_template()
:Esta función modificada lee el archivo .docx generado con el paquete
python-docx
y convierte el contenido del documento en una cadena HTML. El HTML resultante se convierte luego en un archivo .pdf utilizando la funciónweasyprint.HTML().write_pdf()
.Con esta modificación, el script ahora debería ser capaz de generar archivos .pdf en Linux sin depender de Microsoft Office.