import pdfplumber import sys, os import sqlite3 def recup_schema_tableau(Identifiant,doc): # retourne les valeurs à extraite par ligne et pour toutes les pages du fichier sql="SELECT Code,Ligne1,Ligne2,Ligne3,Ligne4,Ligne5,Ligne6 FROM Fournisseur_detail_facture WHERE Code='"+ Identifiant+"'" curs2.execute(sql) #retourne les zones à extraire de la base où est stocké le paramétrage des modèles-factures for row in curs2: # récupère les lignes verticales pour le détail de la facture for i in range(1,6): if row[i]!=0 and row[i]!='': vertical_lines.append(row[i]) sql2="SELECT Code_societe,Code,Designation,QTE,PU_HT,MontantHT,TVA FROM Schema_recup_position_zones_detail WHERE Code_societe='"+ Identifiant+"'" Position_Zones_detail=curs2.execute(sql2) #la position des zones de détail for i in range(len(pdf.doc)): # Récupére par page le détail de la facture page=pdf.doc[i] table=page.extract_table( table_settings={ "vertical_strategy": "explicit", "explicit_vertical_lines": vertical_lines, "horizontal_strategy": "text", "intersection_x_tolerance": 10} ) for row in table: # il faut prendre la position du taux des zones qui démarre à 1 for j in range(0,Position_Zones_detail): if row[Position_Zones_detail[3]-1]!='' and row[Position_Zones_detail[4]-1]!='': # si quantite et Prix unitaire non vide alors Code=row[Position_Zones_detail[2]-1] Designation=row[Position_Zones_detail[3]-1] QTE=row[Position_Zones_detail[4]-1] PU_HT=row[Position_Zones_detail[5]-1] MontantHT=row[Position_Zones_detail[6]-1] TVA=row[Position_Zones_detail[7]-1] Zones_Tableau_extraire['Code']=row[Position_Zones_detail[2]-1] Zones_Tableau_extraire['Designation']=row[Position_Zones_detail[3]-1] Zones_Tableau_extraire['QTE']=row[Position_Zones_detail[4]-1] Zones_Tableau_extraire['PU_HT']=row[Position_Zones_detail[5]-1] Zones_Tableau_extraire['MontantHT']=row[Position_Zones_detail[6]-1] Zones_Tableau_extraire['TVA']=row[Position_Zones_detail[7]-1] sql="INSERT INTO Detail_facture(Code_fournisseur,Code_client,Num_facture,Date_facture,Code,Designation,QTE,PU_Net,Montant_HT,Code_TVA)\ VALUES(?,?,?,?,?,?,?,?,?)" value=(Identifiant,Zones_extraire['Identifiant_client'],Zones_extraire['Num_facture'],Zones_extraire['Date_facture'],\ Zones_Tableau_extraire['Code'],Zones_Tableau_extraire['Designation'],Zones_Tableau_extraire['QTE'],Zones_Tableau_extraire['PU_Net']\ Zones_Tableau_extraire['MontantHT'],Zones_Tableau_extraire['TVA']) curs1.execute(sql1,value) conn.commit()