File size: 1,435 Bytes
81ffa61
8e28519
 
 
 
 
01a8107
81ffa61
f9d952e
81ffa61
3da2d8d
 
 
f9d952e
01a8107
3da2d8d
 
8e28519
3da2d8d
 
 
8e28519
3da2d8d
 
 
 
 
 
8e28519
3da2d8d
 
 
8e28519
3da2d8d
 
8e28519
81ffa61
3da2d8d
6a7d286
 
3da2d8d
f9d952e
3da2d8d
 
 
6a7d286
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import gradio as gr
import fitz  # PyMuPDF
from docx import Document
from docx.shared import Inches
import os
import uuid
import traceback

def convert_pdf_to_word(pdf_bytes):
    try:
        # حفظ الملف المرفوع
        temp_pdf_path = f"{uuid.uuid4()}.pdf"
        with open(temp_pdf_path, "wb") as f:
            f.write(pdf_bytes)

        # فتح ملف PDF
        doc = fitz.open(temp_pdf_path)
        document = Document()

        for i in range(len(doc)):
            page = doc.load_page(i)
            pix = page.get_pixmap(dpi=150)
            img_path = f"page_{i}.png"
            pix.save(img_path)

            document.add_paragraph(f"📄 صفحة {i+1}")
            document.add_picture(img_path, width=Inches(6))
            os.remove(img_path)

        # حفظ الملف النهائي
        output_path = f"{uuid.uuid4()}.docx"
        document.save(output_path)

        os.remove(temp_pdf_path)
        return output_path

    except Exception as e:
        return f"❌ خطأ: \n{traceback.format_exc()}"

app = gr.Interface(
    fn=convert_pdf_to_word,
    inputs=gr.File(label="📤 ارفع ملف PDF", type="binary"),
    outputs=gr.File(label="📥 تحميل Word"),
    title="🔁 محول PDF إلى Word (بالصور)",
    description="حول صفحات PDF إلى صور وادمجها تلقائيًا داخل مستند Word. مناسب للعرض والطباعة."
)