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.
os, PyPDF2python
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)