\usepackage{nodejs}

API LaTeX vers PDF pour Node.js

Compilez du LaTeX en PDF depuis Node.js ou n'importe quel runtime JavaScript avec l'API REST FormaTeX. Aucun SDK requis : un simple appel fetch suffit.

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

\section{Installation}

Aucun paquet à installer

FormaTeX est une simple API HTTP. Node 18+ fournit fetch en natif. Pour les anciennes versions de Node, installez node-fetch .

npm install node-fetch  # or use built-in fetch (Node 18+)
# No SDK required — use the REST API directly

\section{Démarrage rapide}

Compilez votre premier PDF

Appelez le point de terminaison /api/v1/compile avec votre code source LaTeX. La réponse est un PDF binaire que vous pouvez écrire directement sur disque ou diffuser au client.

const API_KEY = process.env.FORMATEX_API_KEY!;
const API_URL = "https://api.formatex.io/api/v1";

const latexSource = `
\\documentclass{article}
\\usepackage{amsmath}
\\begin{document}
Hello from Node.js! $E = mc^2$
\\end{document}
`;

const response = await fetch(`${API_URL}/compile`, {
  method: "POST",
  headers: {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    latex: latexSource,
    engine: "pdflatex",
  }),
});

if (!response.ok) {
  const error = await response.json();
  throw new Error(`Compilation failed: ${error.error}`);
}

const pdfBuffer = Buffer.from(await response.arrayBuffer());
await fs.writeFile("output.pdf", pdfBuffer);

\section{Variables d'environnement}

Stocker votre clé API

Ne codez jamais votre clé API en dur. Stockez-la dans une variable d'environnement et chargez-la à l'exécution.

Shell / .env

FORMATEX_API_KEY=your-key

Paquet dotenv

require('dotenv').config()

Lecture dans le code

process.env.FORMATEX_API_KEY

\section{Intégration Express}

Exemple de route Express

Exposez un point de terminaison POST /generate-pdf qui accepte du code source LaTeX dans le corps de la requête et renvoie directement le PDF compilé à l'appelant en streaming.

import express from "express";
import { writeFile } from "fs/promises";

const app = express();
app.use(express.json());

app.post("/generate-pdf", async (req, res) => {
  const { latexSource, engine = "pdflatex" } = req.body;

  const response = await fetch("https://api.formatex.io/api/v1/compile", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.FORMATEX_API_KEY!,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ latex: latexSource, engine }),
  });

  if (!response.ok) {
    const err = await response.json();
    return res.status(500).json({ error: err.error });
  }

  const pdfBuffer = Buffer.from(await response.arrayBuffer());
  res.setHeader("Content-Type", "application/pdf");
  res.setHeader("Content-Disposition", "attachment; filename=output.pdf");
  res.send(pdfBuffer);
});

app.listen(3000);

\section{Stockage cloud}

Envoyer les PDF compilés vers S3

Compilez et envoyez vers AWS S3 dans une seule fonction. Le même schéma fonctionne avec tout stockage compatible S3 : R2, GCS, DigitalOcean Spaces et MinIO.

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({ region: "us-east-1" });

async function compileAndUpload(latex: string, key: string): Promise<string> {
  const response = await fetch("https://api.formatex.io/api/v1/compile", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.FORMATEX_API_KEY!,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ latex, engine: "pdflatex" }),
  });

  if (!response.ok) throw new Error("Compilation failed");

  const pdfBuffer = Buffer.from(await response.arrayBuffer());

  await s3.send(new PutObjectCommand({
    Bucket: "my-bucket",
    Key: key,
    Body: pdfBuffer,
    ContentType: "application/pdf",
  }));

  return `https://my-bucket.s3.amazonaws.com/${key}`;
}

\section{Choix du moteur}

Choisissez votre moteur LaTeX

Passez un champ facultatif engine dans le corps de la requête. La valeur par défaut est pdflatex s'il est omis.

pdflatexxelatexlualatex

\section{Référence de l'API}

Référence du point de terminaison

ChampTypeRequisDescription
latexstringOuiCode source complet du document LaTeX
enginestringNonpdflatex (par défaut), xelatex ou lualatex
POST https://api.formatex.io/api/v1/compile→ PDF binaire (200) ou erreur JSON (4xx/5xx)

\section{Autres intégrations}

FormaTeX depuis n'importe quel langage

FormaTeX est une simple API HTTP. Des exemples à copier-coller pour tous les grands langages.

Prêt à compiler du LaTeX depuis Node.js ?

Offre gratuite : 15 compilations par API par mois. Aucune carte bancaire requise.