\usepackage{nodejs}

API de LaTeX a PDF para Node.js

Compile LaTeX a PDF desde Node.js o cualquier entorno de ejecución de JavaScript con la API REST de FormaTeX. No requiere SDK: basta con una simple llamada fetch .

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

\section{Installation}

Sin paquetes que instalar

FormaTeX es una API HTTP sencilla. Node 18+ incluye fetch de forma nativa. Para versiones anteriores de Node, instale node-fetch .

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

\section{Inicio rápido}

Compile su primer PDF

Llame al endpoint /api/v1/compile con su código fuente LaTeX. La respuesta es un PDF binario que puede escribir directamente en disco o transmitir al cliente.

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 de entorno}

Almacenamiento de su clave de API

Nunca escriba su clave de API directamente en el código. Guárdela en una variable de entorno y cárguela en tiempo de ejecución.

Shell / .env

FORMATEX_API_KEY=your-key

Paquete dotenv

require('dotenv').config()

Lectura en el código

process.env.FORMATEX_API_KEY

\section{Integración con Express}

Ejemplo de ruta en Express

Exponga un endpoint POST /generate-pdf que acepte código fuente LaTeX desde el cuerpo de la solicitud y devuelva directamente al llamador el PDF compilado mediante 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{Almacenamiento en la nube}

Suba los PDF compilados a S3

Compile y suba a AWS S3 en una sola función. El mismo patrón funciona con cualquier almacenamiento compatible con S3: R2, GCS, DigitalOcean Spaces y 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{Selección de motor}

Elija su motor LaTeX

Pase un campo engine opcional en el cuerpo de la solicitud. Si se omite, el valor predeterminado es pdflatex.

pdflatexxelatexlualatex

\section{Referencia de la API}

Referencia de endpoints

CampoTipoObligatorioDescripción
latexstringSíCódigo fuente completo del documento LaTeX
enginestringNopdflatex (predeterminado), xelatex o lualatex
POST https://api.formatex.io/api/v1/compile→ PDF binario (200) o error JSON (4xx/5xx)

\section{Otras integraciones}

FormaTeX desde cualquier lenguaje

FormaTeX es una API HTTP sencilla. Ejemplos para copiar y pegar en todos los lenguajes principales.

¿Listo para compilar LaTeX desde Node.js?

Plan gratuito: 15 compilaciones de API al mes. No requiere tarjeta de crédito.