Untitled
unknown
python
a year ago
1.9 kB
5
Indexable
import os import fitz import PyPDF2 from concurrent.futures import ThreadPoolExecutor def find_pdfs(directory): """ Recursively find all PDF files in the given directory. """ pdf_files = [] for root, _, files in os.walk(directory): for file in files: if file.lower().endswith('.pdf'): pdf_files.append(os.path.join(root, file)) return pdf_files def check_pdf_signature(pdf_path): """ Check if the given PDF file contains a valid signature. """ try: doc = fitz.open(pdf_path) info = doc.metadata doc.close() reader = PyPDF2.PdfReader(pdf_path) if '/AcroForm' in reader.trailer['/Root']: acro_form = reader.trailer['/Root']['/AcroForm'] if '/SigFlags' in acro_form: # print(f"PDF {pdf_path} OK.") return None else: print(f"PDF {pdf_path} does not contain a signature.") return pdf_path else: print(f"PDF {pdf_path} does not contain a signature.") return pdf_path except Exception as e: print(f"Failed to open {pdf_path}: {e}") return pdf_path def main(directory): pdf_files = find_pdfs(directory) print(f"Number of PDF files found: {len(pdf_files)}") with open("result.txt", "w") as result_file, ThreadPoolExecutor() as executor: futures = [executor.submit(check_pdf_signature, pdf_file) for pdf_file in pdf_files] for future in futures: result = future.result() if result: result_file.write(result + "\n") if __name__ == "__main__": directory = "C:/Users/Utente/Dropbox/DIAGNOSTEAM/RAPPORTS/signed_documents/" # directory = input("Enter the directory to search for PDF files: ") main(directory)
Editor is loading...
Leave a Comment