Skip to content

Fill PDF from Excel sheet #245

@pablo1strange

Description

@pablo1strange

import openpyxl
import pdfrw
from PyPDF2.generic import TextStringObject, NameObject

def read_excel_data(excel_file):
try:
workbook = openpyxl.load_workbook(excel_file)
sheet = workbook.active
data = []

    # Leer los datos del archivo Excel
    for row in sheet.iter_rows(min_row=2, values_only=True):
        row_data = {}
        for idx, value in enumerate(row, start=1):
            header = sheet.cell(row=1, column=idx).value
            row_data[header] = value
        data.append(row_data)
    
    return data
except Exception as e:
    print("Error al leer los datos del archivo Excel:", e)
    return []

def fill_pdf_form(pdf_template, excel_file):
try:
# Leer los datos del archivo Excel
data = read_excel_data(excel_file)

    # Abrir la plantilla del PDF
    template_pdf = pdfrw.PdfReader(pdf_template)

    # Iterar sobre las páginas del PDF
    for page in template_pdf.pages:
        annotations = page.get('/Annots')
        if annotations:
            for annotation in annotations:
                if annotation.get('/Subtype') == '/Widget':
                    field_name = annotation.get('/T')
                    if field_name:
                        for row_data in data:
                            if field_name in row_data:
                                annotation.update({
                                    NameObject('/V'): TextStringObject(str(row_data[field_name]))
                                })
                                break

    # Escribir el PDF rellenado en un archivo de salida
    output_pdf = 'pdfrellenado.pdf'
    writer = pdfrw.PdfWriter()
    writer.write(output_pdf, template_pdf)

    print("Formulario rellenado con éxito.")
except Exception as e:
    print("Se ha producido un error:", e)

fill_pdf_form('swap.pdf', 'datos.xlsx')

PLS HELP ME ,WHATS WRONG?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions