Spaces:
Sleeping
Sleeping
import gradio as gr | |
import fitz | |
import os | |
def append_suffix_to_filename(filepath, suffix): | |
directory, filename = os.path.split(filepath) | |
filename_without_extension, extension = os.path.splitext(filename) | |
return os.path.join(directory, filename_without_extension + suffix + extension) | |
def remove_password(input_files, password): | |
output_files = [] | |
for file in input_files: | |
output_path = append_suffix_to_filename(file.name, '_open') | |
try: | |
doc = fitz.open(file.name) | |
if doc.is_encrypted: | |
doc.authenticate(password) | |
doc.save(output_path) | |
print(output_path) | |
doc.close() | |
output_files.append(output_path) | |
except Exception as e: | |
print(e) | |
pass | |
return output_files | |
def pdf_password_remover(files, password): | |
output_files = [] | |
for file in files: | |
output_files.extend(remove_password([file], password)) | |
return output_files | |
input_components = [ | |
gr.Files(label="Upload PDF(s)"), | |
gr.Textbox(label="Password", type="text") | |
] | |
output_component = [gr.Files(label="Download Unlocked PDF(s)")] | |
gr.Interface( | |
fn=pdf_password_remover, | |
inputs=input_components, | |
outputs=output_component, | |
title="PDF Password Remover", | |
description="Upload password-protected PDF files and input a single password to unlock them." | |
).launch(debug=True) | |