\usepackage{python}
جمّع LaTeX إلى PDF من Python بطلب HTTP واحد. استخدم مكتبة requests القياسية أو httpx للعمل غير المتزامن، دون الحاجة إلى تثبيت SDK.
\section{Installation}
لا حاجة إلى SDK. واجهة FormaTeX API هي واجهة HTTP REST قياسية. ثبّت requests للاستخدام المتزامن أو httpx إذا احتجت إلى دعم العمل غير المتزامن.
pip install requests
# or with httpx for async
pip install httpx\section{البدء السريع}
يجمّع المثال أدناه مستند LaTeX بسيطًا ويحفظ ملف PDF الناتج على القرص. استبدل your-api-key بمفتاح من لوحة التحكم الخاصة بك.
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
os.environ["FORMATEX_API_KEY"] لقراءة المفتاح أثناء التشغيل.\section{Engines}
مرّر الحقل engine في جسم JSON. القيم المدعومة: pdflatex وxelatex وlualatex وlatexmk. راجع وثائق المُجمِّعات لمزيد من التفاصيل.
# 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 غير صالح أو مفقود.
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.AsyncClient لتجميع المستندات بالتزامن داخل تطبيقات Python غير المتزامنة مثل FastAPI أو النصوص البرمجية غير المتزامنة.
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}
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
| latex | string | نعم | شيفرة LaTeX المصدرية الكاملة كسلسلة نصية |
| engine | string | لا | المُجمِّع المستخدم. الافتراضي: "pdflatex". الخيارات: pdflatex، xelatex، lualatex، latexmk |
POST https://api.formatex.io/api/v1/compile — تُعيد بايتات PDF خامًا عند النجاح ( 200)، أو خطأ JSON عند الفشل ( 422/ 401).
\end{python}
احصل على مفتاح API، وشغّل البدء السريع، واحصل على مخرجات PDF في دقائق.