\usepackage{python}

API Python de LaTeX vers PDF

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.

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

\section{Installation}

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.

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

\section{Démarrage rapide}

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 .

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}

Authentification

Toutes les requêtes API doivent inclure un en-tête X-API-Key :

X-API-Key: your-api-key
  • → Générez des clés API depuis votre tableau de bord après votre inscription.
  • → Stockez les clés dans des variables d'environnement et ne les codez jamais en dur dans les fichiers source.
  • → Utilisez os.environ["FORMATEX_API_KEY"] pour lire la clé à l'exécution.

\section{Engines}

Choix du moteur

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.

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{Gestion des erreurs}

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.

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}

Asynchrone avec httpx

Utilisez httpx.AsyncClient pour compiler des documents en parallèle dans des applications Python asynchrones comme FastAPI ou des scripts asynchrones.

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}

Référence de l'API

ChampTypeRequisDescription
latexstringOuiCode source LaTeX complet sous forme de chaîne
enginestringNonMoteur à 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).

\end{python}

Commencez à compiler du LaTeX depuis Python

Obtenez votre clé API, lancez le démarrage rapide et obtenez un PDF en quelques minutes.