# app.py import gradio as gr from model import ( images_to_pdf, merge_pdfs, compress_pdf, save_feedback, show_feedback ) css = """ .title {color:green; font-size:32px; font-weight:bold; text-align:center; margin-bottom:20px;} .download-btn {background-color:green !important; color:white !important;} .reset-btn {background-color:red !important; color:white !important;} """ with gr.Blocks(css=css, title="Its Nadish - Image to PDF") as demo: gr.HTML('
Its Nadish
') gr.Markdown("### Powerful Image to PDF | Merge | Compress Tool") with gr.Tabs(): # Tab 1: Images to PDF with gr.TabItem("🖼️ Images to PDF"): with gr.Row(): with gr.Column(): img_input = gr.File( file_types=["image"], file_count="multiple", label="Upload Images (JPG, PNG, etc.)" ) convert_btn = gr.Button("Convert to PDF", variant="primary") with gr.Column(): p_size = gr.Dropdown(["A4", "Letter", "Legal", "Original"], value="A4", label="Page Size") p_orient = gr.Radio(["Portrait", "Landscape"], value="Portrait", label="Orientation") p_qual = gr.Dropdown(["Low", "Medium", "High", "Maximum"], value="High", label="Quality") p_comp = gr.Checkbox(label="Enable Compression", value=True) img_download = gr.DownloadButton("Download PDF", elem_classes="download-btn") img_msg = gr.Markdown() # Tab 2: Merge PDFs with gr.TabItem("📑 Merge PDFs"): merge_input = gr.File(file_types=[".pdf"], file_count="multiple", label="Upload PDF Files") merge_btn = gr.Button("Merge Files", variant="primary") merge_download = gr.DownloadButton("Download Merged PDF", elem_classes="download-btn") comb_msg = gr.Markdown() # Tab 3: Compress PDF with gr.TabItem("📉 Compress PDF"): comp_file = gr.File(file_types=[".pdf"], label="Upload PDF") comp_lvl = gr.Dropdown( list(compression_map.keys()), # compression_map model.py se aa raha hai value="Balanced (Good Quality + Small Size)", label="Compression Level" ) comp_btn = gr.Button("Compress Now", variant="primary") comp_download = gr.DownloadButton("Download Compressed PDF") comp_msg = gr.Markdown() comp_table = gr.Markdown() # Feedback Section with gr.Accordion("⭐ Give Feedback to Nadish", open=False): f_name = gr.Textbox(label="Name or Email (Optional)") f_txt = gr.Textbox(label="Your Feedback", lines=3) f_rate = gr.Radio(["⭐", "⭐⭐", "⭐⭐⭐", "⭐⭐⭐⭐", "⭐⭐⭐⭐⭐"], label="Rating") f_btn = gr.Button("Submit Feedback") f_msg = gr.Markdown() with gr.Accordion("📋 View All Feedback", open=False): view_btn = gr.Button("Show Feedback") view_msg = gr.Markdown() reset_btn = gr.Button("Reset Everything", variant="stop", elem_classes="reset-btn") # Button Actions convert_btn.click( images_to_pdf, inputs=[img_input, p_size, p_orient, p_qual, p_comp], outputs=[img_download, img_msg] ) merge_btn.click( merge_pdfs, inputs=[merge_input], outputs=[merge_download, comb_msg] ) comp_btn.click( compress_pdf, inputs=[comp_file, comp_lvl], outputs=[comp_download, comp_msg, comp_table] ) f_btn.click( save_feedback, inputs=[f_name, f_txt, f_rate], outputs=f_msg ) view_btn.click(show_feedback, outputs=view_msg) # Reset function def clear_all(): return [None] * 10 + [""] reset_btn.click( clear_all, outputs=[img_input, merge_input, comp_file, img_download, merge_download, img_msg, comb_msg, comp_msg, comp_table, f_msg] ) # app.py ke sabse last mein yeh rakho (purana wala replace kar do) if __name__ == "__main__": demo.launch( #server_name="0.0.0.0", # ← Yeh line **hatado** ya comment out kar do # server_port=7860, # Yeh bhi hatado share=False, ssr_mode=False # Agar UI loading slow ya glitchy lage to yeh rakho )=7860)