Converta Docx para PDF em Python

Muhammad Maisam Abbas 22 outubro 2021
  1. Converta Docx para PDF com o pacote pywin32 em Python
  2. Converta Docx para PDF com o pacote docx2pdf em Python
Converta Docx para PDF em Python

Este tutorial discutirá os métodos para converter um arquivo docx em um arquivo pdf em Python.

Converta Docx para PDF com o pacote pywin32 em Python

O pacote pywin32 é geralmente usado para criar e inicializar objetos COM e usar serviços do Windows em Python. Por se tratar de um pacote externo, temos que instalar pywin32 antes de usá-lo. O comando para instalar pywin32 é fornecido abaixo.

pip install pywin32

Podemos usar o aplicativo Microsoft Word com este pacote para abrir o arquivo docx e salvá-lo como um arquivo pdf. O exemplo de código a seguir nos mostra como converter um arquivo docx em um arquivo pdf com o pacote 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()

Convertemos o document.docx para document.pdf com a biblioteca win32com.client no código acima. Abrimos o arquivo docx com doc = word.Documents.Open(inputFile) e o salvamos como um arquivo pdf com doc.SaveAs(outputFile, FileFormat=wdFormatPDF). No final, fechamos o documento aberto com a função doc.Close() e saímos do Microsoft Word com a função word.Quit(). Observe que o arquivo de saída já deve ter sido criado para que este código funcione corretamente. Isso significa que temos que criar manualmente um arquivo denominado document.pdf antes de executar o código acima. Este processo também pode ser automatizado com a ajuda do manuseio de arquivos em Python. O trecho de código a seguir mostra como podemos automatizar ainda mais todo esse processo.

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()

No código acima, criamos o arquivo de saída com file = open(outputFile, "w") antes de abrir o Microsoft Word com a biblioteca win32com.client.

Converta Docx para PDF com o pacote docx2pdf em Python

O método pywin32 funciona muito bem e nos dá muito controle sobre os detalhes essenciais. A única desvantagem é que temos que escrever muitos códigos para ele. Se precisarmos converter rapidamente um arquivo docx em um arquivo pdf sem nos preocupar muito com quaisquer detalhes de baixo nível, podemos usar o pacote docx2pdf em Python. O pacote docx2pdf nos fornece funções simples que pegam os nomes dos arquivos e cuidam de todas as coisas de conversão de baixo nível discutidas na seção anterior. O docx2pdf também é um pacote externo. O comando para instalar o pacote docx2pdf é fornecido abaixo.

pip install docx2pdf

O exemplo de código a seguir nos mostra como converter um arquivo docx em um arquivo pdf com o pacote docx2pdf.

from docx2pdf import convert

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

convert(inputFile, outputFile)

Convertemos document.docx em document.pdf com a função convert() do pacote docx2pdf no código acima. A única desvantagem desse código é que ainda precisamos criar o arquivo de saída antes de executar este código. Podemos automatizar esse processo como fizemos na seção anterior, usando o manuseio de arquivos.

from docx2pdf import convert

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

convert(inputFile, outputFile)

No código acima, criamos o arquivo de saída com file = open(outputFile, "w") antes de chamar a função 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