L’avvio del bilanciatore applicativo documentale in simulazione
Il bilanciatore viene avviato dal seguente codice. In questo e nell’intero flusso è simulata l’apposizione della firma e il recupero dei documenti.
import Bilanciatore
import Document
import base64
import PyPDF2
import os
def read_key_value_file(file_path):
key_values = {}
with open(file_path, 'r') as file:
lines = file.read().split('|')
for line in lines:
key, value = line.strip().split('=')
key_values[key] = value
return key_values
def convert_pdf_to_base64(pdf_path):
with open(pdf_path, "rb") as pdf_file:
pdf_content = pdf_file.read()
return base64.b64encode(pdf_content).decode()
current_directory = os.getcwd()
for i in range(1, 200):
text_file_path = '../ProgettoBilanciatore/TestFiles/chiavi_1.txt' # Percorso al file di testo con le chiavi
pdf_file_path = '../ProgettoBilanciatore/TestFiles/certificato_1.pdf' # Percorso al file PDF
# Lettura del file di testo e conversione del PDF
pdf_base64 = convert_pdf_to_base64(pdf_file_path)
key_values = read_key_value_file(text_file_path)
print('dopo caricamento files....')
# istanza classe bilanciatore
bilanciatore = Bilanciatore.BilanciatoreApplicativo()
# istanza classe Document
doc = Document.Document(key_values,pdf_base64)
doc.setDocumentID()
firme = [('Signer1', 'Pin1'), ('Signer2', 'Pin2')] # Lista di firme
bilanciatore.process_document(doc, firme)
bilanciatore.close()
Il codice è abbastanza semplice, in un primo momento vengono definite due funzioni read_key_value_file e convert_pdf_to_base64. La prima per leggere un file di chiavi contenente dei metadati attribuiti al documento pdf caricato. La seconda converte lo stream del file pdf in base64 (v. articolo che spiega il base64).
Successivamente, nella riga ventuno, alla variabile current_directory viene attribuito il valore della directory corrente attraverso la classe os di python e il metodo getcwd().
Per simulare il passaggio di n documenti caricando lo stesso documento in formato pdf ho utilizzato un ciclo for, all’interno del quale ho sviluppato il codice che esegue il bilanciatore applicativo documentale.
All’interno del ciclo for vengono inizialmente valorizzare due variabili text_file_path e pdf_file_path. Alla prima si attribuisce il percorso del file di chiavi e alla seconda il percorso del documento pdf.
Il codice continua con la valorizzazione di altre due variabili pdf_base64 e key_values. Alla prima viene attribuita la conversione del documento pdf da caricare in base64 attraverso l’utilizzo della funzione convert_pdf_to_base64. Alla seconda attraverso la funzione read_key_value_file vengono caricate le chiavi e il rispettivo valore.
Poi, si procede ad istanziare la classe del BilanciatoreApplicativo nell’istanza della variabile bilanciatore. Si continua col istanziare la classe Document passandogli le due variabili key_values e pdf_base64. Nella riga successiva si procede con chiamare il metodo setDocumentID che di fatto attribuisce un ID univoco al documento caricato.
Nelle riga trentasei, alla lista firme si attribuiscono le credenziali fornite dal provider (fiduciario esterno) che applica una o più FEQ.
Nella riga trentasette si chiama il metodo process_document dell’istanza bilanciatore è fondamentale per eseguire il bilanciatore applicativo. Di seguito è descritto questo metodo in modo dettagliato con un diagramma delle attività.
Il codice si chiude chiamando il metodo close dell’istanza bilanciatore che chiude l’accesso al database.