\ai{pdf-generation}
Utilisez GPT-4, Claude ou n'importe quel LLM pour générer du code source LaTeX, puis compilez-le en PDF professionnel avec l'API FormaTeX. Deux appels d'API, tous types de documents, un rendu au pixel près.
\section{Le principe}
Le principe est simple : demandez à un LLM de produire du code source LaTeX brut, puis envoyez ce code en POST au point de terminaison de compilation de FormaTeX. Le LLM s'occupe de la structure et du contenu du document ; FormaTeX gère toute la chaîne de compilation TeX Live. Vous obtenez un PDF de qualité production sans avoir à gérer d'installation LaTeX.
Le LLM écrit le LaTeX
Les LLM modernes produisent du LaTeX syntaxiquement correct de façon fiable, surtout avec un prompt système ciblé. GPT-4o, Claude Opus et Gemini Pro fonctionnent tous bien.
FormaTeX compile
POST the LaTeX string to https://api.formatex.io/api/v1/compile with your API key. Choose the engine: pdflatex and xelatex on every plan, lualatex and latexmk on Pro and above. Receive raw PDF bytes in the response.
Enregistrez ou diffusez le PDF
Écrivez les octets de la réponse dans un fichier, diffusez-les en téléchargement vers un navigateur ou envoyez-les vers un stockage cloud, selon votre flux de travail.
\section{LaTeX ou HTML}
| Critère | LaTeX + FormaTeX | HTML vers PDF |
|---|---|---|
| Mathématiques | Rendu natif des équations avec amsmath | Contournement MathJax, polices incohérentes |
| Typographie | Césure de Knuth–Plass, crénage professionnel | Rendu de type navigateur, variable |
| Mise en page | Marges, en-têtes, pieds de page et multicolonnes précis | Approximations CSS, particularités d'impression |
| Cross-references | \ref, \cite, \label — automatic numbering | Manuel ou fragile, basé sur du JS |
| Documents longs | Chapitres, sections, table des matières, bibliographie | Difficile à gérer à grande échelle |
| Fiabilité du LLM | Les LLM produisent du LaTeX valide de façon plus constante | Les LLM produisent du CSS en ligne incohérent |
\section{Exemple Python}
Exemple complet et exécutable utilisant le SDK Python d'OpenAI et la bibliothèque requests. Appelez generate_pdf() avec n'importe quel prompt en langage naturel pour obtenir un fichier .pdf sur disque.
import openai
import requests
openai_client = openai.OpenAI(api_key="your-openai-key")
FORMATEX_URL = "https://api.formatex.io/api/v1/compile"
FORMATEX_API_KEY = "your-formatex-key"
SYSTEM_PROMPT = """You are a LaTeX expert. When asked to create a document,
respond ONLY with valid LaTeX source code. No markdown fences, no explanation.
Always include \\documentclass, a complete preamble, and
\\begin{document}...\\end{document}. Use standard packages only."""
def generate_latex(prompt: str) -> str:
"""Ask GPT-4 to write a complete LaTeX document."""
response = openai_client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": prompt},
],
temperature=0.2, # Low temperature for deterministic LaTeX output
)
return response.choices[0].message.content
def compile_to_pdf(latex_source: str, engine: str = "pdflatex") -> bytes:
"""Compile LaTeX source with FormaTeX and return PDF bytes."""
response = requests.post(
FORMATEX_URL,
headers={
"X-API-Key": FORMATEX_API_KEY,
"Content-Type": "application/json",
},
json={"latex": latex_source, "engine": engine},
timeout=30,
)
response.raise_for_status()
return response.content
def generate_pdf(prompt: str, output_path: str, engine: str = "pdflatex") -> None:
"""End-to-end: prompt → LaTeX → PDF saved to disk."""
print(f"Generating LaTeX for: {prompt[:60]}...")
latex_source = generate_latex(prompt)
print("Compiling PDF with FormaTeX...")
pdf_bytes = compile_to_pdf(latex_source, engine)
with open(output_path, "wb") as f:
f.write(pdf_bytes)
print(f"PDF saved to {output_path} ({len(pdf_bytes):,} bytes)")
# Example usage
generate_pdf(
prompt=(
"Write a 3-page LaTeX technical report on transformer neural networks. "
"Include an abstract, introduction, the scaled dot-product attention "
"equation, a comparison table of model sizes, and a conclusion."
),
output_path="transformer_report.pdf",
engine="pdflatex",
)\section{Conseils de prompt}
Imposez du LaTeX brut dans le prompt système
Incluez « respond ONLY with valid LaTeX source code — no markdown fences, no explanation » dans le message système. Sans cela, les modèles enveloppent souvent la sortie dans des blocs ```latex qu'il faut ensuite retirer.
Précisez explicitement la classe de document
Tell the model which documentclass to use: "Use \documentclass{article}" or "\documentclass[12pt,a4paper]{report}". This prevents the model from choosing an inappropriate class.
Gardez une température basse
Réglez la température entre 0.1 et 0.3 pour la génération de LaTeX. Une température élevée augmente le risque de commandes inventées ou d'accolades manquantes qui font échouer la compilation.
Listez les paquets dont vous avez besoin
Indiquez explicitement au modèle les paquets à inclure : amsmath, graphicx, booktabs, hyperref. Laissés libres de choisir, les modèles importent parfois des paquets inexistants.
Validez avant de compiler
Strip markdown fences with a simple regex before POSTing. Check that the output contains \documentclass and \begin{document} — if not, re-prompt rather than wasting a compile request.
Utilisez xelatex pour le contenu Unicode
If the document may contain non-ASCII characters (names, accents, CJK), set engine to xelatex and instruct the model to use \usepackage{fontspec} instead of inputenc.
\section{Related}
\end{pdf-generation}
Obtenez une clé API FormaTeX, copiez l'exemple Python ci-dessus et livrez des PDF professionnels générés par IA en moins de dix minutes.