nrotem's picture
first commit
ca8d0bb verified
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)