1. Juntando PDFs com PyPDF2
Por que juntar arquivos PDF
Primeiro, vamos entender por que pode ser necessário juntar arquivos PDF. Afinal, como dizem, "Um PDF é melhor do que dez!". No trabalho, você pode ter relatórios, resultados de pesquisa, documentação técnica ou apresentações que são fornecidos como arquivos separados. Ficar alternando entre eles não é só inconveniente, mas também arriscado — você pode acabar perdendo algo. Juntando todos os arquivos em um único documento, você facilita o trabalho com essas informações e cria uma abordagem mais organizada para análise e compartilhamento.
Além disso, juntar arquivos PDF é útil para arquivamento posterior, criação de um relatório final unificado ou até para juntar várias versões do documento e acompanhar alterações. Resumindo, as possibilidades são muitas!
O básico do uso do PyPDF2 para unir PDFs
Para começar, vamos nos familiarizar com os conceitos básicos do PyPDF2. Vamos criar um script que junta vários PDFs em um só. Claro, o código será acompanhado de comentários para você entender o que está acontecendo em cada etapa.
import PyPDF2
# Criamos um objeto PdfMerger da biblioteca PyPDF2
pdf_merger = PyPDF2.PdfMerger()
# Lista dos nossos PDFs que queremos unir
pdf_files = ['document1.pdf', 'document2.pdf', 'document3.pdf']
# Loop para adicionar cada arquivo ao objeto PdfMerger
for file in pdf_files:
pdf_merger.append(file)
# Salvamos o resultado em um novo arquivo PDF
output_filename = 'merged_document.pdf'
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
# Fechamos o objeto PdfMerger para liberar recursos
pdf_merger.close()
print(f"PDF combinado criado: {output_filename}")
Ordem e estrutura do documento combinado
Agora que aprendemos a juntar documentos PDF, é importante
pensar na ordem das páginas. Lembre-se de que o PyPDF2 adiciona
as páginas na mesma ordem em que você passou os arquivos para o
método .append()
. Assim, a ordem na lista
pdf_files
influencia a ordem final no documento.
2. Juntando páginas individuais
Se você não quer apenas juntar documentos, mas criar um documento
final a partir de partes deles, então precisa usar a classe
PdfWriter
no lugar de PdfMerger
.
Veja o exemplo:
import PyPDF2
# Lista dos arquivos PDF que precisamos unir
pdf_files = ["file1.pdf", "file2.pdf", "file3.pdf"]
# Criando objeto PdfWriter para escrever o PDF final
pdf_writer = PyPDF2.PdfWriter()
# Iteramos sobre cada arquivo PDF
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
# Adicionamos cada página ao PdfWriter
for page_num in range(len(pdf_reader.pages)):
# Aqui você pode pular páginas que não quer incluir
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Salvando o PDF combinado
with open("merged_document.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Como esse código funciona?
-
Criamos a lista de arquivos: A lista
pdf_files
contém os caminhos dos PDFs que queremos unir. -
Inicializamos o PdfWriter:
O
pdf_writer
é usado para criar o novo arquivo PDF. - Iteramos sobre cada arquivo: Cada PDF é aberto no modo de leitura.
-
Adicionamos páginas: Todas as páginas do arquivo são
adicionadas ao objeto
pdf_writer
com o métodoadd_page()
. -
Salvamos o resultado: Após adicionar todas as páginas,
o novo PDF é salvo em
merged_document.pdf
.
3. Estilizando o novo documento
Adicionando marcadores e índice
O que fazer se o documento combinado ficou muito grande e difícil de navegar? Nessa situação, marcadores são a solução! O PyPDF2 permite adicionar marcadores básicos para facilitar a navegação no documento. Vamos adicionar marcadores para cada documento que unirmos.
pdf_merger = PyPDF2.PdfMerger()
# Índice de página para os marcadores
page_offset = 0
for file in pdf_files:
# Lemos o documento atual
pdf_reader = PyPDF2.PdfReader(file)
# Adicionamos o documento ao PdfMerger
pdf_merger.append(file)
# Adicionamos um marcador com o nome do arquivo
pdf_merger.add_bookmark(file, page_offset)
# Atualizamos o deslocamento das páginas
page_offset += len(pdf_reader.pages)
with open(output_filename, 'wb') as output_file:
pdf_merger.write(output_file)
pdf_merger.close()
Este pequeno truque vai salvar sua sanidade e evitar que você se perca no mar de documentos PDF.
Atualizando os metadados do arquivo combinado
Depois de juntar os documentos, você pode adicionar ou alterar os metadados do arquivo, como autor, título e palavras-chave.
import PyPDF2
pdf_files = ["file1.pdf", "file2.pdf"]
pdf_writer = PyPDF2.PdfWriter()
for pdf_file in pdf_files:
with open(pdf_file, "rb") as file:
pdf_reader = PyPDF2.PdfReader(file)
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# Adicionando metadados
pdf_writer.add_metadata({
"/Title": "Documento combinado",
"/Author": "João Silva",
"/Subject": "Relatório de vendas"
})
# Salvando o arquivo combinado
with open("merged_with_metadata.pdf", "wb") as output_file:
pdf_writer.write(output_file)
Esse código adiciona metadados que ajudam a identificar e organizar o documento.
GO TO FULL VERSION