Última Atualização: 29 Jan, 2025

Neste artigo, vamos guiá-lo sobre como trabalhar com arquivos PDF usando Python. Para isso, utilizaremos a biblioteca pypdf.
Usando a biblioteca pypdf, demonstraremos como realizar as seguintes operações em Python:
- Extração de texto de PDFs
- Rotação de páginas de PDF
- Mesclagem de múltiplos PDFs
- Divisão de PDFs em arquivos separados
- Adição de marcas d’água a páginas de PDF
Nota: Este artigo cobre muitos detalhes valiosos, então fique à vontade para pular para as seções que mais lhe interessam! O conteúdo é organizado para fácil navegação, permitindo que você se concentre rapidamente no que for mais relevante.

Códigos de Exemplo
Você pode baixar todo o código de exemplo usado neste artigo a partir do link a seguir. Ele inclui o código, arquivos de entrada e de saída.
Instalar pypdf
Para instalar o pypdf, basta executar o seguinte comando no seu terminal ou prompt de comando:
pip install pypdf
Nota: O comando acima diferencia maiúsculas de minúsculas.
1. Extraindo Texto de um Arquivo PDF Usando Python
Explicação do Código
1. Criando um Objeto Leitor de PDF
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
carrega o arquivo PDF em um objeto leitor.- Este objeto permite acesso às páginas e seu conteúdo.
2. Percorrendo Páginas
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
retorna uma lista de páginas no PDF.enumerate(..., start=1)
atribui um número de página começando em 1.
3. Imprimindo Texto Extraído
print(f"Page {page_number}:")
print(page.extract_text())
print("-" * 50) # Separador para legibilidade
page.extract_text()
extrai texto da página atual.- O script imprime o texto extraído juntamente com o número da página.
"-" * 50
imprime uma linha separadora (--------------------------------------------------
) para melhor legibilidade.
Arquivo PDF de Entrada Usado no Código
- Arquivo de Entrada: Link para Download
Saída do Código
2. Girando Páginas de PDF Usando Python
Explicação do Código
O código basicamente gira a primeira página por 90° no sentido horário e salva o PDF modificado sem afetar outras páginas.
1. Importar Classes Necessárias
from pypdf import PdfReader, PdfWriter
PdfReader
: Lê o PDF de entrada.PdfWriter
: Cria um novo PDF com modificações.
2. Definir Caminhos de Arquivo de Entrada e Saída
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- O script lê de
input.pdf
e salva o arquivo modificado comorotated_output.pdf
.
3. Ler o PDF e Criar um Objeto Writer
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
carrega o PDF existente.writer
é usado para armazenar as páginas modificadas.
4. Girar a Primeira Página em 90 Graus
page = reader.pages[0]
page.rotate(90) # Girar 90 graus no sentido horário
writer.add_page(page)
- Página 1 é extraída, rotacionada 90 graus, e adicionada ao novo PDF.
5. Adicionar Páginas Restantes Sem Mudanças
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- Percorre as páginas restantes e as adiciona como estão.
6. Salvar o Novo PDF
with open(output_pdf, "wb") as file:
writer.write(file)
- Abre
rotated_output.pdf
em modo binário de escrita e salva o novo PDF.
7. Imprimir Confirmação
print(f"Rotated page saved to {output_pdf}")
- Exibe uma mensagem de sucesso.
PDF de Entrada Usado no Código e Sua Saída Girada
- Arquivo PDF de Entrada: Link para Download
- Arquivo PDF Girado de Saída: Link para Download
Captura de Tela
3. Mesclando Arquivos PDF Usando Python
Este script Python demonstra como mesclar múltiplos arquivos PDF de um diretório em um único PDF usando a biblioteca PyPDF.
Explicação do Código
- Este script mescla automaticamente todos os arquivos PDF encontrados no diretório especificado (
pdfs-to-merge
) em um único arquivo de saída (merged_output.pdf
). - Ele garante que o diretório de saída exista e adiciona as páginas de cada PDF na ordem em que são listadas.
- Ele salva o arquivo final mesclado no subdiretório
output-dir
.
Desmembramento do Código
1. Importar Bibliotecas
import os
from pypdf import PdfReader, PdfWriter
os
: Usado para interagir com o sistema de arquivos, como ler diretórios e gerenciar caminhos de arquivo.PdfReader
: Lê o conteúdo de um arquivo PDF.PdfWriter
: Cria e escreve um novo arquivo PDF.
2. Definir Diretório e Arquivo de Saída
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: Especifica a pasta onde os arquivos PDF estão armazenados.output_file
: Define o caminho e o nome de saída do PDF mesclado.
3. Criar Diretório de Saída se Não Existir
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- Isso garante que o diretório de saída exista, e se não, ele o cria.
4. Criar um Objeto PdfWriter
writer = PdfWriter()
writer
é usado para coletar e combinar todas as páginas dos PDFs.
5. Iterar Sobre Todos os Arquivos PDF no Diretório
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Adding: {file_name}")
- Este loop percorre todos os arquivos no diretório especificado, verificando por arquivos com extensão
.pdf
. Ele usasorted()
para processá-los em ordem alfabética.
6. Ler Cada PDF e Adicionar Páginas ao Writer
reader = PdfReader(file_path)
writer.append(reader)
- Para cada PDF,
PdfReader
lê o arquivo, e então todas as páginas daquele PDF são adicionadas awriter
.
7. Escrever o PDF Mesclado em um Arquivo de Saída
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- Após coletar todas as páginas,
writer.write()
escreve o PDF mesclado no caminho de saída especificado.
8. Imprimir Confirmação
print(f"Merged PDF saved as: {output_path}")
- Imprime uma mensagem de sucesso confirmando a localização do PDF mesclado salvo.
Arquivos PDF de Entrada Usados no Código e o PDF de Saída Mesclado
- Arquivos PDF de Entrada: Link para Download
- PDF de Saída Mesclado: Link para Download
4. Dividindo um PDF Usando Python
Explicação do Código
O script Python acima divide um PDF em páginas separadas usando a biblioteca PyPDF. Ele primeiro garante que o diretório de saída exista, depois lê o arquivo PDF de entrada. O script percorre cada página, cria um novo objeto PdfWriter e salva cada página como um arquivo PDF individual. Os arquivos de saída são nomeados sequencialmente (por exemplo, page_1.pdf, page_2.pdf) e armazenados na pasta output-dir
. Por fim, ele imprime uma mensagem de confirmação para cada arquivo criado e notifica quando o processo é concluído.
PDF de Entrada e Arquivos de Saída Individuais
- Arquivo PDF de Entrada: Link para Download
- Arquivos de Saída Individuais: Link para Download
5. Adicionando uma Marca d’Água a um PDF Usando Python
Você pode adicionar uma marca d’água a um PDF usando a biblioteca PyPDF sobrepondo um PDF de marca d’água a um PDF existente. Certifique-se de que o PDF de marca d’água tenha apenas uma página para que ele seja aplicado corretamente a cada página do PDF principal.
Explicação do Código
O script Python acima lê um PDF de entrada, extrai um PDF de marca d’água de uma página, sobrepõe a marca d’água em cada página do PDF de entrada, e salva o PDF final com a marca d’água.
Desmembramento do Código
Aqui está uma breve explicação de cada parte
1. Importar Classes Necessárias
from pypdf import PdfReader, PdfWriter
PdfReader
é usado para ler PDFs existentes.PdfWriter
é usado para criar e escrever um novo PDF.
2. Definir Caminhos de Arquivo
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: O PDF original ao qual a marca d’água será adicionada.watermark_pdf
: Um PDF de uma página separado que serve como a marca d’água.output_pdf
: O arquivo de saída que conterá as páginas com a marca d’água.
3. Ler PDFs
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: Lê o PDF de entrada.watermark
: Lê o PDF da marca d’água.
4. Criar um Objeto Writer
writer = PdfWriter()
- Isso será usado para criar o PDF final com a marca d’água.
5. Extrair Página da Marca d’Água
watermark_page = watermark.pages[0]
- Assume-se que o PDF da marca d’água tenha apenas uma página, que é usada para sobrepor em todas as páginas.
6. Percorrer Páginas do PDF de Entrada & Mesclar Marca d’Água
for page in reader.pages:
# Mesclar a marca d'água com a página atual
page.merge_page(watermark_page)
# Adicionar a página mesclada ao writer
writer.add_page(page)
- Itera por cada página do
input_pdf
. merge_page(watermark_page)
sobrepõe a marca d’água sobre a página atual.- Adiciona a página modificada ao
writer
.
7. Salvar o PDF com Marca d’Água
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- Escreve as páginas modificadas em um novo arquivo PDF.
8. Imprimir Confirmação
print(f"Watermarked PDF saved as: {output_pdf}")
- Imprime o caminho do arquivo de saída para confirmação.
PDF de Entrada, PDF de Marca d’Água e PDF de Saída com Marca d’Água
- Arquivo PDF de Entrada: Link para Download
- Arquivo PDF de Marca d’Água: Link para Download
- Arquivo PDF de Saída com Marca d’Água: Link para Download
Captura de Tela
Conclusão
Neste guia, exploramos operações essenciais de PDF em Python, incluindo extração de texto, rotação de páginas, mesclagem, divisão e adição de marcas d’água. Com essas habilidades, você pode agora construir seu próprio gerenciador de PDF e automatizar várias tarefas de PDF de maneira eficiente.