import gradio as gr from PIL import Image import os from typing import List from pdfitdown.pdfconversion import Converter from pdf2image import convert_from_path converter = Converter(reader="docling") def convert_readme_to_pdf(markdown_file) -> str: output_path = markdown_file.name.replace('.md', '.pdf') converter.convert(markdown_file.name, output_path) return output_path def convert_image_to_pdf(image_file) -> str: # Open image and convert to PDF image = Image.open(image_file.name) output_path = image_file.name.replace(os.path.splitext(image_file.name)[1], '.pdf') converter.convert(image_file.name, output_path) return output_path # Create individual interfaces readme_to_pdf = gr.Interface( fn=convert_readme_to_pdf, inputs=gr.File(label="Upload README/Markdown file", file_types=[".md"]), outputs=gr.File(label="Converted PDF"), title="README to PDF Converter", description="Convert your markdown files to PDF format" ) image_to_pdf = gr.Interface( fn=convert_image_to_pdf, inputs=gr.File(label="Upload Image", file_types=["image"]), outputs=gr.File(label="Converted PDF"), title="Image to PDF Converter", description="Convert your images to PDF format" ) # Create tabbed interface demo = gr.TabbedInterface( [readme_to_pdf, image_to_pdf], ["README to PDF", "Image to PDF"], title="File Conversion Tools" ) if __name__ == "__main__": demo.launch(server_name="0.0.0.0", server_port=7860, debug=True)