george021219 commited on
Commit
6e142db
·
verified ·
1 Parent(s): ea35e86

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -0
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from docx import Document
3
+ import pandas as pd
4
+ from PIL import Image
5
+ import fitz # PyMuPDF
6
+
7
+ def convert_to_pdf(file):
8
+ pdf_document = fitz.open()
9
+
10
+ if file.name.endswith('.docx'):
11
+ doc = Document(file.name)
12
+ text = "\n".join([paragraph.text for paragraph in doc.paragraphs])
13
+ pdf_page = pdf_document.new_page()
14
+ pdf_page.insert_text((72, 72), text)
15
+ elif file.name.endswith('.xlsx'):
16
+ df = pd.read_excel(file.name, engine='openpyxl')
17
+ text = df.to_string(index=False)
18
+ pdf_page = pdf_document.new_page()
19
+ pdf_page.insert_text((72, 72), text)
20
+ elif file.name.endswith('.png') or file.name.endswith('.jpg') or file.name.endswith('.jpeg'):
21
+ img = Image.open(file.name)
22
+ img_byte_arr = img.tobytes()
23
+ pdf_page = pdf_document.new_page(width=img.width, height=img.height)
24
+ pdf_page.insert_image(fitz.Rect(0, 0, img.width, img.height), stream=img_byte_arr)
25
+ elif file.name.endswith('.pdf'):
26
+ existing_pdf = fitz.open(file.name)
27
+ for page in existing_pdf:
28
+ pdf_document.insert_pdf(existing_pdf, from_page=page.number, to_page=page.number)
29
+
30
+ return pdf_document
31
+
32
+ def merge_pdfs(files):
33
+ merged_pdf = fitz.open()
34
+ for file in files:
35
+ pdf_document = convert_to_pdf(file)
36
+ merged_pdf.insert_pdf(pdf_document)
37
+ output_path = "merged_output.pdf"
38
+ merged_pdf.save(output_path)
39
+ return output_path
40
+
41
+ def main(files):
42
+ output_path = merge_pdfs(files)
43
+ return output_path
44
+
45
+ iface = gr.Interface(
46
+ fn=main,
47
+ inputs=gr.inputs.File(file_count="multiple"),
48
+ outputs=gr.outputs.File(),
49
+ title="File Merger to PDF",
50
+ description="Upload Word, Excel, Image or PDF files to merge them into a single PDF."
51
+ )
52
+
53
+ iface.launch()