\usepackage{python}

واجهة API لتحويل LaTeX إلى PDF بلغة Python

جمّع LaTeX إلى PDF من Python بطلب HTTP واحد. استخدم مكتبة requests القياسية أو httpx للعمل غير المتزامن، دون الحاجة إلى تثبيت SDK.

Also available in:Python·Node.js·Go·PHP·Ruby·Rust·cURL|Full API reference

\section{Installation}

التثبيت

لا حاجة إلى SDK. واجهة FormaTeX API هي واجهة HTTP REST قياسية. ثبّت requests للاستخدام المتزامن أو httpx إذا احتجت إلى دعم العمل غير المتزامن.

terminal
pip install requests
# or with httpx for async
pip install httpx

\section{البدء السريع}

البدء السريع

يجمّع المثال أدناه مستند LaTeX بسيطًا ويحفظ ملف PDF الناتج على القرص. استبدل your-api-key بمفتاح من لوحة التحكم الخاصة بك.

quickstart.py
import requests

API_KEY = "your-api-key"  # get from formatex.io/dashboard/api-keys
API_URL = "https://api.formatex.io/api/v1"

latex_source = r"""
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello from Python! $E = mc^2$
\end{document}
"""

response = requests.post(
    f"{API_URL}/compile",
    headers={
        "X-API-Key": API_KEY,
        "Content-Type": "application/json",
    },
    json={
        "latex": latex_source,
        "engine": "pdflatex",
    },
)

response.raise_for_status()

with open("output.pdf", "wb") as f:
    f.write(response.content)

print("PDF saved to output.pdf")

\section{Authentication}

المصادقة

يجب أن تتضمن جميع طلبات API ترويسة X-API-Key:

X-API-Key: your-api-key
  • → أنشئ مفاتيح API من لوحة التحكم بعد التسجيل.
  • → خزّن المفاتيح في متغيرات البيئة ولا تكتبها أبدًا مباشرةً في ملفات الشيفرة.
  • → استخدم os.environ["FORMATEX_API_KEY"] لقراءة المفتاح أثناء التشغيل.

\section{Engines}

اختيار المُجمِّع

مرّر الحقل engine في جسم JSON. القيم المدعومة: pdflatex وxelatex وlualatex وlatexmk. راجع وثائق المُجمِّعات لمزيد من التفاصيل.

engines.py
# Choose your engine
for engine in ["pdflatex", "xelatex", "lualatex", "latexmk"]:
    response = requests.post(
        f"{API_URL}/compile",
        headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
        json={"latex": latex_source, "engine": engine},
    )
    print(f"{engine}: {response.status_code}, {len(response.content)} bytes")

\section{معالجة الأخطاء}

معالجة الأخطاء

تُعيد واجهة API رموز حالة HTTP. يعني الرمز 422 أن تجميع شيفرة LaTeX فشل، ويحتوي جسم JSON على الحقل error مع مقتطف من سجل TeX. ويعني الرمز 401 أن مفتاح API غير صالح أو مفقود.

error_handling.py
import requests
from requests.exceptions import HTTPError

def compile_latex(source: str, engine: str = "pdflatex") -> bytes:
    """Compile LaTeX to PDF, raising on error with useful message."""
    try:
        response = requests.post(
            f"{API_URL}/compile",
            headers={
                "X-API-Key": API_KEY,
                "Content-Type": "application/json",
            },
            json={"latex": source, "engine": engine},
            timeout=30,
        )
        response.raise_for_status()
        return response.content
    except HTTPError as e:
        if e.response.status_code == 422:
            error_data = e.response.json()
            raise ValueError(f"LaTeX compilation failed: {error_data.get('error')}") from e
        elif e.response.status_code == 401:
            raise PermissionError("Invalid API key. Check your FORMATEX_API_KEY.") from e
        raise

\section{Async}

العمل غير المتزامن مع httpx

استخدم httpx.AsyncClient لتجميع المستندات بالتزامن داخل تطبيقات Python غير المتزامنة مثل FastAPI أو النصوص البرمجية غير المتزامنة.

async_compile.py
import asyncio
import httpx

async def compile_latex_async(source: str) -> bytes:
    async with httpx.AsyncClient() as client:
        response = await client.post(
            "https://api.formatex.io/api/v1/compile",
            headers={
                "X-API-Key": API_KEY,
                "Content-Type": "application/json",
            },
            json={"latex": source, "engine": "pdflatex"},
            timeout=30.0,
        )
        response.raise_for_status()
        return response.content

# Run it
pdf_bytes = asyncio.run(compile_latex_async(latex_source))

\section{Reference}

مرجع API

الحقلالنوعمطلوبالوصف
latexstringنعمشيفرة LaTeX المصدرية الكاملة كسلسلة نصية
enginestringلاالمُجمِّع المستخدم. الافتراضي: "pdflatex". الخيارات: pdflatex، xelatex، lualatex، latexmk

POST https://api.formatex.io/api/v1/compile — تُعيد بايتات PDF خامًا عند النجاح ( 200)، أو خطأ JSON عند الفشل ( 422/ 401).

\end{python}

ابدأ تجميع LaTeX من Python

احصل على مفتاح API، وشغّل البدء السريع، واحصل على مخرجات PDF في دقائق.