Spaces:
Building
Building
| # 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('<div class="title">Its Nadish</div>') | |
| 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) |