\usepackage{python}
Compilez du LaTeX en PDF depuis Python en une seule requête HTTP. Utilisez la bibliothèque standard requests ou httpx en mode asynchrone, sans installer de SDK.
\section{Installation}
Aucun SDK requis. L'API FormaTeX est une API REST HTTP standard. Installez requests pour un usage synchrone ou httpx si vous avez besoin du mode asynchrone.
pip install requests
# or with httpx for async
pip install httpx\section{Démarrage rapide}
L'exemple ci-dessous compile un document LaTeX minimal et enregistre le PDF obtenu sur disque. Remplacez your-api-key par une clé de votre tableau de bord .
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}
Toutes les requêtes API doivent inclure un en-tête X-API-Key :
X-API-Key: your-api-key
os.environ["FORMATEX_API_KEY"] pour lire la clé à l'exécution.\section{Engines}
Passez un champ engine dans le corps JSON. Valeurs prises en charge : pdflatex, xelatex, lualatex, latexmk. Consultez la documentation des moteurs pour plus de détails.
# 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{Gestion des erreurs}
L'API renvoie des codes de statut HTTP. Un code 422 signifie que la compilation de votre LaTeX a échoué : le corps JSON contient un champ error avec un extrait du journal TeX. 401 signifie que la clé API est invalide ou absente.
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}
Utilisez httpx.AsyncClient pour compiler des documents en parallèle dans des applications Python asynchrones comme FastAPI ou des scripts asynchrones.
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}
| Champ | Type | Requis | Description |
|---|---|---|---|
| latex | string | Oui | Code source LaTeX complet sous forme de chaîne |
| engine | string | Non | Moteur à utiliser. Par défaut : "pdflatex". Options : pdflatex, xelatex, lualatex, latexmk |
POST https://api.formatex.io/api/v1/compile : renvoie les octets bruts du PDF en cas de succès ( 200), ou une erreur JSON en cas d'échec ( 422/ 401).
\section{Autres SDK}
\end{python}
Obtenez votre clé API, lancez le démarrage rapide et obtenez un PDF en quelques minutes.