\usepackage{php}

API de LaTeX a PDF para PHP

Compile LaTeX a PDF desde PHP con una sola solicitud HTTP. Use la extensión cURL integrada en PHP estándar o la facade Http::post en Laravel: no es necesario instalar ningún SDK.

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

\section{Inicio rápido}

Inicio rápido

El siguiente ejemplo usa curl_init, integrado en PHP, para compilar un documento LaTeX mínimo y escribir el PDF resultante en disco. No se necesitan paquetes de Composer.

compile.php
<?php

$apiKey = getenv('FORMATEX_API_KEY');
$apiUrl = 'https://api.formatex.io/api/v1';

$latexSource = <<<'LATEX'
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Hello from PHP! $E = mc^2$
\end{document}
LATEX;

$ch = curl_init($apiUrl . '/compile');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'X-API-Key: ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'latex' => $latexSource,
        'engine' => 'pdflatex',
    ]),
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode !== 200) {
    $error = json_decode($response, true);
    throw new RuntimeException('Compilation failed: ' . $error['error']);
}

file_put_contents('output.pdf', $response);
echo "PDF saved to output.pdf\n";

\section{Laravel}

Integración con Laravel

Use la facade Http de Laravel para llamar a la API de FormaTeX desde un controlador. El siguiente ejemplo envía el PDF directamente al navegador como descarga.

app/Http/Controllers/PdfController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Http;

class PdfController extends Controller
{
    public function generate(Request $request): Response
    {
        $request->validate([
            'source' => 'required|string',
            'engine' => 'in:pdflatex,xelatex,lualatex,latexmk',
        ]);

        $response = Http::withHeaders([
            'X-API-Key' => config('services.formatex.key'),
        ])->post('https://api.formatex.io/api/v1/compile', [
            'latex'  => $request->input('source'),
            'engine' => $request->input('engine', 'pdflatex'),
        ]);

        if (!$response->successful()) {
            return response()->json([
                'error' => $response->json('error'),
            ], 500);
        }

        return response($response->body(), 200, [
            'Content-Type'        => 'application/pdf',
            'Content-Disposition' => 'attachment; filename=output.pdf',
        ]);
    }
}

\section{Authentication}

Configuración de la variable de entorno

Guarde su clave de API en una variable de entorno y léala en tiempo de ejecución. Nunca escriba las claves directamente en los archivos de código.

PHP estándar

$apiKey = getenv( 'FORMATEX_API_KEY' );

Laravel (.env + config)

# .env FORMATEX_API_KEY =your-api-key # config/services.php 'formatex' => ['key' => env('FORMATEX_API_KEY')],
  • → Genere claves de API desde su panel después de registrarse.
  • → Las claves se muestran una sola vez al crearlas y se almacenan como hashes: guarde la suya de inmediato.

\section{Engines}

Selección del motor

Pase un campo engine en el cuerpo JSON. Omítalo para usar el valor predeterminado pdflatex.

pdflatexEl más rápido. Ideal para documentos estándar.
xelatexCompatibilidad con Unicode y fuentes del sistema.
lualatexScripting con Lua y tipografía avanzada.
latexmkEjecuta automáticamente las pasadas necesarias para referencias e índice.

Consulte la documentación de motores para ver una comparación completa.

\section{Reference}

Referencia de la API

CampoTipoObligatorioDescripción
latexstringSíEl código fuente LaTeX completo como cadena de texto
enginestringNoMotor que se usará. Valor predeterminado: "pdflatex". Opciones: pdflatex, xelatex, lualatex, latexmk

POST https://api.formatex.io/api/v1/compile — Devuelve los bytes del PDF sin procesar si tiene éxito ( 200), o un error JSON si falla ( 422/ 401).

\end{php}

Empiece a compilar LaTeX desde PHP

Obtenga su clave de API, ejecute el inicio rápido y consiga un PDF en minutos, sin paquetes de Composer.