Ú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.pagesretorna 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.
"-" * 50imprime 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.pdfe salva o arquivo modificado comorotated_output.pdf.
3. Ler o PDF e Criar um Objeto Writer
reader = PdfReader(input_pdf)
writer = PdfWriter()
readercarrega 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.pdfem 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,
PdfReaderlê 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.