Convertir Docx a PDF en Python

Muhammad Maisam Abbas 22 octubre 2021
  1. Convierta Docx a PDF con el paquete pywin32 en Python
  2. Convierta Docx a PDF con el paquete docx2pdf en Python
Convertir Docx a PDF en Python

Este tutorial discutirá los métodos para convertir un archivo docx en un archivo pdf en Python.

Convierta Docx a PDF con el paquete pywin32 en Python

El paquete pywin32 se usa generalmente para crear e inicializar objetos COM y usar servicios de Windows en Python. Como es un paquete externo, tenemos que instalar pywin32 antes de usarlo. El comando para instalar pywin32 se da a continuación.

pip install pywin32

Podemos usar la aplicación Microsoft Word con este paquete para abrir el archivo docx y guardarlo como un archivo pdf. El siguiente ejemplo de código nos muestra cómo convertir un archivo docx a un archivo pdf con el paquete pywin32.

import os
import win32com.client

wdFormatPDF = 17

inputFile = os.path.abspath("document.docx")
outputFile = os.path.abspath("document.pdf")
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(inputFile)
doc.SaveAs(outputFile, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()

Convertimos el document.docx a document.pdf con la biblioteca win32com.client en el código anterior. Abrimos el archivo docx con doc = word.Documents.Open(inputFile) y lo guardamos como un archivo pdf con doc.SaveAs(outputFile, FileFormat=wdFormatPDF). Al final, cerramos el documento abierto con la función doc.Close() y salimos de Microsoft Word con la función word.Quit(). Tenga en cuenta que el archivo de salida ya debe estar creado para que este código funcione correctamente. Esto significa que tenemos que crear manualmente un archivo llamado document.pdf antes de ejecutar el código anterior. Este proceso también se puede automatizar con la ayuda del manejo de archivos en Python. El siguiente fragmento de código muestra cómo podemos automatizar aún más todo este proceso.

import os
import win32com.client

wdFormatPDF = 17

inputFile = os.path.abspath("document.docx")
outputFile = os.path.abspath("document.pdf")
file = open(outputFile, "w")
file.close()
word = win32com.client.Dispatch("Word.Application")
doc = word.Documents.Open(inputFile)
doc.SaveAs(outputFile, FileFormat=wdFormatPDF)
doc.Close()
word.Quit()

En el código anterior, creamos el archivo de salida con file = open(outputFile, "w") antes de abrir Microsoft Word con la biblioteca win32com.client.

Convierta Docx a PDF con el paquete docx2pdf en Python

El método pywin32 funciona bien y nos da mucho control sobre los detalles esenciales. El único inconveniente es que tenemos que escribir mucho código para ello. Si necesitamos convertir rápidamente un archivo docx en un archivo pdf sin preocuparnos demasiado por los detalles de bajo nivel, podemos usar el paquete docx2pdf en Python. El paquete docx2pdf nos proporciona funciones simples que toman los nombres de los archivos y se encargan de todas las cosas de conversión de bajo nivel discutidas en la sección anterior. El docx2pdf también es un paquete externo. El comando para instalar el paquete docx2pdf se da a continuación.

pip install docx2pdf

El siguiente ejemplo de código nos muestra cómo convertir un archivo docx a un archivo pdf con el paquete docx2pdf.

from docx2pdf import convert

inputFile = "document.docx"
outputFile = "document2.pdf"

convert(inputFile, outputFile)

Convertimos document.docx a document.pdf con la función convert() del paquete docx2pdf en el código anterior. El único inconveniente de este código es que todavía necesitamos crear el archivo de salida antes de ejecutar este código. Podemos automatizar este proceso como hicimos en la sección anterior usando el manejo de archivos.

from docx2pdf import convert

inputFile = "document.docx"
outputFile = "document2.pdf"
file = open(outputFile, "w")
file.close()

convert(inputFile, outputFile)

En el código anterior, creamos el archivo de salida con file = open(outputFile, "w") antes de llamar a la función convert().

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn