pdfitdown / app.py
as-cle-bert's picture
Create app.py
25dac45 verified
from pdfitdown.pdfconversion import convert_to_pdf, convert_markdown_to_pdf
import warnings
from typing import List
import gradio as gr
class FileNotConvertedWarning(Warning):
"""The file was not in one of the specified formats for conversion to PDF,thus it was not converted"""
def to_pdf(files: List[str]) -> List[str]:
"""
Converts various file formats to PDF.
Args:
files: List of file paths to convert. Supports .docx, .pdf, .html, .pptx,
.csv, .xml, and .md files.
Returns:
List of paths to converted PDF files. For files already in PDF format,
returns original path.
Raises:
FileNotConvertedWarning: When file format is not supported.
"""
pdfs = []
for f in files:
if f.endswith(".docx"):
newfile = f.replace(".docx", ".pdf")
file_to_add = convert_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
elif f.endswith(".pdf"):
pdfs.append(f)
elif f.endswith(".html"):
newfile = f.replace(".html", ".pdf")
file_to_add = convert_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
elif f.endswith(".pptx"):
newfile = f.replace(".pptx", ".pdf")
file_to_add = convert_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
elif f.endswith(".csv"):
newfile = f.replace(".csv", ".pdf")
file_to_add = convert_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
elif f.endswith(".xml"):
newfile = f.replace(".xml", ".pdf")
file_to_add = convert_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
elif f.endswith(".md"):
newfile = f.replace(".md", ".pdf")
file_to_add = convert_markdown_to_pdf(f, newfile, newfile.split(".")[0])
pdfs.append(file_to_add)
else:
warnings.warn(f"File {f} was not converted to PDF because its file format is not included in those that can be converted", FileNotConvertedWarning)
continue
return pdfs
def convert(file: str) -> str:
files = [file]
pdfs = to_pdf(files)
return pdfs[0]
iface = gr.Interface(
fn=convert,
inputs=gr.File(label="Upload your file"),
outputs=gr.File(label="Converted PDF"),
title="File to PDF Converter",
description="Upload a file in .docx, .pdf, .html, .pptx, .csv, .xml, or .md format, and get it converted to PDF."
)
iface.launch()