CodeGym /Cursos /Python SELF PT /Dividindo páginas de um documento PDF para salvar partes ...

Dividindo páginas de um documento PDF para salvar partes individuais

Python SELF PT
Nível 43, Lição 4
Disponível

1. Dividindo um documento PDF em páginas

Introdução à divisão de PDFs com o PyPDF2

O PyPDF2 fornece a classe PdfReader para abrir arquivos PDF e ler páginas, assim como a classe PdfWriter para gravar páginas em um novo documento PDF. Para dividir o documento em páginas separadas, utiliza-se add_page() no PdfWriter, para salvar as páginas desejadas em arquivos separados.

Salvando cada página do PDF como um documento separado

Este código divide o documento, criando um arquivo PDF separado para cada página do arquivo original.

Python

import PyPDF2

# Abrindo o arquivo PDF
with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    
    # Iterando por cada página
    for page_num in range(len(pdf_reader.pages)):
        pdf_writer = PyPDF2.PdfWriter()
        
        # Extraindo a página e adicionando ao novo PDF
        page = pdf_reader.pages[page_num]
        pdf_writer.add_page(page)
        
        # Salvando a página atual como um arquivo PDF separado
        output_filename = f"page_{page_num + 1}.pdf"
        with open(output_filename, "wb") as output_file:
            pdf_writer.write(output_file)

print("Cada página foi salva como um arquivo separado.")

Neste exemplo, cada página do documento original é salva em um arquivo separado page_1.pdf, page_2.pdf e assim por diante.

2. Extraindo um intervalo de páginas

Às vezes, você quer salvar não todas as páginas, mas um intervalo específico de páginas, como da 1 à 5. Para isso, basta especificar as páginas no loop.

Python

import PyPDF2

with open("sample.pdf", "rb") as pdf_file:
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    pdf_writer = PyPDF2.PdfWriter()
    
    # Definindo o intervalo de páginas, por exemplo, páginas 1 a 5
    start_page = 1
    end_page = 5
    
    for page_num in range(start_page - 1, end_page):  # Numeração de páginas começa do 0
        page = pdf_reader.pages[page_num]
        pdf_writer.add_page(page)

    # Salvando o intervalo de páginas como um novo PDF
    with open("pages_1_to_5.pdf", "wb") as output_file:
        pdf_writer.write(output_file)

print("O intervalo de páginas foi salvo com sucesso.")

Este código extrai as páginas da 1 à 5 e as salva no arquivo pages_1_to_5.pdf.

3. Salvando múltiplos intervalos

Se precisar extrair vários intervalos de páginas e salvá-los em arquivos separados, você pode criar uma função que aceite o início e o fim do intervalo.

Python

import PyPDF2

def save_page_range(input_pdf, output_pdf, start_page, end_page):
    with open(input_pdf, "rb") as pdf_file:
        pdf_reader = PyPDF2.PdfReader(pdf_file)
        pdf_writer = PyPDF2.PdfWriter()
        
        for page_num in range(start_page - 1, end_page):
            page = pdf_reader.pages[page_num]
            pdf_writer.add_page(page)

        with open(output_pdf, "wb") as output_file:
            pdf_writer.write(output_file)
    
    print(f"Páginas {start_page}–{end_page} salvas em {output_pdf}")

# Usando a função para extrair diferentes intervalos
save_page_range("sample.pdf", "section_1.pdf", 1, 3)
save_page_range("sample.pdf", "section_2.pdf", 4, 6)

Este código cria dois arquivos contendo as páginas de 1 a 3 e de 4 a 6, que são salvos como section_1.pdf e section_2.pdf, respectivamente.

4. Processando PDFs em massa

Automatizando a divisão de PDFs para todas as páginas em uma pasta

Se for necessário dividir cada página de todos os PDFs em uma pasta especificada, você pode criar um script que automaticamente processe cada arquivo.

Python

import PyPDF2
import os

# Caminho da pasta com os arquivos PDF
folder_path = "pdf_folder"

# Dividindo automaticamente todos os arquivos PDF na pasta
for filename in os.listdir(folder_path):
    if filename.endswith(".pdf"):
        file_path = os.path.join(folder_path, filename)
        with open(file_path, "rb") as pdf_file:
            pdf_reader = PyPDF2.PdfReader(pdf_file)
            
            # Dividindo o arquivo em páginas individuais
            for page_num in range(len(pdf_reader.pages)):
                pdf_writer = PyPDF2.PdfWriter()
                page = pdf_reader.pages[page_num]
                pdf_writer.add_page(page)
                
                # Criando o nome do arquivo de saída
                output_filename = f"{filename[:-4]}_page_{page_num + 1}.pdf"
                output_path = os.path.join(folder_path, output_filename)
                
                # Salvando a página
                with open(output_path, "wb") as output_file:
                    pdf_writer.write(output_file)

print("Todas as páginas de cada arquivo PDF na pasta foram salvas com sucesso.")

Este script automaticamente processa cada arquivo PDF na pasta pdf_folder e salva cada página como um PDF separado com um nome como <nome_do_arquivo>_page_<número>.pdf.

5. Quando dividir arquivos PDF?

Como diz um grande desenvolvedor, que depois de horas de codificação, tem a mesma dúvida que nós: "Por quê?". Dividir documentos PDF pode ser necessário em várias situações:

  • Destacar páginas importantes: Compartilhe apenas as páginas necessárias, sem enviar "Guerra e Paz" inteira para os colegas.
  • Criar compilações: Salve capítulos importantes de documentos diferentes em um único arquivo para estudos ou trabalho.
  • Arquivamento: Armazene arquivos de dados importantes página por página, para não perder informações valiosas em meio a páginas desnecessárias.

É aí que nosso herói PyPDF2 entra em cena para facilitar sua vida!

6. Dificuldades comuns e como evitá-las

Ao trabalhar com documentos PDF, você pode enfrentar alguns problemas. Por exemplo, a numeração de páginas no PyPDF2 começa em zero, então não esqueça de considerar isso ao especificar as páginas necessárias. Afinal, não há nada pior do que perder tempo extraindo páginas erradas!

Além disso, ao trabalhar com arquivos abertos e fechados, certifique-se de que todas as chamadas close() sejam feitas corretamente. Um arquivo não fechado pode se tornar um pesadelo, especialmente se for um manual técnico.

Aplicações no mundo real

Usar este método é útil não apenas para processar documentos pessoais. Por exemplo, se você trabalha em um escritório de advocacia e precisa preparar rapidamente seções específicas de um caso volumoso para o tribunal, dividir PDF em partes pode economizar tempo e esforço significativamente.

Técnicas como essas também podem ser usadas para preparar materiais educacionais, destacar seções importantes de relatórios técnicos e muito mais. A verdadeira magia está em quão fácil é automatizar essas tarefas repetitivas!

1
Tarefa
Python SELF PT, nível 43, lição 4
Bloqueado
Separação de uma única página de um documento PDF
Separação de uma única página de um documento PDF
2
Tarefa
Python SELF PT, nível 43, lição 4
Bloqueado
Extração de intervalo de páginas
Extração de intervalo de páginas
3
Tarefa
Python SELF PT, nível 43, lição 4
Bloqueado
Salvando vários intervalos de páginas
Salvando vários intervalos de páginas
4
Tarefa
Python SELF PT, nível 43, lição 4
Bloqueado
Processamento automático de uma pasta com documentos PDF
Processamento automático de uma pasta com documentos PDF
1
Pesquisa/teste
Lendo arquivos PDF com o PyPDF2, nível 43, lição 4
Indisponível
Lendo arquivos PDF com o PyPDF2
Lendo arquivos PDF com o PyPDF2
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION