توثيق API - MD-2-PDF v2.0

نظرة عامة

MD-2-PDF هي أداة سحابية لتحويل نصوص Markdown إلى ملفات PDF احترافية مع دعم كامل للغة العربية (RTL)، المعادلات الرياضية (LaTeX)، تلوين الأكواد، ومخططات PlantUML.

الرابط الأساسي: https://md-2-pdf.pages.dev

معلومات سريعة

الإصدار2.0.0
المنصةCloudflare Pages + Workers
تنسيق الطلباتJSON (Content-Type: application/json)
البروتوكولHTTPS فقط
رمز المصدرGitHub Repository

المميزات

🔤 دعم RTL

دعم كامل للغة العربية والاتجاه من اليمين لليسار

📐 LaTeX

معادلات رياضية سطرية ($x^2$) وعرضية ($$...$$)

🎨 تلوين الأكواد

Syntax Highlighting لـ JavaScript, Python, CSS, SQL وأكثر

📊 PlantUML

مخططات تسلسلية، فئات، وتدفق مباشرة في المستند

🎭 ثيمات متعددة

5 ثيمات: أزرق، أحمر، أخضر، بنفسجي، ذهبي

📄 صفحة غلاف

صفحة غلاف تلقائية مع عنوان، مؤلف، وتاريخ

⚙️ Frontmatter

YAML Frontmatter لبيانات المستند الوصفية

🤖 MCP

أدوات MCP للتكامل مع Claude, Gemini, Codex وأكثر

المصادقة

معظم نقاط النهاية تعمل بدون مصادقة. لتسجيل السجلات واستخدام التاريخ:

الطريقةالتفاصيل
JWT Token إرسال عبر Authorization: Bearer <token>
Guest Session إرسال عبر X-Guest-Session: <id>

GET /api/health GET

فحص صحة الخادم — يتأكد إنو الخدمة شغالة.

مثال الطلب

curl https://md-2-pdf.pages.dev/api/health

الاستجابة

{
  "status": "ok",
  "service": "md-2-pdf",
  "version": "2.0.0",
  "platform": "cloudflare-pages",
  "timestamp": "2026-05-20T00:00:00.000Z"
}

POST /api/convert POST

تحويل نص Markdown إلى ملف PDF. يعيد الملف بصيغة base64 داخل JSON.

المعاملات

المعاملالنوعمطلوبالوصف
markdownstring✅ نعمنص Markdown للتحويل
options.titlestring❌ لاعنوان المستند (يظهر بصفحة الغلاف)
options.authorstring❌ لااسم المؤلف
options.pageSizestring❌ لاA4 | Letter | Legal (افتراضي: A4)
options.orientationstring❌ لاportrait | landscape
options.fontSizenumber❌ لاحجم الخط بالبكسل (افتراضي: 10)
options.fontFamilystring❌ لاعائلة الخط
options.cssstring❌ لاCSS مخصص يُحقن في PDF
options.marginobject❌ لاالهوامش: {top, right, bottom, left} (مثال: "20mm")

مثال الطلب

curl -X POST https://md-2-pdf.pages.dev/api/convert \
  -H "Content-Type: application/json" \
  -d '{
    "markdown": "# مرحباً بالعالم\n\nهذا **نص** تجريبي.\n\nمعادلة: $E = mc^2$\n\n```javascript\nconsole.log(\"Hello\");\n```",
    "options": {
      "title": "مستندي",
      "pageSize": "A4"
    }
  }'

الاستجابة (نجاح)

{
  "success": true,
  "pdf": "JVBERi0xLjQK...",
  "metadata": {
    "title": "مستندي",
    "createdAt": "2026-05-20T00:00:00.000Z"
  }
}

الاستجابة (خطأ - تجاوز الحد)

{
  "success": false,
  "error": "تم تجاوز حد التحويل اليومي...",
  "fallback": true,
  "html": "<html>...",
  "metadata": { ... }
}
⚠️ ملاحظة: حقل pdf يحتوي على ملف PDF كامل بصيغة base64. استخدم atob() في JavaScript أو base64 -d في الطرفية لاستخراج الملف.

POST /api/convert/base64 POST

مثل /api/convert لكن يعيد الـ base64 بحقل اسمه pdfBase64 بدل pdf.

الاستجابة

{
  "success": true,
  "pdfBase64": "JVBERi0xLjQK...",
  "metadata": { ... }
}

POST /api/parse POST

تحليل Markdown واستخراج البيانات الوصفية + معاينة HTML. لا ينشئ PDF.

المعاملات

المعاملالنوعمطلوبالوصف
markdownstring✅ نعمنص Markdown للتحليل
optionsobject❌ لاخيارات التحويل (نفس convert)

مثال الطلب

curl -X POST https://md-2-pdf.pages.dev/api/parse \
  -H "Content-Type: application/json" \
  -d '{
    "markdown": "---\ntitle: مستندي\nauthor: أحمد\n---\n\n# مرحباً\n\n**نص عريض** مع `كود`"
  }'

الاستجابة

{
  "success": true,
  "html": "<!DOCTYPE html><html lang=\"ar\" dir=\"rtl\">...",
  "metadata": {
    "title": "مستندي",
    "author": "أحمد",
    "createdAt": "2026-05-20T00:00:00.000Z"
  }
}

POST /api/auth/register POST

تسجيل حساب جديد لحفظ السجلات.

المعاملات

المعاملالنوعمطلوبالوصف
usernamestring✅ نعماسم المستخدم
emailstring✅ نعمالبريد الإلكتروني
passwordstring✅ نعمكلمة المرور

POST /api/auth/login POST

تسجيل الدخول والحصول على JWT token.

المعاملات

المعاملالنوعمطلوبالوصف
emailstring✅ نعمالبريد الإلكتروني
passwordstring✅ نعمكلمة المرور

POST /api/auth/guest POST

إنشاء جلسة ضيف بدون تسجيل — يكفي لإرسال معرف الجلسة لاحقاً.

GET /api/history GET

جلب سجلات المستندات المحفوظة. يتطلب مصادقة (JWT أو Guest Session).

المعاملات (Query String)

المعاملالنوعالوصف
limitnumberعدد النتائج (افتراضي: 50)
offsetnumberبداية النتائج
searchstringبحث في العناوين

مثال الطلب

curl https://md-2-pdf.pages.dev/api/history?limit=10 \
  -H "Authorization: Bearer <token>"

🌍 تعدد اللغات

الموقع يدعم لغتين: العربية (افتراضي) وEnglish.

التبديل: استخدم القائمة المنسدلة 🌐 أعلى الصفحة. اللغة المحفوظة في المتصفح.

الميزات حسب اللغة

  • تبديل كامل لكل النصوص (عناوين، أزرار، مساعدات)
  • تبديل اتجاه الصفحة (RTL ↔ LTR) تلقائياً
  • تبديل اتجاه محرر النص
  • تبديل أزرار الاتجاه (RTL/LTR) لتتطابق اللغة

👤 الحسابات والسجلات

أنشئ حساباً لحفظ سجلات تحويلاتك أو تابع كضيف.

أنواع المستخدمين

النوعالمميزات
مسجلحفظ دائم في السحابة، الوصول من أي جهاز
ضيفحفظ محلي في المتصفح فقط

كيفية الاستخدام

  1. اضغط 🔑 تسجيل الدخول أعلى الصفحة
  2. أنشئ حساباً أو سجل دخول
  3. حوّل أي ملف Markdown إلى PDF
  4. ستجد سجلاتك في صفحة 📋 السجلات
نصيحة: يمكنك فتح أي مستند سابق من السجلات وتعديله وإعادة تحويله.

🦾 OpenClaw Skill

MD-2-PDF متاح كـ AgentSkill لأي ذكاء اصطناعي يدعم OpenClaw (Claude, Gemini, Codex, Cursor، وأكثر).

الملف: SKILL.md في المستودع
الوصف: تحويل Markdown إلى PDF مع دعم RTL والعربية

المميزات الموثقة بالـ Skill

الميزةالوصف
تحويل سريعMarkdown → PDF عبر API أو MCP
RTL وعربيدعم كامل للاتجاه من اليمين لليسار
LaTeXمعادلات رياضية سطرية وعرضية
تلوين الأكوادGitHub Dark Dimmed theme
PlantUMLمخططات مباشرة في المستند
ثيمات5 ثيمات: أزرق، أحمر، أخضر، بنفسجي، ذهبي
MCP Server5 أدوات للتكامل المباشر

خيارات التحويل

الخيارالقيمالافتراضي
directionrtl | ltr | hybridrtl
themeblue | red | green | purple | goldblue
pageSizeA4 | Letter | LegalA4
orientationportrait | landscapeportrait
fontSize8–2410
cssCSS إضافي

طرق الاستخدام

1️⃣ MCP Server (للـ AI Agents)

https://md-2-pdf.pages.dev/mcp

2️⃣ REST API

POST https://md-2-pdf.pages.dev/api/convert
Content-Type: application/json

{
  "markdown": "# مرحبا\n**نص عربي**",
  "options": { "direction": "rtl", "theme": "blue" }
}

3️⃣ الواجهة (Web UI)

زر https://md-2-pdf.pages.dev — اكتب أو ارفع Markdown، عاين، وحمّل PDF.

ملف SKILL.md: متوفر في GitHub Repository

🤖 خادم MCP (عن بُعد على Cloudflare)

نقطة النهاية الوحيدة: https://md-2-pdf.pages.dev/mcp
خادم MCP يعمل مباشرةً على Cloudflare Pages عبر Streamable HTTP — لا حاجة لتثبيت Node.js أو استنساخ المشروع أو بنائه محلياً. أي عميل MCP متوافق يتصل بهذا الرابط فقط.

الخادم يوفّر 5 أدوات للذكاء الاصطناعي لتحويل Markdown والتحكم بسجل التحويلات:

convert-markdown-to-pdf تحويل مباشر

تحويل نص Markdown إلى ملف PDF (Base64). يدعم: frontmatter، تلوين الكود، رياضيات KaTeX، رسوم PlantUML، تخطيطات عربية/RTL.

المعاملالنوعالوصف
markdownstringنص Markdown (مطلوب)
pageSizeenumA4 | Letter | Legal
orientationenumportrait | landscape
directionenumrtl | ltr | hybrid
fontSizenumberحجم الخط (8–24)
cssstringCSS إضافي
marginobject{ top, right, bottom, left }
filenamestringاسم الملف المقترح
saveToHistorybooleanحفظ في السجل (يتطلب auth)
parse-markdown تحليل

تحويل Markdown إلى HTML منسّق + استخراج الـ frontmatter. لا يستخدم الشبكة (سريع جداً).

المعاملالنوعالوصف
markdownstringنص Markdown (مطلوب)
+ نفس خيارات التحويل أعلاه (pageSize, direction, …)
list-documents سجل

عرض المستندات المحوّلة سابقاً للمستخدم أو الجلسة الضيف. يتطلب auth.

المعاملالنوعالوصف
limitnumberعدد النتائج (1–200)
offsetnumberترقيم الصفحات
searchstringبحث في العناوين
get-document سجل

جلب مستند واحد بالكامل (Markdown + metadata) عبر معرّفه الرقمي.

المعاملالنوعالوصف
idnumberمعرّف المستند (مطلوب)
create-guest-session auth

إنشاء جلسة ضيف UUID لحفظ التحويلات بدون تسجيل حساب. استخدم الناتج في _meta.auth.guestSessionId.

⚙️ إعداد MCP (Remote — URL واحد)

كل عميل MCP يحتاج فقط إضافة الرابط https://md-2-pdf.pages.dev/mcp — لا تثبيت، لا استنساخ، لا بناء.

🔑 المصادقة (اختياري): لتشغيل saveToHistory أو list-documents، مرّر أحد هذه في _meta.auth:
  • { "token": "<JWT>" } — من POST /api/auth/login
  • { "guestSessionId": "<UUID>" } — أنشئه بأداة create-guest-session

C Claude Desktop / Claude Code

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
  "mcpServers": {
    "md-2-pdf": {
      "url": "https://md-2-pdf.pages.dev/mcp"
    }
  }
}
أو عبر Claude Code CLI:
claude mcp add --transport http md-2-pdf https://md-2-pdf.pages.dev/mcp

A Antigravity / Gemini CLI

~/.gemini/settings.json
{
  "mcpServers": {
    "md-2-pdf": {
      "url": "https://md-2-pdf.pages.dev/mcp"
    }
  }
}

K Kilo Code / Cline / Continue

~/.config/kilo/kilo.jsonc · أو إعدادات الـ IDE
{
  "mcp": {
    "md-2-pdf": {
      "type": "http",
      "url": "https://md-2-pdf.pages.dev/mcp"
    }
  }
}

O OpenClaw / OpenCode

~/.config/opencode/opencode.jsonc
{
  "mcp": {
    "md-2-pdf": {
      "type": "http",
      "url": "https://md-2-pdf.pages.dev/mcp"
    }
  }
}

X Codex (OpenAI)

~/.codex/config.toml
[mcp_servers.md-2-pdf]
type = "http"
url = "https://md-2-pdf.pages.dev/mcp"

Q Qwen CLI

~/.qwen/mcp_config.json
{
  "mcpServers": {
    "md-2-pdf": {
      "url": "https://md-2-pdf.pages.dev/mcp"
    }
  }
}

* أي عميل MCP متوافق

{
  "md-2-pdf": {
    "transport": "streamable-http",
    "url": "https://md-2-pdf.pages.dev/mcp"
  }
}
✅ لماذا Remote؟
  • الذكاء الاصطناعي يتصل مباشرة بـ Cloudflare — زمن استجابة عالمي منخفض.
  • لا حاجة لـ Node.js على جهاز المستخدم.
  • التحديثات تنطبق فوراً على كل العملاء.
  • التشفير عبر HTTPS، CORS مفتوح للاستخدام من المتصفح.

🧪 اختبار MCP

كل طلب MCP هو عبارة عن JSON-RPC 2.0 عبر POST. جرّب مباشرةً بـ curl:

1) سرد الأدوات المتاحة

curl -X POST https://md-2-pdf.pages.dev/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'

2) تحويل Markdown إلى PDF

curl -X POST https://md-2-pdf.pages.dev/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"convert-markdown-to-pdf","arguments":{"markdown":"# مرحباً\\nهذا **اختبار** من MCP","direction":"rtl"}}}'

3) فحص نص FYI

curl https://md-2-pdf.pages.dev/mcp

سيعيد JSON تعريفي يصف الخدمة (مفيد للتأكد أن الخادم حيّ).