برمجةحماية الدفعالتفاصيل
- التعديلات ضمن الباقة مجانية.
- إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.
يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

مثال على النتيجة
دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد
طريقة التشغيل
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)
إعدادات لا كود
أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:
[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة
جزء من الكود
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.
العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.
العميل وجميع التفاصيل افتراضية.
عن هذه الخدمة
عقود ممسوحة ضوئيًا وصلت ملفًا لكل صفحة، أو كشف حساب من 300 صفحة يجب إرساله عميلًا عميلًا، أو مجموعة مستندات يجب إرسالها كملف PDF واحد: ينجز سكربت Python هذا مثل هذه المهام في ثوانٍ بدلًا من النقر في محرر. يدمج الملفات بالترتيب الذي تحدده (حسب الاسم أو التاريخ أو من قائمة)، ويقسم ملف PDF إلى صفحات مفردة أو نطاقات ثابتة أو أجزاء تبدأ عند كل إشارة مرجعية، وفي الباقة المميزة يمكنه القطع حيث تحتوي الصفحة على كلمة تحددها، مثل Invoice No. تحتفظ الصفحات بجودتها لأنها تُنسخ ولا يُعاد طباعتها. أرسل إلينا المهمة وملفًا أو اثنين نموذجيين لا يحتويان على أي شيء خاص. تشغّل السكربت بنفسك على جهازك. لا يعدّل النصوص ولا يقرأ الصور الممسوحة ضوئيًا.
ما المشمول
- ما الذي تحصل عليهأرشيف ZIP يضم سكربت Python وملف README بتعليمات خطوة بخطوة، ومن الباقة القياسية ملف إعدادات بالترتيب والنطاقات والأسماء؛ ويُعرض الكود أيضًا في صفحة الطلب.
- دمج بترتيبكحسب الاسم أو التاريخ أو قائمة تقدمها
- تقسيم على طريقتكصفحات مفردة أو نطاقات أو إشارات مرجعية
- بلا فقد في الجودةتُنسخ الصفحات كما هي
- أسماء ملفات واضحةأرقام أو نطاقات صفحات أو أسماء من قائمتك
- كود مقروءمع تعليقات، ليسهل تغيير أي قاعدة لاحقًا
كيف يعمل
- 1المهمةتصف المهمة وترسل ملف PDF نموذجيًا أو اثنين
- 2الكودنكتب السكربت ودليل تشغيله
- 3جرّبهتشغّله على نسخ من ملفاتك وتتحقق من الصفحات
- 4التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ
ما نحتاجه منك
ما تحتاج إلى إنجازه: الملفات المطلوب دمجها وبأي ترتيب، أو طريقة التقسيم (كل صفحة، أو كل N صفحات، أو حسب النطاقات، أو الإشارات المرجعية، أو كلمة في الصفحة)، وطريقة تسمية النتائج. ملف PDF نموذجي أو اثنان لا يحتويان على أي شيء خاص، أو التخطيط نفسه بمحتوى مختلق؛ وإن كان التقسيم يعتمد على كلمة، فصفحة تظهر فيها. العدد التقريبي للملفات والصفحات، ونظامك: Windows أو macOS أو Linux.
سنسألك:
- دمج أم تقسيم أم كلاهما على التوالي؟
- كيف تعرف أين يبدأ كل جزء؟
- كيف يجب تسمية الملفات؟
- أين سيعمل؟
قارن بين الباقات
| الباقات | الأساسيةدمج أو تقسيم16 US$ | القياسيةPDF مع الإعدادات33 US$ | المميزةأداة PDF67 US$ |
|---|---|---|---|
| مدة التنفيذ | 1 يوم | 2 يوم | 3 أيام |
| التعديلات | 1 | 2 | 3 |
| الكود | حتى 150 سطرًا | حتى 400 سطر | حتى 1,000 سطر |
| ملفات الكود | 1 | حتى 3 | حتى 8 |
| ملف الإعدادات | لا | نعم | نعم |
| رسائل خطأ واضحة وسجل | لا | نعم | نعم |
| خيارات التشغيل ودليل لتشغيله وفق جدول زمني | لا | لا | نعم |
| دليل التثبيت والتشغيل (README) | نعم | نعم | نعم |
| اللغة | Python | Python | Python |
| اطلب الأساسية | اطلب القياسية | اطلب المميزة |
حماية الدفع
تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.
- سعر ثابتلا يتغير سعر الباقة بعد الدفع.
- المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
- فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
- تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
- القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
- إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
الأسئلة والأجوبة
هل يمكنه تقسيم ملفات PDF الممسوحة ضوئيًا حسب كلمة؟
لا: الملف الممسوح ضوئيًا صورة للصفحة، بلا نص يمكن البحث فيه. تقسيم الملفات الممسوحة حسب أرقام الصفحات أو النطاقات يعمل جيدًا. أما التقسيم حسب كلمة فيحتاج إلى ملف PDF بنص حقيقي، مثل ملف محفوظ من برنامج.
ماذا عن ملفات PDF المحمية بكلمة مرور؟
إن كنت تعرف كلمة المرور، يوضح ملف README كيفية إعطائها للسكربت عند تشغيله؛ ولا تُكتب أبدًا داخل الكود. الملفات التي لا تملك كلمة مرورها تُتخطى وتُدرج في السجل.
هل يمكنه ضغط ملفات PDF أيضًا؟
ضغط خفيف لبنية الملف، نعم. أما تصغير الملفات الممسوحة ضوئيًا كثيرًا فيعني إعادة ضغط الصور داخلها، وهذا يغيّر جودتها؛ اطلب ذلك في متطلبات الطلب وسنخبرك هل يتسع لباقتك.
هل ستعالجون مستنداتي؟
لا. تشغّل السكربت على جهازك، فلا تغادره العقود وكشوف الحساب أبدًا. أرسل إلينا نماذج فقط لا تحتوي على أي شيء خاص.
لم تجد إجابتك؟


