Untitled
unknown
python
a year ago
1.9 kB
12
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