Como Unificar Vários Arquivos PDF em Um Só com Python (PyPDF)
Mesclar múltiplos relatórios, boletos ou documentos PDF em um único arquivo consolidado é uma tarefa frequente na automação de rotinas de TI. Com a biblioteca pypdf, é possível iterar sobre uma lista de arquivos e unificá-los de forma eficiente sem carregar o conteúdo inteiro na memória de uma só vez.
Python
from pypdf import PdfMerger
def mesclar_pdfs(lista_arquivos: list[str], caminho_saida: str) -> None:
"""
Combina uma lista de arquivos PDF em um unico arquivo consolidado.
"""
merger = PdfMerger()
try:
# Adiciona cada arquivo da lista ao objeto de fusao
for pdf in lista_arquivos:
merger.append(pdf)
# Escreve o documento final mesclado no disco
merger.write(caminho_saida)
print(f"[SUCESSO] PDF final gerado em: {caminho_saida}")
except FileNotFoundError as e:
print(f"[ERRO] Arquivo nao encontrado: {e}")
finally:
# Garante a liberacao de ponteiros de arquivos abertos
merger.close()
# Exemplo de uso pratico
if __name__ == "__main__":
arquivos_entrada = ["capa.pdf", "relatorio_parte1.pdf", "anexo.pdf"]
arquivo_resultado = "documento_completo.pdf"
mesclar_pdfs(arquivos_entrada, arquivo_resultado)
Pontos-chave
- Instalação e Migração: Utilize
pip install pypdf. A biblioteca antigaPyPDF2foi descontinuada e incorporada de volta à marca oficialpypdf(versões 3.x e superiores). - Método
append(): Insere todo o conteúdo do arquivo fornecido ao final da fila de páginas. Se precisar mesclar trechos específicos ou definir uma posição intermediária, utilize o métodomerger.merge(position, pdf_path). - Gerenciamento de Recursos: Sempre invoque o método
merger.close()após o salvamento para evitar o bloqueio de Handles de arquivo no sistema operacional (ou utilize o contexto comwith PdfMerger() as merger:). - Tratamento de Criptografia: Caso algum arquivo PDF esteja protegido por senha, o método
merger.append()lançará uma exceçãoFileNotDecryptedError. É necessário descriptografar o arquivo viaPdfReader.decrypt()antes da união.
