Descrição

Essa função permite dividir um arquivo PDF que contém vários holerites em arquivos individuais. Os PDFs resultantes são nomeados automaticamente com base no nome do funcionário extraído do texto. É útil para empresas que desejam organizar os holerites de seus colaboradores de forma automatizada e eficiente.


Funcionalidade Principal

  1. Lê um arquivo PDF com múltiplos holerites.
  2. Identifica o nome do funcionário no texto.
  3. Cria um novo arquivo PDF para cada holerite, nomeado com o nome do funcionário.
  4. Salva os arquivos gerados em uma pasta de destino.

Requisitos


Código da Função

python
Copy code
import os
import PyPDF2

def extract_employee_name_from_text(text):
    """
    Extrai o nome do funcionário do texto do holerite.
    Este exemplo supõe que o nome do funcionário está imediatamente antes da frase 'Nome do Funcionário'.
    """
    lines = text.split('\\n')
    for line in lines:
        if 'Nome do Funcionário' in line:
            parts = line.split('Nome do Funcionário')
            if len(parts) > 0:
                return parts[0].strip()
    return None

def split_payslips(pdf_path, output_folder):
    """
    Divide um arquivo PDF contendo vários holerites em arquivos individuais, nomeados com o nome do funcionário.

    Args:
        pdf_path (str): Caminho para o arquivo PDF contendo os holerites.
        output_folder (str): Diretório onde os arquivos PDF individuais serão salvos.
    """
    if not os.path.exists(pdf_path):
        print(f"Arquivo PDF de entrada não encontrado: {pdf_path}")
        return

    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    try:
        with open(pdf_path, 'rb') as file:
            reader = PyPDF2.PdfReader(file)
            print(f"Número de páginas no PDF: {len(reader.pages)}")

            for page_num in range(len(reader.pages)):
                page = reader.pages[page_num]
                text = page.extract_text()
                employee_name = extract_employee_name_from_text(text)

                if employee_name:
                    output_pdf_path = os.path.join(output_folder, f"{employee_name}.pdf")
                    with open(output_pdf_path, 'wb') as output_pdf:
                        writer = PyPDF2.PdfWriter()
                        writer.add_page(page)
                        writer.write(output_pdf)
                    print(f'Holerite de {employee_name} salvo em {output_pdf_path}')
                else:
                    print(f'Nome do funcionário não encontrado na página {page_num + 1}')
    except Exception as e:
        print(f"Ocorreu um erro ao processar o PDF: {e}")

# Exemplo de uso:
input_pdf_path = r'C:\\Users\\Usuario\\01. Desenvolvendo Programação\\holerites.pdf'
output_folder = r'C:\\Users\\Usuario\\01. Desenvolvendo Programação\\holerites_individuais'
split_payslips(input_pdf_path, output_folder)


Exemplo de Uso